暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

17.2.2.1 The Slave Relay Log

原创 由迪 2020-03-03
556

中继日志与二进制日志一样,由一组编号文件和一个索引文件组成,其中编号文件包含描述数据库更改的事件,而索引文件则包含所有已使用中继日志文件的名称。

术语“ 中继日志文件 ”通常表示包含数据库事件的单独编号文件。术语 “ 中继日志 ”共同表示编号的中继日志文件加上索引文件的集合。

中继日志文件具有与二进制日志文件相同的格式,可以使用mysqlbinlog读取(请参见 第4.6.8节“ mysqlbinlog-用于处理二进制日志文件的实用程序”)。

默认情况下,中继日志文件名 在数据目录中具有格式 ,其中 是从属服务器主机的名称,并且是序列号。连续中继日志文件是使用以开头的连续序列号创建的。从站使用索引文件来跟踪当前使用的中继日志文件。缺省中继日志索引文件名 位于数据目录中。 host_name-relay-bin.nnnnnnhost_namennnnnn000001host_name-relay-bin.index

缺省中继日志文件和中继日志索引文件名可以分别使用relay_log和 relay_log_index系统变量覆盖 (请参见第17.1.4节“复制和二进制日志记录选项和变量”)。

如果从站使用默认的基于主机的中继日志文件名,则在设置复制后更改从站的主机名可能导致复制失败,并显示以下错误:无法打开中继日志,并且在中继日志初始化期间找不到目标日志。这是一个已知问题(请参见Bug#2122)。如果您预计从站的主机名将来可能会更改(例如,如果在从站上设置了网络,以便可以使用DHCP修改其主机名),则可以使用relay_log和来 完全避免此问题。 relay_log_index系统变量,以在最初设置从属服务器时显式指定中继日志文件名。这将使名称独立于服务器主机名更改。

如果复制开始后遇到问题,一种解决方法是停止从属服务器,将旧的中继日志索引文件的内容放在新的之前,然后重新启动从属服务器。在Unix系统上,可以按以下所示进行操作:

shell> cat new_relay_log_name.index >> old_relay_log_name.index
shell> mv old_relay_log_name.index new_relay_log_name.index
从属服务器在以下条件下创建一个新的中继日志文件:

每次I / O线程启动。

清除日志时(例如,使用 FLUSH LOGS或 mysqladmin flush-logs)。

当前中继日志文件的大小变为 “ 太大 ”时,确定如下:

如果值 max_relay_log_size大于0,则为最大中继日志文件大小。

如果值为 max_relay_log_size0,则max_binlog_size 确定最大中继日志文件大小。

SQL线程在执行每个中继日志文件中的所有事件并且不再需要该事件后,会自动删除该文件。没有明确的机制可以删除中继日志,因为SQL线程会这样做。但是, FLUSH LOGS旋转中继日志,这会影响SQL线程删除它们的时间。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论