MySQL主从复制性能优化

MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是
一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到日志流后,写入relay log,另一个线
程SQL线程,会读取该relay log内容,然后对sql语句进行重放.

主库DUMP线程会根据从库传来的文件位置信息去读取binlog文件中的内容,DUMP线程并不是每隔一段时间去
读取的,而且在主库上当有写binlog日志时,会产生同步,那么DUMP线程根据同步机制会立即去读取binlog
文件.当主库去写binlog时,DUMP线程去读,问题很快来了,这样的情形可能会产生读写冲突,有时候我们
也把这种情况称为"IO抖动",如果我们的服务器配置了RAID的cache,或是使用文件系统的cache,当一个写操
作的时候,可能并不会真正的写到磁盘上去,而是写到cache中去了,这样再次去读的话,直接从cache中
读取就可以了.

如果主库有多个从库,DUMP线程和服务器的写binlog线程,DUMP线程和DUMP线程之间读写争用会更加频
繁,如果使用了SSD存储,这种情况可以得到好的的缓解.

当DUMP线程接收到同步事件后,开始执行DUMP操作,这时候在主库上不应该存在CPU负载过高,而使DUMP线程在
运行队列中等待时间过长.
  
  对于需要binlog复制的库,我们在主库使用binlog_do_db,而避免对所有的库操作都生成binlog。不过我
在使用这个参数的时候需要小心测试,因为有些应用写库的方式可能会导致binlog数据丢失.

主库DUMP线程通过网络发送给从库的IO线程,DUMP线程本身不提供压缩功能,所以这时候足够的带宽变得很重
要,特别是对于跨公网的传输,另外可以通过在网络层面上使用网络设备自带的压缩的功能来弥补这方面的不足.

当IO线程接收到binlog后,往relay log里面写数据,存储本身的速度和在每次接收后是否立即同步到磁盘上
的相关参数对IO线程处理的速度变得极为重要.比如sync_relay_log,sync_master_info 和sync_relay_log_info三个参数,
具体的值可能要视环境而做出调整。比如sync_relay_log设置为0,每次接收到数据后不直接写磁盘,而依赖OS去刷新到磁盘上.

SQL线程的原理和DUMP线程的原理很类似,当有relay log日志写入时会产生同步,那么SQL线程就会去读取其中的数据进行
重放。在MySQL 5.6中很重要的一个提升就是可以多个SQL线程可以同时工作,这样增加了吞吐量.可以设置slave_parallel_workers
来达到这样目的.从库上的其他参数比如innodb_flush_log_at_trx等,虽会加快sql线程的吞吐量,但是可能需要缩合考虑
而不仅仅是针对SQL线程.

MySQL主从复制性能优化相关推荐

  1. MySQL数据库性能优化史诗级大总结

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...

  2. 【MySQL】性能优化

    文章目录 一.引言 1.1 研究背景 1.2 目的和方法论 二.数据库性能优化的基础知识 2.1 数据库设计原则 2.1.1遵循范式设计 2.1.2. 字段类型选择 2.1.3. 数据表分离 2.1. ...

  3. DBA很忙—MySQL的性能优化及自动化运维实践

    作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 D ...

  4. MySQL数据库性能优化之一

    MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...

  5. mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...

    解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...

  6. 淘宝内部分享:MySQL MariaDB性能优化

     淘宝内部分享:MySQL & MariaDB性能优化 摘要:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务, ...

  7. #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)

    Linux + JVM + Mysql高级性能优化课程 课程名称:      Linux + JVM + Mysql高级性能优化 QQ群:      243242580(小白.菜鸟勿进)跟Java.M ...

  8. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  9. MySQL数据库性能优化的关键参数(转)

    我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...

最新文章

  1. LIC-Fusion 2.0:基于滑动窗口法平面特征跟踪的激光雷达惯性相机里程计
  2. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ③ ( 创建工程目录 | 添加 C++ 源代码 | 代码自动提示 )
  3. 840. 模拟哈希表(模板)
  4. python 魔法方法常用_12个常用的IPython魔法命令
  5. Django表单提交数据与网页跳转
  6. pingback协议与traceback协议的区别
  7. HighCharts (web 页面的图表框架)
  8. 如何安装Vmware ESXi 6.7(图文介绍)
  9. 英文网站源码 国外财经资讯商业新闻整站源码 全自动采集发布 广告联盟网站
  10. python层次聚类法画图_原理+代码|详解层次聚类及Python实现
  11. python3排序,sorted字典排序
  12. 我选择了IT,我会用最大的热诚进军IT大技术!
  13. 思维导图软件XMind破解版下载地址 附最简安装教程
  14. 计算机网络启动慢,电脑开机后网络连接图标出现的太慢了,2分钟才能出现,不出现什么都做不了,怎么办?如果手动设置...
  15. 网易有道招银 前端面经
  16. textarea层级问题
  17. elastic-php实现多个OR并列查询的优化
  18. 基于二维码的设备巡检系统相关技术
  19. tcl脚本学习-基础语法
  20. 502 bad gateway这是什么意思_2020年11月11日将出现“水星西大距”,这是什么意思?...

热门文章

  1. 机器学习基础-标准方程法-04
  2. idea部署tomcat项目时,在项目里打断点不能拦截
  3. SpringCloud个人笔记-01-Eureka初体验
  4. Golang垃圾回收机制(一)
  5. 删除排序数组中的重复数字 II
  6. TWaver初学实战——炫动2D机房之设备篇
  7. 老蒋的 用WDCP 搭建
  8. appium定位WebView页面元素
  9. iOS中的应用启动原理
  10. 刨根问底Objective-C Runtime(2)- Object Class Meta Class