mysql新服务器配置流程
机房同事交付一台新采购的服务器,DBA在安装数据库之前要做哪些操作,本文将做一下详细的讲述。
[TOC]
硬件检查
- 检查是否符合db机器标准,比如机型、CPU核数、内存大小等
- 检查是否已安装最新的驱动,比如网卡驱动、pcie卡驱动等
- 确认OS版本为 Centos 7.9 x64,确认:
cat /etc/redhat-release
注:机房同事交付新服务器之后,由DBA登陆对应的ilo账号,查看相关信息,确保硬件方面是ok的,否则不能进入下面的配置。
网络配置
- 绑定网卡:默认4块以上网卡,1块网卡给备份管理使用,2块网卡配置bond给业务使用(Centos 7可以用nmtui来做绑定),其他网卡暂不配置
- 配置dns域名解析,确认:
cat /etc/resolv.conf
- 配置业务ip和管理ip的静态路由,举例(192.168.x.x为管理ip,172.17.x.x为业务ip):
echo "any net 192.168.0.0/16 gw 172.17.11.1" >> /etc/sysconfig/static-routes
echo "any net 172.17.84.0/24 gw 172.17.11.1" >> /etc/sysconfig/static-routes
cat /etc/sysconfig/static-routes
- 添加管理ip的管理路由,举例(重启后失效):
/sbin/route add -net 192.168.0.0/16 gw 172.17.11.1
- 配置管理ip的网卡接口,举例(永久生效):
/etc/sysconfig/network-scripts/route-eth0
192.168.0.0/16 via 172.17.11.1
- 去除管理网卡的默认网关,并重启网卡生效:
# vi ifcfg-eth0
# /etc/init.d/network restart
- 优化网络参数,建议持续改进:
net.core.somaxconn = 1024
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.core.netdev_max_backlog = 2500
net.ipv4.tcp_max_syn_backlog = 8192
磁盘配置
- 关于存储介质的推荐:PCIe卡 > SATA SSD > 传统硬盘
1.PCIe卡虽无raid冗余,但可以通过mysql高可用保证数据安全;
2.若为传统硬盘,则建议做 RAID 10;
- 关于磁盘的缓存模式,针对 SSD 建议使用 Write Through 模式
a.性能上:writeback > none > writethrough
b.安全上:writeback < none < writethrough
c.由于SSD比传统SAS盘的写入速度高很多,使用 Write Back 将使 Cache 成为瓶颈,所以针对 SSD 建议使用 Write Through 模式
- 为了避免512E扇区(物理扇区=4096字节,逻辑扇区=512字节),建议数据盘的扇区改为 4096 字节,即:物理扇区=逻辑扇区=4096字节
1.大部分ssd默认格式化后的逻辑扇区为4096字节
2.部分pcie卡(比如Memblaze)格式化之后,默认扇区大小为512字节
- 不同厂商的推荐设置:
厂商 | 主打产品 | 推荐设置 | 更新时间 |
---|---|---|---|
hp | 建议改RAID条带,linux改为16KB(默认256KB) 针对 SQL Server,建议禁用HPE SSD SmartPath(默认启用) 针对 SQL Server,建议调整高速缓存读写比例:60%读:40%写 |
2017.04.20 | |
dell | 使用SSD要打开FastPath 即Cache策略设置为 Write-Through和No Read Ahead 在IO Block size比Strip Size小的场景,可提升小数据块读写的性能 |
2017.04.20 | |
浪潮 | Intel S3520 480G*4, RAID 10 | 最佳实践 256KB Strip Size + Read Ahead + Write Through | 2017.04.25 |
微软 | 建议SQL Server服务器的NTFS分区簇大小调为64KB(默认4KB) 但实测对性能影响不大 |
2017.04.18 | |
Memblaze | Memblaze 6536 6.4TB | Memblaze 适合跑SQL Server业务 避坑:pcie卡格式化默认扇区为512字节 |
2018.04.20 |
Shannon | Shannon PCIe G5I 6.4 TB | Shannon 适合跑MySQL业务 | 2018.04.20 |
- 磁盘分区,建议一个分区(大于2T的磁盘建议使用parted命令),举例:
parted /dev/vdb
- 格式化,建议ext4文件系统,举例:
mkfs.ext4 /dev/vdb
- 数据盘统一挂载为 /data,并配置开机启动mount
mkdir /data
mount -o noatime /dev/vdb1 /data
echo "/dev/vdb1 /data ext4 noatime 1 2" >> /etc/fstab
- 调整io调度算法(ssd或pcie卡调整为noop,非ssd调整为deadline),并添加到开机启动项
echo noop > /sys/block/sdb/queue/scheduler
echo "echo noop > /sys/block/sdb/queue/scheduler" >> /etc/rc.local
磁盘压测
- 利用fio做磁盘压测,若压测性能不达标(ssd性能基准:27000 IOPS、1700 MB/s)则不可上线使用
yum源配置
- 下载定制的yum配置文件(指向公司的服务器)并替换本地的
/etc/yum.repos.d/CentOS-Base.repo
- yum安装基础依赖包,举例:
yum install -y wget ntpdate lrzsz telnet zip unzip
系统策略调整
- 启用iptables
cat /bin/iptables.sh
#sh /bin/iptables.sh
- 关闭numa
yum install -y numactl
sed -i 's/quiet/quiet numa=off/' /etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg
- 调整swappiness
echo "vm.swappiness = 1" >>/etc/sysctl.conf
/sbin/sysctl -p /etc/sysctl.conf
- 永久关闭 Selinux
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
cat /etc/sysconfig/selinux | grep "SELINUX="
setenforce 0
- 调整ulimit
echo "* - nofile 65536" >> /etc/security/limits.conf
echo "* soft nproc 10240" >> /etc/security/limits.d/90-nproc.conf
- 调整时区
timedatectl set-timezone Asia/Shanghai
ll /etc/localtime
systemctl restart crond.service
date -R
- 配置ntp时间同步
crontab -l | grep ntpdate || echo "01 * * * * /usr/sbin/ntpdate -u 116.2111.16.134; /sbin/hwclock -w > /dev/null 2>&1" >> /var/spool/cron/`whoami`
- 调整hostname(一律小写),举例:
hostnamectl set-hostname ${HOST_NAME}
- 调整swap,举例:
echo "vm.swappiness=0" >> /etc/sysctl.conf
- 调整ssh端口统一为 23245,举例:
sed -i '/^Port/c Port 23245' /etc/ssh/sshd_config
grep "^Port" /etc/ssh/sshd_config
systemctl restart sshd.service
- 创建dba专用ssh账号
配置监控
- 安装 zabbix agent 并添加 mysql-template 模板,确保zabbix web显示正常
- 配置 fpmmm 监控mysql模块
- 加入配置表,录入cmdb系统
- 更新日志监控
重启机器
- 交付使用前,建议重启一次机器,使以上策略生效