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

MySQL保证复制高可用的重要参数有哪些

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

MySQL保证复制高可用的重要参数有哪些

这篇文章主要介绍MySQL保证复制高可用的重要参数有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MySQL保证复制高可用的重要参数有哪些MySQL保证复制高可用的重要参数有哪些
expire_logs_days ,binlog清理的时间。
从库上relay-log-recovery = 1和relay-log-info-repository = TABLE; 保证了主从数据的一致性,不论从机怎么出错都能保证,主从一致。

为什么呢?

首先说SQL线程,SQL线程apply应用二进制日志,并且将binlog应用到的位置记录到relay-info.log中。
MySQL保证复制高可用的重要参数有哪些
并且并不是relay log应用一次就刷盘写relay-log.info一次,而是一个参数指定,如下,意思是说回放events 10000次写一次盘。这个就是为什么从库crash了,出现1062错误。因为从库已经插入了数据,但是文件relay-log.info并没有记录文件,当重启后文件告诉数据库还要执行一次操作,就会出现这个主键重复插入的错误。所以这个参数设置为table的,就满足了一致性,避免了数据库和文件的不同步问题。
MySQL保证复制高可用的重要参数有哪些
IO线程:
和relay_log_info_repository不同的是,单单把master_info_repository设置成table是不能解决,备库crash了,从IO线程接收日志的一致性问题,因为IO线程接收日志写的文件是relay log文件,而数据库接收到主库的日志到哪里写的是master-info.log文件,(同步情况由sync_master_info决定)这是两个不同的文件,比如当relay接收到了日志,为event2,但是此时master-info.log记录的是1,此时crash了,当重新启动从库时,master-info.log告诉数据库我才接收到1,又重新接收了一次2,这样就重复了,即便是master_info_repository设置成table一样不解决问题。但是报错时,show slave status。最终作用到的都是SQL线程报错。所以还要设置另外一个参数 relay-log-recovery=1
MySQL保证复制高可用的重要参数有哪些
MySQL保证复制高可用的重要参数有哪些

最后一个非常重要的参数:
MySQL保证复制高可用的重要参数有哪些
把当前接收到的relay log清理掉。然后从SQL Thread应用到的位置,重新拉取relay log。

但是要保证主库binlog要保留,保留时间要够,因为我见过的有的公司主从延迟一个月之久。
还有read-only的设置,5.7有个新的权限super_read_only参数,设置为on,大家都没有权限,dba也没有。

SQL线程高可用

MySQL保证复制高可用的重要参数有哪些

将SQL回放的位置写到relay-info.log中,没执行到一个event,就写一次这个文件,那么性能会不会很差啊?因为没有fsync所以文件记录的会落后,将relay_log_info_repository=TABLE(5.6才有),将这次造作放在数据库,原子操作。(从库配置)

MySQL保证复制高可用的重要参数有哪些

写10000个event才fsync一次写盘,那么就有一问题,如果设置为1,有用吗?没用,有丢失一条记录的可能。

sync_relay_log_info:这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。

IO线程的高可用

 MySQL保证复制高可用的重要参数有哪些

接收到一个event,写master.log文件,表示接受到的位置,然后再去写relay log file,这时候发送crash,又会有问题,同样可以存表master_info_repository。

master log文件会落后,IO线程会重新拉master log文件中后的binlog,重复拉日志,SQL线程就报错了,最终错误的显示都是SQL线程。

Relay-log-recovery=1,将当前接受到的所有relay log 清除掉。然后以SQL线程运行到的位置重新拉取thread。SQL线程是可靠的,那么,还有什么问题呢?如果主库上的二进制日志没有了,那么也来不过来了,就有问题了,即便是基于SQL线程。但是线上有落后很久的情形。

master_info_repository=TABLE 从开启并行复制,也一定设置为table,性能有一倍的差距。

Read_only与super_read_only的区别,有super_priv权限的用户设置read_only还是可以写入的,

从库super_read_only也打

以上是“MySQL保证复制高可用的重要参数有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:

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

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

MySQL保证复制高可用的重要参数有哪些

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

下载Word文档

猜你喜欢

将存储过程和函数与复制一起使用有哪些特殊的安全要求?

实际上,MySQL 从服务器有权执行从主服务器的 MySQL 服务器二进制日志中读取的任何语句,因此使用带有复制的存储函数存在一些特殊的安全限制。如果一般情况下复制或二进制日志记录(用于时间点恢复的目的)处于活动状态,则 MySQL DBA
2023-10-22

编程热搜

目录