系列2-MYSQL通用调优策略

系列2-MYSQL通用调优策略-2

1、硬件层面

  • BIOS-CPU电源管理-Performance Per Watt Optimized(DAPC),发挥cpu的最大性能。关闭C-states和C1E,开启Turbo Boots可以将CPU保持运行全核睿频
  • BIOS-Memory Frequency(内存频率)-选择Maximum Performance(最佳性能)
  • 在内存设置菜单中,启用Node Interleaving,避免NUMA问题

2、磁盘IO相关优化

  • 使用SSD硬盘,至少获得数百倍甚至万倍的IOPS提升。
  • 购置阵列卡建议配备CACHE及BBU模块,可明显提升IOPS
  • 磁盘raid级别尽量选择raid10,而不是raid5

3、文件系统层面

  • 使用deadline(时间截止算法)/noop(电梯调度算法,先来先处理)这两种I/O调度器,不要用cfq
  • 使用xfs文件系统。此外,文件系统mout时,建议增加neatime,nodiratime,nobarrier,禁止记录文件或者目录最近一次访问的时间戳。

4、 Linux内核参数

  • 修改内核参数/proc/sys/vm/swappiness,将vm.swappiness设置为5-10左右即可(内存使用到90%-95%时,才切换到swap分区)设置方法为:
    echo 10 >/proc/sys/vm/swappiness​
  • 调整vm.dirty_background_ratio、vm.dirty_ratio内核参数(将一定缓存的脏页异步地刷入外存)将vm.dirty_background_ratio设置为5-10,将vm.dirty_ratio设置为它的两倍左右,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写,产生严重等待。
    cat /proc/sys/vm/dirty_ratio
    cat /proc/sys/vm/dirty_background_ratio

5、MySQL参数优化

项目 Value
innodb_buffer_pool_size 设置数据和索引缓存的大小,根据使用场景和硬件设置越大比例越大
innodb_log_file_size 配置redo log日志的大小,过大会增加回复时间,过小会覆盖数据,根据需要来
innodb_log_buffer_size 尚未执行的事务分配的缓存,缓冲区大可以提高性能,但意外的故障可能导致数据丢失
innodb_flush_log_at_trx_commit 控制事务提交方式 0:缓存每秒写入log file和file到磁盘,但每次提交事务不写; 1:在每次事务提交的时候将log buffer中的数据都会写入到log file,同时也会触发文件系统到磁盘的同步;2 每事务到log file,每秒到磁盘
skip_name_resolve 设置为1,mysql server不会对客户端连接使用反向dns解析,避免timeout
max_connections mysql最大连接数,生产环境不超过2万
gtid_mode 主从复制推荐开启on,GTID =uuid+TID,在哪个事务提交,提交了多少事务
log_bin 开启二进制日志记录功能
tmp_table_size 设置临时表的大小,这个值不是越大越好,也没有一个合适的值。一开始建议设置为64M,后面根据情况进行调整
max_allowed_packet 此参数用来设置mysql server可接受的数据包的大小.,客户端和服务器均有自己的max_allowed_packet变量

关于最大连接数
1)在 /etc/security/limits.conf 底部增加2行
mysql hard nofile 65535
mysql soft nofile 65535
2)在/usr/lib/systemd/system/mysqld.service(视如何安装mysql所决定,用编译安装和yum安装会产生path路径不同。)文件最后添加:
LimitNOFILE=65535
LimitNPROC=65535
#systemctl daemon-reload
#systemctl restart mysqld.service

你可能感兴趣的:(mysql,运维,mysql,数据库)