1. 硬件标准化
帮助公司和运维团队,选择最合适MySQL数据库运行的服务器硬件,从品牌、CPU、MEM、IO设备、网络设 备、存储设备等各个层次进行合理建议.
而不是上采购人员、商务人员或根本不懂数据库的人员制定服务器标 准。杜绝类似:内存小了、磁盘没法用、不符合最低3-5年扩展性硬件等此类问题出现
配置要求
建议值: CPU:MEN 1:2+的比例
低配: 8C 32G
标配: 16C 64G
高配: 64c 512G
单台机器连接数达到2500~3000的连接数已经是上限了
2. 标准化操作系统及硬件参数
关闭NUMA(针对这种具有自己的内存管理机制的软件)
第一种方式: 在系统层面(如果是云服务器就用这种方法)
a. bios级别: 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。
numactl --hardware
available: 1 nodes (0) #如果是2或多个nodes就说明numa没关掉
b. OS grub级别:
vi /boot/grub2/grub.cfg
第二种方式:在bios层面(最建议的方式)
第三种方式: 数据库层面
mysql> show variables like '%numa%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| innodb_numa_interleave | OFF |
+------------------------+-------+
或者:
vi /etc/init.d/mysqld
找到如下行
# Give extra arguments to mysqld with the my.cnf file. This script may be overwritten at next upgrade.
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
将$bindir/mysqld_safe --datadir="$datadir"这一行修改为:
/usr/bin/numactl --interleave all $bindir/mysqld_safe --datadir="$datadir" --pidfile="$mysqld_pid_file_path" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
开启CPU高性能模式
跑应用的这些服务器建议都开启
关闭THP
也是针对这种自己有内存管理机制的软件,都建议关闭
vi /etc/rc.local
在文件末尾添加如下指令:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
chmod +x /etc/rc.local
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@master ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
网卡绑定
bonding技术,业务数据库服务器都要配置bonding。建议是主备模式。 交换机一定要堆叠
系统层面参数优
a. 更改文件句柄和进程数
内核优化 /etc/sysctl.conf
vm.swappiness = 5(也可以设置为0)
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
=======以上3个参数比较重要=============
net.ipv4.tcp_max_syn_backlog = 819200
net.core.netdev_max_backlog = 400000
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness = 5 当物理内存使用的还剩5%,就启用swap
=====刷脏页的频率=========
这个比例是针对pci-e的固态盘
vm.dirty_ratio = 20
vm.dirty_background_ratio = 10
如果是机械盘就需要调大
c. 文件系统优化 推荐使用XFS文件系统
MySQL数据分区独立 ,例如挂载点为: /data
mount参数 defaults, noatime, nodiratime, nobarrier
如/etc/fstab: /dev/sdb /data xfs defaults,noatime,nodiratime,nobarrier 1 2
d io调度
SAS : deadline
SSD&PCI-E: noop
vi /boot/grub/grub.conf
更改到如下内容:
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
标签:kernel,--,预装,pid,mysqld,准备,MySQL,hugepage,transparent
From: https://www.cnblogs.com/yufenchi/p/16940790.html