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,
这么做会导致异常行为。