-
Notifications
You must be signed in to change notification settings - Fork 111
slave_relay_log_info
xiaoboluo768 edited this page Jun 7, 2020
·
4 revisions
-
该表提供查询SQL线程重放的二进制文件对应的主库位置和relay log当前最新的位置
-
表结构定义
CREATE TABLE `slave_relay_log_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
`Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
`Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
`Number_of_workers` int(10) unsigned NOT NULL,
`Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
`Channel_name` char(64) NOT NULL COMMENT 'The channel on which the slave is connected to a source. Used in Multisource Replication',
PRIMARY KEY (`Channel_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';
- 表字段与show slave status输出字段、relay-log.info文件中的行信息对应关系及其表字段含义如下:
relay-log.info文件中的行数 | mysql.slave_relay_log_info表字段 | show slave status命令输出字段 | 字段含义描述 |
---|---|---|---|
1 | Number_of_lines | [None] | 表示relay-log.info中的信息行数或者slave_relay_log_info表中的信息字段数,用于版本化表定义 |
2 | Relay_log_name | Relay_Log_File | 表示当前最新的relay log文件名称 |
3 | Relay_log_pos | Relay_Log_Pos | 表示当前最新的relay log文件对应的最近一次完整接收的event的位置 |
4 | Master_log_name | Relay_Master_Log_File | 表示SQL线程当前正在重放的中继日志对应的主库binlog 文件名 |
5 | Master_log_pos | Exec_Master_Log_Pos | 表示SQL线程当前正在重放的中继日志对应主库binlog 文件中的位置 |
6 | Sql_delay | SQL_Delay | 表示延迟复制指定的从库必须延迟主库多少秒 |
7 | Number_of_workers | [None] | 表示从库当前并行复制有多少个worker线程 |
8 | Id | [None] | 用于内部唯一标记表中的每一行记录,目前总是1 |
9 | Channel_name | Channel_name | 表示从库复制通道名称,用于多源复制,一个通道对应一个主库源 |
- 表记录内容示例
root@localhost : mysql 10:39:31> select * from slave_relay_log_info\G
*************************** 1. row ***************************
Number_of_lines: 7
Relay_log_name: /home/mysql/data/mysqldata1/relaylog/mysql-relay-bin.000205
Relay_log_pos: 14097976
Master_log_name: mysql-bin.000060
Master_log_pos: 21996812
Sql_delay: 0
Number_of_workers: 16
Id: 1
Channel_name:
1 row in set (0.00 sec)
什么是中继日志:
- 中继日志(relay log)与二进制日志(binlog,即,binary log)中,保存的event数据是一样的(但中继日志中还保存了更多的信息),也是由一组包含描述数据库变更的事件数据的文件组成,这些文件名后缀带连续编号,此外,还有一个包含所有正在使用的中继日志文件名称的索引文件
- 中继日志中的数据存放格式与二进制日志相同,都可以使用mysqlbinlog命令来提取数据,默认情况下,中继日志保存在datadir下,文件名格式为:host_name-relay-bin.nnnnnn,其中host_name是从库服务器主机名,nnnnnn是文件后缀序列号。连续的中继日志文件从000001开始的连续序列号创建。使用索引文件来跟踪当前正在使用的中继日志文件。默认的中继日志索引文件名保存在datadir下,文件名格式为:host_name-relay-bin.index
* 中继日志文件和中继日志索引文件名称可分别使用--relay-log和--relay-log-index参数选项指定值覆盖默认值,如果文件名使用默认值,则要注意主机名称不能修改,否则会报无法打开中继日志的错误,建议使用参数选项指定固定的文件名称前缀。如果已经出现了这种情况发生报错了,那么需要修改index文件中的中继日志文件名和datadir下的中继日志文件名前缀为新的主机名,然后重启从库
在什么情况下会产生新的中继日志文件
- I/O线程启动时
- 使用语句:FLUSH LOGS或mysqladmin flush-logs命令时
- 当前中继日志文件的大小变得“太大”时,日志滚动规则如下:
* 如果max_relay_log_size系统变量的值大于0,那么中继日志按照此参数指定的大小进行滚动
* 如果max_relay_log_size系统变量的值为0,则中继日志按照max_binlog_size系统变量指定的大小进行滚动
SQL线程在执行完relay log之后,会自行决定何时清理掉这些已经执行完成的relay log文件,但如果使用FLUSH LOGS语句或mysqladmin flush-logs命令强制滚动中继日志时,SQL线程可能会同时清理掉已经执行完成的relay log文件。
上一篇: slave_master_info表 | 下一篇: slave_worker_info表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!