mysql 数据库优化

mysql 数据库优化

根据⽤户访问⽹站流程优化集群,根据OSI7层模型,从下往上优化数据库

硬件层

  1. CPU:64位CUP,⼀台机器2-16颗CPU。⾄少2-4颗,L2越⼤越好
  2. MEM:96G-128G。3-4个实例。32G-64G,跑1-2实例
  3. disk: SSD > SAS > SATA ,IOPS越高越好
  4. raid 阵列: RAIO0 > RAID10 > RAID5 > RAID1
  5. 数据库服务器能不虚拟化就不虚拟化
  6. slave 硬件 要 大于等于 master 性能

操作系统层

  1. 使用X86_64位系统,关闭NUMA特性
  2. 将操作系统和数据分区分开
  3. 避免使用SWAP,磁盘阵列,逻辑卷
  4. 删除服务器上无用安装包和守护进程

软件层

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

网站集群架构层

流程,制度

posted @ 2024-04-03 15:51  DreamDZhu  阅读(2)  评论(0编辑  收藏  举报