我的编程空间,编程开发者的网络收藏夹
学习永远不晚

master_info与relay_info对Mysql数据库有什么影响

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

master_info与relay_info对Mysql数据库有什么影响

master_info与relay_info对Mysql数据库有什么影响,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在MySQL 5.6.2之前,slave记录的master信息以及slave应用binlog的信息存放在文件中,即master.info与relay-log.info。在5.6.2版本之后,允许记录到table中,参数设置如下:

master-info-repository  = TABLE    ---FILE表示以文件方式

relay-log-info-repository = TABLE   ---FILE表示以文件方式

对应的表分别为mysql.slave_master_info与mysql.slave_relay_log_info,且这两个表均为innodb引擎表。


master info与relay info还有3个参数控制刷新:

  • 默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。


  • 如果值>0, MySQL SERVER 同步它的relay log 到磁盘(写入中继日志,使用fdatasync()) 在every sync_relay_log events are written to the relay log.) 

  •    

  • 当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成  

  • 磁盘的大量I/O。


  • 当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。


  • sync_master_info:控制master_info信息的更新操作
    若master-info-repository为FILE,当设置为0,则每次sync_master_info事件都会刷新到磁盘,默认为10000次刷新到磁盘;
     若master-info-repository为TABLE,当设置为0,则表不做任何更新,设置为1,则每次事件会更新表 #默认为10000

    sync_relay_log_info:控制relay_log_info信息的更新操作
    若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,默认为10000次刷新到磁盘;
    若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次evnet都会更新表。


    master宕机后无法及时恢复造成的数据丢失

       当master出现故障后,binlog未及时传到slave,或者各个slave收到的binlog不一致。且master无法在第一时间恢复,这个时候怎么办?

       如果master不切换,则整个数据库只能只读,影响应用的运行。

       如果将别的slave提升为新的master,那么原master未来得及传到slave的binlog的数据则会丢失,并且还涉及到下面2个问题。

          1.各个slave之间接收到的binlog不一致,如果强制拉起一个slave,则slave之间数据会不一致。

          2.原master恢复正常后,由于新的master日志丢弃了部分原master的binlog日志,这些多出来的binlog日志怎么处理,重新搭建环境?


    对于上面出现的问题,一种方法是确保binlog传到从库,或者说保证主库的binlog有多个拷贝。第二种方法就是允许数据丢失,制定一定的策略,保证最小化丢失数据。


    1.确保binlog全部传到从库

       方案一:使用semi sync(半同步)方式,事务提交后,必须要传到slave,事务才能算结束。对性能影响很大,依赖网络适合小tps系统。

       方案二:双写binlog,通过DBDR OS层的文件系统复制到备机,或者使用共享盘保存binlog日志。

       方案三:在数据层做文章,比如保证数据库写成功后,再异步队列的方式写一份,部分业务可以借助设计和数据流解决。


    2.保证数据最小化丢失

       上面的方案设计及架构比较复杂,如果能容忍数据的丢失,可以考虑使用淘宝的TMHA复制管理工具。

           当master宕机后,TMHA会选择一个binlog接收最大的slave作为master。当原master宕机恢复后,通过binlog的逆向应用,把原master上多执行的事务回退掉。

    3.总结

         通过上面的总结分析,MySQL丢数据的场景是五花八门,涉及到单库的丢数据场景、主从的丢数据场景以及MySQL内部XA事务原理等,相对还比较复杂,有点难以理解。

         只有当我们了解了这些丢数据的场景,才能更好的去学习, 并解决这些问题。

关于master_info与relay_info对Mysql数据库有什么影响问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

master_info与relay_info对Mysql数据库有什么影响

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql数据库表数量有影响吗

MySQL数据库表的数量对数据库性能和管理有一定的影响:1、查询性能,大量的表存在会增加查找和扫描的开销,导致查询性能下降;2、索引维护成本,每个索引都需要占用额外的存储空间,并且在表数据发生变化时需要进行维护;3、管理和维护,更多的管理和
2023-07-25

数据库设计对SQL拼接有哪些影响

数据库设计对SQL拼接有以下几种影响:表设计:数据库中的表设计会直接影响到SQL拼接的复杂度和效率。如果表设计不合理,例如表的字段过多或者字段冗余,会导致SQL拼接变得复杂,同时也会增加SQL查询的时间和资源消耗。索引设计:数据库中的索引设
数据库设计对SQL拼接有哪些影响
2024-04-29

函数式编程对golang有什么影响?

函数式编程在 go 中的使用显着提高了代码的可维护性、并发性和可测试性。它强调使用不可变数据和函数,并通过一等函数、闭包和 goroutine 等特性在 go 中实现。函数式编程原则包括不可变性、纯函数和高阶函数,在 go 中应用这些原则可
函数式编程对golang有什么影响?
2024-05-02

大数据对物联网解决方案有什么影响

大数据对物联网解决方案有什么影响,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  物联网的大数据不同于其他大数据类型。为了形成清晰的图像,想象一下不断产生数据的传感器网络。例如
2023-06-02

MySQL插入锁与数据库网络延迟的影响

MySQL插入锁是在插入数据时使用的一种锁机制,它用于确保在多个并发插入操作中,不会出现数据冲突或数据丢失的情况。当数据库网络延迟较大时,插入锁会对数据库性能产生一定的影响。由于网络延迟会导致插入操作的等待时间增加,从而增加了锁的持有时间
MySQL插入锁与数据库网络延迟的影响
2024-08-14

覆盖率低对golang函数有什么影响?

覆盖率低会增加错误风险并阻碍集成测试。具体影响包括:难以发现错误:未经过测试的代码行更容易出现未检测到的错误。集成测试困难:依赖未覆盖函数的代码可能导致集成测试失败。代码重构风险:重构未覆盖的函数时可能会引入错误,因为更改的行为尚未验证。要
覆盖率低对golang函数有什么影响?
2024-04-26

学习MySQL数据库技术是否对就业前景有积极影响?

学习MySQL数据库技术是否对就业前景有积极影响?导语:MySQL是一种广泛使用的关系型数据库管理系统,具有高效、可靠、稳定的特点。随着互联网和大数据技术的飞速发展,对数据库管理的需求日益增长。因此,学习MySQL数据库技术对于提升就业前景
2023-10-22

编程热搜

目录