17.2.2 Replication Relay and Status Logs 复制relay 和状态日志

17.2.2 Replication Relay and Status Logs 复制relay 和状态日志

17.2.2.1 The Slave Relay Log
17.2.2.2 Slave Status Logs

在复制过程中, slave server 创建几个日志,保留binary log events 从master到slave,

记录关于当前状态和位置信息 关于relay log, 这里有3类日志,在这里列出:

relay log 有从master 读取的binary log 和 slave I/O thread 写入的events组成,

relay log 中的events 被SQL thread 执行。

master info 记录了 状态和当前配置信息用于slave连接到master 的内容。

这个log 保留关于master 的host name,登录认证,和位置标明slave 从master 的binary log读取信息的程度。

在MySQL 5.6之前,log 总是一个文件(master.info) ,但是在MySQL 5.6以后,

log 可以被写入到mysql.slave_master_info table代替文件,通过启动带 –master-info-repository=TABLE.

relay log 信息 保留状态信息关于slave relay log的执行点。

MySQL 5.6之前, log总是一个文件(relay-log.info),但是在MySQL 5.6以后,

这个log 可以写入到mysql.slave_relay_log_info table代替文件 通过设置 –relay-log-info-repository=TABLE.

Crash-safe 复制, 为了复制能crash-safe 当使用表来记录状态和relay 信息,

这些表必须是事务表。

在MySQL 5.6.6开始,这些表是InnoDB表。

因此, 为了保证在slave上crash safety,你必须运行slave带–relay-log-recovery,

此外还要设置 –relay-log-info-repository为表

relay_log_info_repository = TABLE
master_info_repository = TABLE
relay_log_recovery = 1

MySQL 5.6.6之前, 如果mysqld 无法初始化复制记录到表,slave拒绝启动。

在MySQL 5.6.6之后,会给出一个警告, 但是slave会继续运行。

在MySQL 5.6.5和更早的版本中, slave_master_info and slave_relay_log_info表默认使用

MyISAM, 这意味着 在你开始复制前 需要改变表的存储引擎:

ALTER TABLE mysql.slave_master_info ENGINE=InnoDB;
ALTER TABLE mysql.slave_relay_log_info ENGINE=InnoDB;

注意:

不要试图手动更新或者插入记录到slave_master_info or slave_relay_log_info table,

这么做会导致异常行为。

原文地址:https://www.cnblogs.com/hzcya1995/p/13351315.html