MySql优化总结

Innodb 关键配置参数

innodb_lock_wait_timeout = 5 # 默认50
innodb_io_capocity = 5000 #该参数设置和磁盘IOPS相关
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = N # N为cpu核心数最佳
innodb_log_buffer_size = 512M
innodb_flush_log_at_trx_commit = 1
max_connections = 10000
…待补充

从主复制方案

尽量使用mysql8的writeset主从复制方案,能最大程度降低主从延迟问题
直到目前的最新版本为止,MySQL缺省依然使用异步复制策略。简单说所谓异步复制,指的是主库写二进制日志、从库的I/O线程读主库的二进制日志写本地中继日志、从库的SQL线程重放中继日志,这三步操作都是异步进行的。如此选择的主要理由是出于性能考虑,与同步复制相比,异步复制显然更快,同时能承载更高的吞吐量。但异步复制的缺点同样明显,不能保证主从数据实时一致,也无法控制从库的延迟时间,因此它不适于要求主从数据实时同步的场景。例如,为了分解读写压力,同一程序写主库读从库,但要求读到的数据与读主库的相同,异步复制不满足这种强数据一致性需求。异步复制的另一个问题是可能会有数据丢失,例如主库宕机时,已经提交的事务可能还没有传到从库上,如果此时强行主从切换,可能导致新主库上的数据不完整。

总结:使用半同步复制。 异步快但是数据一致性保证较差,全同步性能差,但是数据强一致。

关于压测:sysbench

  • 先prepare生成压测数据,然后压测,最后清理压测数据

sysbench --num-threads=128 --max-time=7200 --max-requests=0 --test=oltp.lua --oltp-read-only=off --report-interval=10 --oltp-table-size=10000000 --oltp-num-tables=32 --mysql-table-engine=innodb --mysql-host=XXXX --mysql-port=3306 --mysql-user=XXXX --mysql-password=XXXX prepare

sysbench --num-threads=128 --max-time=7200 --max-requests=0 --test=oltp.lua --oltp-read-only=off --report-interval=10 --oltp-table-size=10000000 --oltp-num-tables=32 --mysql-table-engine=innodb --mysql-host=XXXX --mysql-port=3306 --mysql-user=XXXX --mysql-password=XXXX run

sysbench --num-threads=128 --max-time=7200 --max-requests=0 --test=oltp.lua --oltp-read-only=off --report-interval=10 --oltp-table-size=10000000 --oltp-num-tables=32 --mysql-table-engine=innodb --mysql-host=XXXX --mysql-port=3306 --mysql-user=XXXX --mysql-password=XXXX cleanup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值