9

我想为MySQL 5.6设置一个新的复制从属。就在 CHANGE MASTER 并启动 slave 之后,我在错误日志中看到了这一行:

[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 发出此警告吗?

4

1 回答 1

10

警告是关于崩溃安全复制的,这是 MySQL 5.6 中添加的一项功能。这并不意味着正在发生任何可怕的事情(基本上,复制工作与早期版本一样)但它通知您可以使用 MySQL 5.6 中的新功能集做得更好。

一个常见的要求是复制崩溃安全,即复制进度信息始终与实际应用于数据库的内容同步,即使在发生崩溃时也是如此。尽管服务器崩溃时事务不会丢失,但可能需要进行一些调整才能重新启动从属服务器。[...]

碰撞安全大师

  • 如果在轮换二进制日志时主服务器崩溃,则可能一些孤立的二进制日志文件最终会出现在二进制日志索引文件中。这在 5.1 中已修复,但也是崩溃安全复制难题中的一部分。
  • 写入二进制日志不是原子操作,如果在写入二进制日志时发生崩溃,则二进制日志末尾有可能发生部分事件。

碰撞安全从站

  • 如果复制信息和数据存储在同一个存储引擎中,它将允许数据和复制位置作为单个事务进行更新,这意味着它是崩溃安全的。
  • 如果复制信息和数据存储在不同的存储引擎中,但都支持 XA,它们仍然可以作为单个事务提交。复制信息与事务数据一起刷新到磁盘。因此,将复制信息直接写入 InnoDB 重做日志不会提供速度优势,但不会妨碍用户轻松读取复制进度信息。
  • 可以使用 SQL 命令从普通会话中读取这些表,这也意味着它可以合并到诸如存储过程和存储函数之类的东西中。

See the referenced blog post and the MySQL documentation for details of operation and set up instructions.

于 2013-07-04T09:04:45.013 回答