MySQL Replication--中继日志更新
RELAY LOG相关参数
设置如何保存从节点接收到的主库BINLOG
sync_relay_log :
设置如何同步中继日志到中继日志文件。
当sync_relay_log = 0时,则MySQL服务不会对中继日志文件进行同步操作,依赖于操作系统来定期进行同步。
当sync_relay_log = N(N>0),则每N个sync_relay_log事件后对中继日志文件执行一次同步(调用fdatasync())。
设置如何保存从节点接收主库BINLOG的进度信息
master_info_repository:
用于设置如何保存从节点接收到主库BINLOG的位点信息,可选参数可选参数值FILE|TABLE,默认参数为FILE。 sync_master_info:
参数值N(int),用于设置当N次sync_master_info事件后将信息同步到文件或同步到表中,默认参数值为1000
当master_info_repository = FILE时,如果sync_master_info=0,则MySQL服务不会对master.info文件进行同步操作,依赖于操作系统来定期进行同步。
当master_info_repository = TABLE时,如果sync_master_info=0,则MySQL服务不会更新mysql.slave_master_info的数据。
修改sync_master_info参数值不需要关闭复制进程,修改即时生效。
设置如何保存从节点上应用RELAYLOG的进度信息
relay_log_info_repository :
用于设置如何保存从节点上应用中继日志的位置信息,可选参数可选参数值FILE|TABLE,默认参数为FILE。
如果设置为FILE,信息存放到relay-log.info文件中,如果设置为TABLE,信息存放到mysql.slave_relay_log_info中。
如果使用多源复制,必须使用TABLE参数值。
修改relay_log_info_repository 参数的值需先关闭复制进程再修改然后重启复制线程。 sync_relay_log_info :
用于设置如何将应用中继日志的位置信息同步到文件和表中,默认参数为10000
当sync_relay_log_info = FILE时:
如果sync_relay_log_info=0,则MySQL服务不会对relay-log.info文件进行同步操作,依赖于操作系统来定期进行同步。
如果sync_relay_log_info=N(N>0),则每执行N个事务后将信息使用fdatasync()同步到relay-log.info文件。
当sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info使用事务存储引擎如Innodb:
在每次事务后都会更新mysql.slave_relay_log_info表的数据,忽略sync_relay_log_info的设置。
当sync_relay_log_info = TABLE 且表mysql.slave_relay_log_info不使用存储引擎如MyISAM:
如果sync_relay_log_info=0,则不更新表mysql.slave_relay_log_info的数据。
如果sync_relay_log_info=N(N>0),则每执行N个事务后更新表mysql.slave_relay_log_info的数据。
设置如何恢复RELAY LOG
relay_log_recovery
用于设置在relay-log出现问题时如何修复,默认值为0(不开启)
当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性 当MTS开启后,如果设置relay_log_recovery=1,从节点意外重启或被强制kill后重启,会有如下错误:
relay-log-recovery cannot be executed when the slave was stopped with an error or killed in MTS mode
如果从节点上relay_log_info_repository= file 或sync_relay_log_info<>1时,如果从节点发生故障重启,就可能出现从节点已应用第XXX条日志,但relay_log_info中记录的还是第XXX-N的位置,从节点从第XXX-N条日志进行重做,这部分relay log被重复执行,报1032和1062的错误,导致同步失败。因此推荐进行如下设置:
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=1
1、由于设置relay_log_recovery=1,当Relay Log出现异常时,能自动恢复,因此无需每次同步RALAY LOG都刷新进度信息(sync_master_info)和每次将RALAY LOG刷新到磁盘(sync_relay_log)
2、由于设置relay_log_info_repository=TABLE,且表mysql.slave_relay_log_info默认使用InnoDB存储引擎,因为每次应用RALAY LOG中的事件都会刷新mysql.slave_relay_log_info表数据,忽略参数sync_master_info的设置。
RELAY LOG文件生成与删除
Relaylog的生成:
写入一个从Master端得到的event后,会判断当前文件是否超过max_relay_log_size,如果超过则生成一个新的relaylog Relaylog的删除:
1>当SQL线程执行完该Relaylog最后一个event后,会判断该文件是否还需要保留,如果不需要保留,则删除
2>在实例启动和flush logs时,判断relay log是否超过expire-log-days的限制,如果超过,则删除
MySQL Replication--中继日志更新的更多相关文章
- 一招教你如何修复MySQL slave中继日志损坏问题
[摘要]MySQL的Crash safe slave是指slave crash后,把slave重新拉起来可以继续从Master进行复制,不会出现复制错误也不会出现数据不一致. PS:华为云数据库特惠专 ...
- MySQL复制应用中继日志解析
前言:SQL线程应用中继日志,在binlog_format是row格式的时候,是居于主键更新,下面结合一张图来证明 1.从一个大神那边得到一张图片,SQL线程应用中继日志流程,下面就实验验证一下:(P ...
- mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)
一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...
- 如何提升mysql replication的性能&多线程传输二进制日志
1,最好使用内网或者专线链路传输binlog数据 (千兆网卡.还不够的话,bounding 技术,扩展带宽) 在my.cnf中强制使用内网ip传输数据bind-address=ip2,将二进制保存在独 ...
- mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)
日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...
- MySQL 中继日志
什么是中继日志从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件即relay-log日志中,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器 ...
- MySQL Replication 优化和技巧、常见故障解决方法
MySQL 主从同步错误(error)解决(转) sql_slave_skip_counter参数 附: 一些错误信息的处理,主从服务器上的命令,及状态信息. 在从服务器上使用show slave s ...
- MySQL Replication主从复制
MySQL Replication:NySQL复制,MySQL的复制默认为异步工作模式 mysql的复制功能是mysql内置的,装上它之后就具备了这个功能,而mysql复制是mysql实现大规模高 ...
- 浅析 MySQL Replication(本文转自网络,非本人所写)
作者:卢飞 来源:DoDBA(mysqlcode) 0.导读 本文几乎涵盖了MySQL Replication(主从复制)的大部分知识点,包括Replication原理.binlog format.复 ...
随机推荐
- ubuntu 16.04 安装teamviewer
很多人可能会问,为什么要在ubuntu上安装teamview?shell不就够用了吗?但实际上,很多时候,在远程连接linux的时候,我们需要在图形用户界面上进行操作.现在我就遇到了一个实际的问题:每 ...
- Java12新特性 -- 其他新增,移除,废弃项
支持unicode 11 JDK 12版本包括对Unicode 11.0.0的支持.在发布支持Unicode 10.0.0的JDK 11之后,Unicode 11.0.0引 入了以下JDK 12中包含 ...
- SVN中“txn-current-lock:拒绝访问”错误
SVN服务器使用的是Visual SVN,重装系统后,使用SVN commit是遇到:不能打开文件“XX:\XXXXX\db\txn-current-lock”: 拒绝访问这样的错误. 原因分析: u ...
- nginx 安装 ssl 证书
nginx 安装 ssl 证书 关键词: pem 转 crt , 证书续期, nginx 部署 ssl 证书, 解决 SSL23_GET_SERVER_HELLO 错误. 之前免费申请的 1年的证书过 ...
- Qt开发经验小技巧71-80
在我们使用QList.QStringList.QByteArray等链表或者数组的过程中,如果只需要取值,而不是赋值,强烈建议使用 at() 取值而不是 [] 操作符,在官方书籍<C++ GUI ...
- Linux 修改用户的JDK版本
1. vi .bash_profile 2.复制以下到bash_profile 文件,并将此文件里原来的JAVA_HOME和PATH删掉 JAVA_HOME=/java/jdk1..0_22 JRE ...
- flutter本地环境的安装以及编辑器的配置
由于本文图片比较多,所有都缩小了不少,点击图片就可以放大看到原始图片 使用镜像 cmd打开终端,贴上以下代码,以加入到环境变量中,如果添加失败,可以手动添加 export PUB_HOSTED_URL ...
- 对decimal 类型的数据进行获取调整
Decimal为SQL Server.MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数. 好处:使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储 ...
- 袁新生《LINGO和Excel在数学建模中的应用》
内容介绍 本书深入浅出地介绍了LINGO的基础知识.用LINGO语言描述现实问题的方法和用Excel处理数据的方法,重点是这两种软件在解决各种优化问题以及在数学建模中的应用,通过丰富的实例介绍了把实际 ...
- 基于DigitalOcean+LAMP+WordPress搭建个人网站
1. 注册DigitalOcean并新建主机 为了搭建个人网站首先需要一个可以在公网范围访问的主机,可以选用国内如阿里云.国外如DigitalOcean的各种云主机提供商,这里选用DigitalOce ...