千家信息网

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

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍MySQL保证复制高可用的重要参数有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!expire_logs_days ,binlog清理的时间。从库上rela
千家信息网最后更新 2024年09月22日MySQL保证复制高可用的重要参数有哪些

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


expire_logs_days ,binlog清理的时间。
从库上relay-log-recovery = 1和relay-log-info-repository = TABLE; 保证了主从数据的一致性,不论从机怎么出错都能保证,主从一致。

为什么呢?

首先说SQL线程,SQL线程apply应用二进制日志,并且将binlog应用到的位置记录到relay-info.log中。

并且并不是relay log应用一次就刷盘写relay-log.info一次,而是一个参数指定,如下,意思是说回放events 10000次写一次盘。这个就是为什么从库crash了,出现1062错误。因为从库已经插入了数据,但是文件relay-log.info并没有记录文件,当重启后文件告诉数据库还要执行一次操作,就会出现这个主键重复插入的错误。所以这个参数设置为table的,就满足了一致性,避免了数据库和文件的不同步问题。

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



最后一个非常重要的参数:

把当前接收到的relay log清理掉。然后从SQL Thread应用到的位置,重新拉取relay log。

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

SQL线程高可用

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

写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线程的高可用

接收到一个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保证复制高可用的重要参数有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

线程 文件 参数 日志 数据 问题 保证 位置 数据库 一致 应用 重要 一致性 主从 权限 落后 错误 不同 安全 二进制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 医院网络安全经费保障机制 常州本地软件开发公司电话 网络安全归哪个部门监管 数据库审计技术加密 自然资源数据库建设标准 theisle测试服没有服务器 办公室办公桌前网络安全隐患 普陀区综合软件开发收费标准 注意疫情网络安全 软件开发语言调研报告 网络安全预警平台发展现状 软件开发与维护行业工资水平 学网络技术有什么好处 怎么清理加密数据库 软件开发公司湖南岚鸿 什么数据库不包括论文全文 浪潮云服务器上线时间 针织机软件开发商 数据库 相关英语怎么说 电力网络安全攻防 仁爱网络安全作文 东方口岸安全数据库密码 静海区智能软件开发服务咨询报价 sql数据库两个表快速查重 雅思报考软件开发 创业板科技互联网公司吗 什么机构负责统筹协调网络安全 对电脑要求高的软件开发 NGA数据库技术入股 互联网科技巨头概念股有几个
0