[ACDU翻译] MySQL 17.2.4.1 中继日志
中继日志与二进制日志一样,由一组编号的文件组成,其中包含描述数据库更改的事件,以及一个包含所有使用的中继日志文件名称的索引文件。中继日志文件的默认位置是数据目录。
术语“中继日志文件”通常表示包含数据库事件的单个编号文件。术语 “中继日志”统称为一组编号的中继日志文件加上索引文件。
中继日志文件与二进制日志文件具有相同的格式,并且可以使用mysqlbinlog读取(请参阅 第 4.6.9 节,“mysqlbinlog - 处理二进制日志文件的实用程序”)。如果使用二进制日志事务压缩(自 MySQL 8.0.20 起可用),则写入中继日志的事务有效负载以与二进制日志相同的方式压缩。有关二进制日志事务压缩的更多信息,请参阅 第 5.4.4.5 节,“二进制日志事务压缩”。
对于默认复制通道,中继日志文件名具有默认形式 ,其中是副本服务器主机的名称,是序列号。连续的中继日志文件是使用连续的序列号创建的,以 . 对于非默认复制通道,默认基本名称是 ,其中是中继日志中记录的复制通道的名称。 *
host_name*-relay-bin.*
nnnnnn*
host_name
**nnnnnn
000001``*
host_name*-relay-bin-*
channel*
channel
副本使用索引文件来跟踪当前使用的中继日志文件。默认中继日志索引文件名 *
host_name*-relay-bin.index
用于默认通道和 非默认复制通道。 *
host_name*-relay-bin-*
channel*.index
默认中继日志文件和中继日志索引文件名和位置可以分别用 relay_log
和 relay_log_index
系统变量覆盖(请参阅第 17.1.6 节,“复制和二进制日志记录选项和变量”)。
如果副本使用默认的基于主机的中继日志文件名,则在设置复制后更改副本的主机名可能会导致复制失败,并出现错误Failed to open the relay log和Could not find target log during relay log initialization。这是一个已知问题(请参阅错误 #2122)。如果您预计副本的主机名将来可能会更改(例如,如果在副本上设置网络以便可以使用 DHCP 修改其主机名),则可以通过使用relay_log
和 完全避免此问题relay_log_index
系统变量以在您最初设置副本时显式指定中继日志文件名。这会导致名称独立于服务器主机名更改。
如果您在复制开始后遇到问题,解决此问题的一种方法是停止副本服务器,将旧中继日志索引文件的内容添加到新的,然后重新启动副本。在 Unix 系统上,这可以如下所示完成:
$> cat new_relay_log_name.index >> old_relay_log_name.index
$> mv old_relay_log_name.index new_relay_log_name.index
副本服务器在以下条件下创建新的中继日志文件:
- 每次复制 I/O(接收方)线程启动时。
- 刷新日志时(例如,使用
FLUSH LOGS
或 mysqladmin flush-logs)。 - 当前relay log文件过大时,判断如下:
- 如果 的值
max_relay_log_size
大于 0,则表示中继日志文件的最大大小。 - 如果值为
max_relay_log_size
0,则max_binlog_size
确定最大中继日志文件大小。
- 如果 的值
复制 SQL(应用程序)线程在执行完文件中的所有事件且不再需要后自动删除每个中继日志文件。没有用于删除中继日志的明确机制,因为复制 SQL 线程负责这样做。但是,FLUSH LOGS
会轮换中继日志,这会影响复制 SQL 线程何时删除它们。
免责声明:
1、本站资源由自动抓取工具收集整理于网络。
2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。
3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。
4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。
5、如果您喜欢本资源,请您支持作者,购买正版内容。
6、资源失效,请下方留言,欢迎分享资源链接
文章评论