问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何实现MySQL Replication 优化

发布网友 发布时间:2022-04-29 02:13

我来回答

1个回答

热心网友 时间:2022-04-30 03:43

  以下的文章主要讨论的是MySQL Replication 优化,我们大家都知道MySQL Replication的实际讨论还是占为大多数的,很多内容的实用性还是很强的,于是就总结了一下,希望会给你带来一些帮助在此方面。

  本人英文水平水平有限,难免有翻译的不对的地方,有疑问欢迎讨论:)

  MySQL Replication延时的类型

  1. 固定性的延时

  Slave的数据持续性的落后于Master并且一直无法与Master的数据保持一致。

  Slave的数据经常在白天落后于Master,而在晚上可以赶上并与Master的记录保持一致。

  这种类型的延时通常是由于Slave服务器的负载已经到达了上限或在白天访问量大的时候到达上限造成的。

  2. 非固定性的延时

  Slave的数据只是短暂的落后于Master,可在短时间内恢复

  这类型的延时通常与批量任务和报表有关,效率差的查询也会导致这类延时

  MySQL Replication的*

  MySQL的Replication是单线程的,意味着只能有效的使用一个CPU内核和一个磁盘,一条复杂的查询或者事务都导致进程被阻塞,不过现在针对5.1版本的多线程Replication补丁,还是pre版,有很多*,感兴趣的可以去看看。

  Replication的容量

  1. 理解什么是Replication的容量

  可以将Replication暂停一个小时,重新启动Replication后,观察Slave的数据多久可以与Master一致。从Replication重新启动到和Master数据一致所花费的时间与Replication暂停的时间的比值就是Replication的容量。

  2. 建议保持Replication的容量在3倍以上,即延迟一个小时的数据,Slave只需要20分钟就能与Master的数据一致。

  MySQL Replication的优化

  1. 5.0的MySQL中避免类似以下的更新语句

  INSERT … SELECT <complex query> UPDATE .... WHERE <complex clause>

  复杂的查询会导致Replication线程阻塞。如果是insert或update与select结合的语句,可以讲select单独执行并保存在临时表中,然后再执行insert或者update。

  如果使用的是5.1的MySQL,新功能中的行级Replication(RBR)可以解决这个问题。RBR可以将在Master上通过复杂查询后更新的结果直接传给Slave,Slave可以直接将结果更新到数据库中。

  2. 避免大的事务

  太大的事务会造成Replication长时间阻塞,数据会严重滞后于Master。

  Slave服务器的硬件选择

  更快的CPU内核,对于单线程的Replication多核CPU是没有任何优势的。

  更高速的硬盘,包括更高的转速和更好的高速缓存命中率,如果有钱的话上SSD吧

  主从结构的扩展性问题

  1. 如何降低写操作的频率

  Master的写操作会扩散到所有的Slave上,所以高频率的写操作会降低Slave的读操作效率。

  至少保持一台Slave做全库同步,其他的Slave可以只做部分表的同步。当然,这需要web应用程序的配合来分配哪些查询读哪些Slave。

  将一些更新操作放到memcached中,例如session和计数器。

  Slave使用myisam引擎

  将一些写入量很大的更新操作直接在slave上执行,而不通过Replication。

  2. 如何更有效的利用Slave的硬件资源

  使用分区

  有选择的对表进行同步

  在Slave上对数据进行归档。

  Session的持久化

  为不同的应用服务器分配不同的Slave进行读操作。

  或者根据查询类型的不同来分配不同的Slave。

  3. 如何使你的程序最大化的利用Slave

  将对数据更新不敏感的查询放到Slave上,而需要实时数据的查询则放到Master。

  通过session的持久化,让做了修改的用户首先看到修改的内容,其他的用户可以等待Slave更新后再查看新内容。

  对于某些数据,可以用memcached来存放数据的版本号,读Slave的程序可以先对比Slave的数据和memcached数据的版本,如果不一致则去读master。用户和博客类的信息可以用这种方法。

  在查询前可以通过SHOW SLAVE STATUS检测Slave的状态,然后根据返回的结果进行服务器的选择。 以上的相关内容就是对MySQL Replication的介绍,望你能有所收获。
转载
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天一共卖出136张电影票,上午卖出去86张,下午卖出多少张。 17届华杯赛小学高年级组的初赛的这道题怎么做? 美特斯工业系统(中国)有限公司MTS公司发展史 mts公司是什么单位 华夏八大古姓是哪八个 ...耳鸣 单眼瞳孔上移 平常手机看得多 会不会是脑瘤 ...了首付给儿子和儿媳买了一套房子,房照上面写的是儿子和儿媳的... GBA最终幻想战略卡住 最终幻想战略版 大bug (狮子战争?就是GBA上的) GBA版最终幻想战略版的BUG问题,很急的 星贝保险和国任保险 全身吸脂需要多少钱!会不会反弹 全身抽脂到底好不好 重庆做抽脂会反弹吗?? 吸脂手术会反弹吗? 吸脂减肥会不会出现反弹? 吸脂后会反弹吗,能维持多久 全身吸脂疼吗?会反弹吗? 汽油是汽车刚需品,也是消耗品,有哪些加油省钱的方法呢? 生活小妙招,如何加油最省钱 走什么办法可以让加油便宜? 有什么可以节省汽油的方法和秘诀呢? oppo reno4 5g手机尺寸 跪求作文一篇(写给老师的一封信)500字,说老师好拍马屁,说不好,,,, 写一封马老师给李萍的回信作文 oppo reno4配置参数配置 给老师的一封信作文谁能帮我写一下? 给老师写一封信描写马300个字优秀作文 写给马老师的一封信。 给马老师写一封信 货车刹车绳扣的系法 MySQL中使用UNION进行两表合并,去重导致效率低下,请问如何优化 货车刹车绳扣的系法有哪些? php在执行一个耗时的mysql时无法进行其他mysql操作? MYSQL数据库,如何用一条实现效率高的多结果查询。 就是要一条综合语句... 哪个开源多线程爬虫比较好学 知乎 气刹车怎么操作? 刹车把用手指扣的地方那个叫什么名字 刹车怎么调 黄沙价格将下跌,怎样做空黄沙业的股票 广东建材业的发展潜力在哪里?广东省哪些建材产业的规模与产量位居全国前列?广东省建材上市公司有哪几家 水泥黄沙可以做防水保护层吗 芭贝拉和kiko哪个粉饼好用 黄沙矿什么时间改成新安矿 美卡佛和KIKO的粉饼哪个好用啊? 有没有风险小收益大的投资方式啊 kiko和蜜思婷粉饼哪个好用? kiko三色腮红好用吗 重庆轻轨1号线,6号线哪些赞点有公共卫生间? 平安银行股份有限公司广州黄沙支行怎么样?