我想为 MySQL 5.6 设置一个新的复制从属设备。在CHANGE MASTER和启动从站之后,我在错误日志中看到了这一行:
[Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
如果重要,这些设置包含在my.ini中:
skip-name-resolve
skip-host-cache
server-id = 111
report-host = myPC
relay-log-recovery
sync_master_info=1
sync_relay_log=1
sync_relay_log_info=1
replicate-do-db = myDB
skip-slave-start
复制似乎有效,但这个警告很可怕。知道是什么让MySQL发出这个警告吗?
答案 0 :(得分:9)
警告大约是crash-safe replication,这是MySQL 5.6中添加的一项功能。这并不意味着任何可怕的事情发生(基本上,复制的工作方式与早期版本相同),但它通知您可以使用MySQL 5.6中的新功能集做得更好。
一个常见的请求是复制崩溃安全,即复制进度信息始终与实际应用于数据库的内容同步,即使发生崩溃也是如此。虽然如果服务器崩溃,事务不会丢失,但可能需要进行一些调整才能重新启动从属服务器。 [...]
防撞安全大师
- 如果主机在旋转二进制日志时崩溃,则有可能某些孤立binlog文件最终出现在二进制日志索引文件中。这在5.1中得到了修复,但也是安全崩溃的难题之一。
- 写入二进制日志不是原子操作,如果在写入二进制日志时发生崩溃,则二进制日志末尾可能会发生部分事件。
防撞安全奴隶
- 如果复制信息和数据存储在同一个存储引擎中,它将允许将数据和复制位置更新为单个事务,这意味着它是崩溃安全的。
- 如果复制信息和数据存储在不同的存储引擎中,但都支持XA,则它们仍可作为单个事务提交。 复制信息与事务数据一起刷新到磁盘。因此,将复制信息直接写入InnoDB重做日志并不能提供速度优势,但不会阻止用户轻松读取复制进度信息。
- 可以使用SQL命令从正常会话中读取表,这也意味着它可以合并到存储过程和存储函数之类的内容中。
有关操作和设置说明的详细信息,请参阅参考博客文章和MySQL documentation。