MySQL 操作系统及硬件参数
1.关闭NUMA
方式一.bios级别 请查看如下图所示 *****推荐使用,这里关闭了方式二方式三可以不用设置 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。 # numactl --hardware available: 1 nodes (0) #如果是2或多个nodes就说明numa没关掉 方式二.OS grub级别 vim /boot/grub2/grub.cfg 找到以下 在最后面加numa=off kernel /boot/vmlinuz-2.6.18-128.1.16.0.1.el5 root=LABEL=DBSYS ro bootarea=dbsys rhgb quiet console=ttyS0,115200n8 console=tty1 crashkernel=128M@16M numa=off 在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; 方式三.数据库级别 #先看numa 状态 mysql> show variables like '%numa%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | innodb_numa_interleave | OFF | +------------------------+-------+ 1 row in set (0.04 sec) 或者修改配置文档 vim /etc/mysqld 找到如下行 264 # Give extra arguments to mysqld with the my.cnf file. This script 265 # may be overwritten at next upgrade. 266 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & 267 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"--pid-file="$mysqld_pid_file_path" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?
2. CPU 开启高性能模式
3.阵列卡RAID配置
1 #推荐用raid 10 ,同时用热备份 2 热备份(Hot Spare):与CPU系统电连接的硬盘,它能替换下系统中的故障盘。与冷备份的区别是,冷备份盘平时与机器不相连接,硬盘故障时才换下故障盘。 3 热备盘的作用相当于是在raid里面再做一个备份,比如说本来Raid里面是只允许坏一个盘的情况下系统和数据依然正常运行,但是坏两个就不行了,但是加了热备之后就可以同时坏两个盘都没问题,就多了个保险。 4 5 当一个正在使用的磁盘发生故障后,一个空闲、加电并待机的磁盘将马上代替此故障盘,此方法就是热备用。热备用磁盘上不存储任何的用户数据,最多可以有8个磁盘作为热备用磁盘。一个热备用磁盘可以专属于一个单一的冗余阵列或者它也可以是整个阵列热备用磁盘池中的一部分。而在某个特定的阵列中,只能有一个热备用磁盘。当磁盘发生故障时,控制器的固件能自动的用热备用磁盘代替故障磁盘,并通过算法把原来储存在故障磁盘上的数据重建到热备用磁盘上。数据只能从带有冗余的逻辑驱动器上进行重建(除了RAID 0以外),并且热备用磁盘必须有足够多的容量。系统管理员可以更换发生故障的磁盘,并把更换后的磁盘指定为新的热备用磁盘。
4. 关闭THP
# 临时修改 首先看下是否有关闭THP [root@db01 ~21:01:41]# cat /sys/kernel/mm/transparent_hugepage/enabled #always 表示一直都在未关闭 [always] madvise never [root@db01 ~21:01:45]# echo never >/sys/kernel/mm/transparent_hugepage/enabled [root@db01 ~21:03:08]# cat /sys/kernel/mm/transparent_hugepage/enabled #已以关闭 always madvise [never] #永久关闭 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
5.网卡绑定
#bonding技术,业务数据库服务器都要配置bonding继续。建议是主备模式。交换机一定要堆叠
bonding技术相当于讲多个网卡配置成一个逻辑网卡,如果其中一个网卡坏了或者有问题,另外一个网卡可以为整个线路继续工作
6.系统层面参数优化
1 #a. 更改文件句柄和进程数 2 内核优化 /etc/sysctl.conf 3 vm.swappiness = 5(也可以设置为0) 4 vm.dirty_ratio = 20 5 vm.dirty_background_ratio = 10 6 net.ipv4.tcp_max_syn_backlog = 819200 7 net.core.netdev_max_backlog = 400000 8 net.core.somaxconn = 4096 9 net.ipv4.tcp_tw_reuse=1 10 net.ipv4.tcp_tw_recycle=0 11 12 #b. 防火墙 13 禁用selinux : /etc/sysconfig/selinux 更改SELINUX=disabled. 14 iptables如果不使用可以关闭。可是需要打开MySQL需要的端口号 15 16 #c. 文件系统优化 17 推荐使用XFS文件系统 18 需要先格式化硬盘 19 [root@db01 ~21:19:38]# mkfs -t xfs /dev/sdb 20 MySQL数据分区独立 ,例如挂载点为: /data 21 mount /dev/sbd /data 22 mount参数 defaults, noatime, nodiratime, nobarrier 如/etc/fstab: 23 /dev/sdb /data xfs defaults,noatime,nodiratime,nobarrier #临时挂载 24 或用UUID替代/dev/sdb 可以用blkid 来查看UUID 25 [root@db01 ~21:15:05]# blkid 26 /dev/sda1: UUID="bcf354ce-a60e-428a-90d9-7a117862d981" TYPE="xfs" 27 /dev/sda2: UUID="18a0259b-c865-4eae-8011-da3b36d50b87" TYPE="swap" 28 /dev/sda3: UUID="b4d315c8-5b89-46b1-a5db-06809cf083d5" TYPE="xfs" 29 /dev/sdb: UUID="8e988032-23c7-45b9-b6c9-40bee75cba8b" TYPE="xfs" 30 31 #开机自动自动挂载 32 vim /etc/fstab 33 /dev/sdb /data xfs defaults,noatime,nodiratime,nobarrier 1 2 34 35 #d. 不建议使用LVM 36 37 #e. io调度 38 SAS : deadline 39 SSD&PCI-E: noop 40 centos 7 默认是deadline 41 [root@db01 ~21:17:28]# cat /sys/block/sda/queue/scheduler 42 noop [deadline] cfq 43 44 #临时修改为deadline(centos6) 45 echo deadline >/sys/block/sda/queue/scheduler 46 vi /boot/grub/grub.conf 47 48 更改到如下内容: 49 kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
Do everything well