复制信息记录表|全方位认识 mysql 系统库( 二 )


19
Uuid
表示主库的UUID
20
表示从库最大允许重连主库的次数
21
[None]
SSL证书撤销列表文件的路径
22
[None]
包含ssl证书吊销列表文件的目录路径
23
n
表示从库是否启用在主库中自动寻找位置的功能(使用1时启动自动寻找位置,如果使用=0,则不会自耦东找位置)
24
表示从库复制通道名称,一个通道代表一个复制源
25
表示在上的TLS版本号
2.2.该表提供查询SQL线程重放的二进制文件对应的主库位置和relay log当前最新的位置 。下面是该表中存储的信息内容 。
root@localhost : mysql 10:39:31> select * from slave_relay_log_info\G*************************** 1. row ***************************Number_of_lines: 7Relay_log_name: /home/mysql/data/mysqldata1/relaylog/mysql-relay-bin.000205Relay_log_pos: 14097976Master_log_name: mysql-bin.000060Master_log_pos: 21996812Sql_delay: 0Number_of_workers: 16Id: 1Channel_name:1 row in set (0.00 sec)
表字段与show slave 输出字段、文件中的行信息对应关系及其表字段含义如下: 文件中的行数mysql.表字段show slave 命令输出字段字段含义描述
[None]
表示中的信息行数或者表中的信息字段数,用于版本化表定义
表示当前最新的relay log文件名称
表示当前最新的relay log文件对应的最近一次完整接收的event的位置
e
表示SQL线程当前正在重放的中继日志对应的主库 文件名
表示SQL线程当前正在重放的中继日志对应主库 文件中的位置
表示延迟复制指定的从库必须延迟主库多少秒
[None]
表示从库当前并行复制有多少个线程
Id
[None]
用于内部唯一标记表中的每一行记录,目前总是1
表示从库复制通道名称,用于多源复制,一个通道对应一个主库源
什么是中继日志:
在什么情况下会产生新的中继日志文件 。
SQL线程在执行完relay log之后,会自行决定何时清理掉这些已经执行完成的relay log文件,但如果使用FLUSH LOGS语句或 flush-logs命令强制滚动中继日志时,SQL线程可能会同时清理掉已经执行完成的relay log文件 。
2.3.该表提供查询多线程复制时的线程状态信息,与.表的区别是:表记录线程重放的relay log和主库位置信息,而.表记录的是线程重放的GTID位置信息 。下面是该表中存储的信息内容 。
root@localhost : mysql 01:09:39> select * from slave_worker_info limit 1\G;*************************** 1. row ***************************Id: 1Relay_log_name:Relay_log_pos: 0Master_log_name:Master_log_pos: 0Checkpoint_relay_log_name:Checkpoint_relay_log_pos: 0Checkpoint_master_log_name:Checkpoint_master_log_pos: 0Checkpoint_seqno: 0Checkpoint_group_size: 64Checkpoint_group_bitmap:Channel_name:1 row in set (0.00 sec)
表字段含义 。该表中记录的内容对从库多线程复制crash 至关重要,所以下文对该表中记录的内容如何作用于crash 过程进行一些必要的说明 。从库多线程复制如何做复制分发 。
从库多线程复制的crash。

复制信息记录表|全方位认识 mysql 系统库

文章插图
每一个事务在分发到线程之后,都会分配一个编号,这个编号在某一段时间内,都是相对固定的,这个编号一旦被分配,就不会再改变 。在事务被某个线程执行完成之后,它的位置信息就会被flush一次,这与5.5版本中的记录的原理是类似的(中存放了从库当前SQL线程重放的位置),但是现在是多线程,每个线程的执行位置不能直接存放在中了,中存放的是所有线程汇总之后的位置,每个线程独立的位置信息存放在了mysql.表中,在该表中,有多少个并行复制线程,就有多少行记录(如果是多主复制,则每个复制通道都有rs变量指定的记录数) 。mysql.表中,开头的字段记录了每个线程的检查点相关的信息(这里与存储引擎的检查点不同,但是概念相通),线程的检查点的作用是什么呢?PS:如果在主从复制架构中,有2个以上的从库,且从库永远不做提升主库的操作时,可以使用如下方法优化从库延迟(在该场景下,从库无需担心数据丢失问题,因为有另外一个从库兜底+不做主从切换,只需要专心提供快速应用主库与只读业务即可) 。