mysql 数据库优化
mysql 数据库优化
根据⽤户访问⽹站流程优化集群,根据OSI7层模型,从下往上优化数据库
硬件层
- CPU:64位CUP,⼀台机器2-16颗CPU。⾄少2-4颗,L2越⼤越好
- MEM:96G-128G。3-4个实例。32G-64G,跑1-2实例
- disk: SSD > SAS > SATA ,IOPS越高越好
- raid 阵列: RAIO0 > RAID10 > RAID5 > RAID1
- 数据库服务器能不虚拟化就不虚拟化
- slave 硬件 要 大于等于 master 性能
操作系统层
- 使用X86_64位系统,关闭NUMA特性
- 将操作系统和数据分区分开
- 避免使用SWAP,磁盘阵列,逻辑卷
- 删除服务器上无用安装包和守护进程
软件层
linux 内核参数优化
设置swappiness 介入时间,值越大,表示越积极使用swap分区,越小表示越积极使用物理内存
vm.swappiness = 0-10
将vm.dirty_background_ratio设置为5-10,将vm.dirty_background_ratio设置为它的两倍左右,以确保持续将脏数据刷新到磁盘,避免瞬间I/O写,产⽣严重等待
其他优化
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_max_orphans=3276800
net.ipv4.tcp_max_tw_buckets=360000
mysql 层面优化
设置引擎为InnoDB
dafault-storage-engine=InnoDB
考虑设置为物理内存的50%~60%左右
innodb_buffer_pool_size=maxmem*0.6
如果要求数据不能丢失,那么两个都要设置为1.如果允许丢⼀点数据,则可分别设为2和0。在slave可设为0。
innodb_flush_log_at_trx_commit、sync_binlog
使⽤独⽴表空间
innodb_file_per_table=1
基本可满⾜90%以上的场景
innodb_log_file_size=256M,
innodb_log_files_in_group=2
记录那些执⾏较慢的SQL
long_query_time=1
最大连接数默认值太低,建议适机器配置而设置
max_connection=10240
max_connection_error=100000
网站集群架构层
流程,制度
作者: DreamDZhu
出处: https://www.cnblogs.com/ddz-linux/>
关于作者:专注Linux运维的萌新,目标:独立管理后宫三千服务器,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(852749070@qq.com)咨询.
互相尊重版权,才能有更好的未来。