部署前检查的目的,是在执行安装程序之前确认操作系统、CPU、内存、存储、网络和关键内核参数满足数据库运行要求,并保留可追溯的检查结果。以下内容以本次 CentOS 7 x86_64 KVM 实训云主机为例,操作顺序参考项目上线规范第一章。
cat /etc/os-release | grep PRETTY_NAME
uname -a
uname -m
getconf LONG_BIT
lscpu
操作系统为 CentOS Linux 7 (Core),体系架构为 x86_64,系统位数为 64 位,CPU 为 1 个 Socket、6 个逻辑 CPU。安装介质的操作系统类型和 CPU 架构必须与主机匹配,否则可能出现可执行文件无法运行、段错误或依赖库不兼容。
检查挂载配置与实际挂载关系
cat /etc/fstab
mount -a
lsblk -f
df -Th /home/dmdba
先检查 /etc/fstab 是否存在错误,再执行 mount -a 验证开机挂载配置,最后用 lsblk 和 df 将数据库目录映射到实际磁盘。本次 /home/dmdba 位于 /dev/vda3,文件系统为 ext4,总容量约 47 GB,可用约 31 GB。系统盘建议使用 UUID 挂载;数据、归档和备份在生产环境中应尽可能分盘规划。
查询调度算法并进行小块同步写测试
cat /sys/block/vda/queue/scheduler
dd if=/dev/zero of=/home/dmdba/io_test bs=8k count=4k oflag=dsync
dd if=/dev/zero of=/home/dmdba/io_test bs=16k count=4k oflag=dsync
dd if=/dev/zero of=/home/dmdba/io_test bs=32k count=4k oflag=dsync
rm -f /home/dmdba/io_test
资源利用率和虚拟化类型
free -m
virt-what
时间核对与同步
hwclock
systemctl status chronyd
chronyc tracking
date -s 'YYYY-MM-DD HH:MM:SS'
hwclock -w
防火墙检查
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --query-port=5236/tcp
# 需要保留防火墙时,按安全策略开放数据库端口
firewall-cmd --zone=public --add-port=5236/tcp --permanent
firewall-cmd --reload
高内存压力下,NUMA 的本地节点回收可能造成内核态开销和 SQL 卡顿;透明大页的合并与拆分也可能造成不可预测的延迟。本次 CentOS 7 实训机通过 GRUB 内核参数同时关闭 NUMA 和透明大页。
numa=off transparent_hugepage=never
grub2-mkconfig -o /etc/grub2.cfg
reboot
重启后验证
dmesg | grep -i numa
cat /proc/cmdline
cat /sys/kernel/mm/transparent_hugepage/enabled
SELinux 检查
getenforce
grep '^SELINUX=' /etc/selinux/config
arena 参数核对
grep -n 'MALLOC_ARENA_MAX' /home/dmdba/dmdbms/bin/DmServiceDAMENG
MALLOC_ARENA_MAX=1 用于限制 glibc 为线程额外创建无法由数据库统一管理的 arena。新版本 DM8 已将该参数写入服务启动脚本,因此安装后应先检查是否已存在,避免在多个位置重复配置。
交互登录用户读取 /etc/security/limits.conf;通过 systemd 启动的数据库服务还会受到 /etc/systemd/system.conf 或服务单元 Limit* 参数约束。两处都应配置并在重启后核对数据库进程的实际 limits。
/etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
/etc/systemd/system.conf
DefaultLimitFSIZE=unlimited
DefaultLimitDATA=unlimited
DefaultLimitCORE=unlimited
DefaultLimitNOFILE=65536
DefaultLimitAS=unlimited
DefaultLimitNPROC=10240
DefaultLimitNICE=0
修改 system.conf 后安排重启操作系统。重启后先通过 ulimit -a 检查 dmdba 登录会话,再查看 dmserver 进程实际限制。
su - dmdba -c 'ulimit -a'pid=$(pidof dmserver)
cat /proc/$pid/limits
overcommit_memory 与 swappiness
cat /proc/sys/vm/overcommit_memory
cat /proc/sys/vm/swappiness
cat /proc/sys/vm/min_free_kbytes
# /etc/sysctl.conf
vm.overcommit_memory = 0
vm.swappiness = 10
sysctl -p
core 文件路径
mkdir -p /home/dmdba/core
chown -R dmdba:dmdba /home/dmdba/core
chmod 700 /home/dmdba/core
# /etc/sysctl.conf
kernel.core_pattern = /home/dmdba/core/core-%e-%p-%s
sysctl -p
cat /proc/sys/kernel/core_pattern
swap 检查
free -m
swapon --show
# 临时关闭,重启后失效
swapoff -a
# 永久关闭前备份并编辑 /etc/fstab,注释 swap 行
cp -a /etc/fstab /etc/fstab.bak.$(date +%F_%H%M%S)
vi /etc/fstab
文章
阅读量
获赞
