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

17.2.2.2 Slave Status Logs

原创 由迪 2020-03-03
873

复制从属服务器创建两个日志。默认情况下,这些日志文件命名master.info,并 relay-log.info在数据目录中创建。这些文件的名称和位置可以分别通过使用–master-info-file option和relay_log_info_file 系统变量来更改。在MySQL 5.6和更高版本中,也可以mysql通过使用适当的选项启动服务器,将这两个日志中的一个或两个都写入系统数据库中的表 :使用 master_info_repository系统变量将主信息日志写入 mysql.slave_master_info表中,然后使用 relay_log_info_repository 系统变量以将中继日志信息日志写入 mysql.slave_relay_log_info表中。看到 第17.1.4节“复制和二进制日志记录选项和变量”。

这两个状态日志包含的信息与SHOW SLAVE STATUS语句输出中显示的信息相似,第13.4.2节“用于控制从服务器的SQL语句”中对此进行了讨论 。由于状态日志存储在磁盘上,因此它们在从属服务器关闭后仍可生存。下次从属服务器启动时,它会读取两个日志,以确定从主机读取二进制日志并处理其自己的中继日志时已进行了多长时间。

应该限制​​对主信息日志文件或表的访问,因为它包含用于连接主数据库的密码。请参见第6.1.2.3节“密码和日志记录”。

如果将master_info_repository和 设置 relay_log_info_repository为 TABLE,则 使用事务存储引擎创建mysql.slave_master_info和 mysql.slave_relay_log_info表InnoDB。作为一个表,对中继日志信息日志的更新将与事务一起提交,这意味着即使在服务器意外中断的情况下,记录在该日志中的从服务器的进度信息也始终与已应用于数据库的信息一致。–relay-log-recovery必须在从站上启用该 选项以确保弹性。有关更多详细信息,请参见 第17.3.2节“处理复制从属的意外中断”。

将另外创建一个从属状态日志,主要供内部使用,并保存有关多线程复制从属上的工作线程的状态信息。该从属工作日志包括每个工作线程的中继日志文件和主二进制日志文件的名称和位置。如果将从属服务器的中继日志信息日志创建为表,则将从属服务器工作日志将写入mysql.slave_worker_info 表中。如果将中继日志信息日志写入文件,那么将从属工作日志将写入 worker-relay-log.info文件。

从属I / O线程更新主信息日志。下表显示了master.info文件中的行, mysql.slave_master_info表中的列以及所显示的列之间的对应关系 SHOW SLAVE STATUS。

master.info 文件行 slave_master_info 表格栏 SHOW SLAVE STATUS 柱 描述
1个 Number_of_lines [没有] 文件中的行数或表中的列数
2 Master_log_name Master_Log_File 当前从主数据库读取的主二进制日志的名称
3 Master_log_pos Read_Master_Log_Pos 从主数据库读取的主二进制日志中的当前位置
4 Host Master_Host 主机的主机名
5 User_name Master_User 用于连接主服务器的用户名
6 User_password 密码(未显示SHOW SLAVE STATUS) 用于连接主机的密码
7 Port Master_Port 用于连接主服务器的网络端口
8 Connect_retry Connect_Retry 从站尝试重新连接到主站之前等待的时间(以秒为单位)
9 Enabled_ssl Master_SSL_Allowed 指示服务器是否支持SSL连接
10 Ssl_ca Master_SSL_CA_File 用于证书颁发机构(CA)证书的文件
11 Ssl_capath Master_SSL_CA_Path 证书颁发机构(CA)证书的路径
12 Ssl_cert Master_SSL_Cert SSL证书文件的名称
13 Ssl_cipher Master_SSL_Cipher SSL连接握手中使用的可能密码的列表
14 Ssl_key Master_SSL_Key SSL密钥文件的名称
15 Ssl_verify_server_cert Master_SSL_Verify_Server_Cert 是否验证服务器证书
16 Heartbeat [没有] 复制心跳之间的间隔(以秒为单位)
17 Bind Master_Bind 应该使用哪个从站的网络接口连接到主站
18岁 Ignored_server_ids Replicate_Ignore_Server_Ids 要忽略的服务器ID列表。请注意,对于 Ignored_server_ids服务器ID列表,其前面是要忽略的服务器ID总数。
19 Uuid Master_UUID 主人的唯一ID
20 Retry_count Master_Retry_Count 允许的最大重新连接尝试次数
21 Ssl_crl [没有] SSL证书吊销列表文件的路径
22 Ssl_crl_path [没有] 包含SSL证书吊销列表文件的目录的路径
23 Enabled_auto_position Auto_position 是否使用自动定位(在MySQL版本5.6.5中添加)
从属SQL线程更新中继日志信息日志。在MySQL 5.6中,该relay-log.info文件包含行数和复制延迟值。下表显示了relay-log.info文件中的行, mysql.slave_relay_log_info表中的列以及所显示的列之间的对应关系SHOW SLAVE STATUS。

线入 relay-log.info slave_relay_log_info 表格栏 SHOW SLAVE STATUS 柱 描述
1个 Number_of_lines [没有] 文件中的行数或表中的列数
2 Relay_log_name Relay_Log_File 当前中继日志文件的名称
3 Relay_log_pos Relay_Log_Pos 中继日志文件中的当前位置;在从属数据库上已执行到此位置的事件
4 Master_log_name Relay_Master_Log_File 主二进制日志文件的名称,从中读取中继日志文件中的事件
5 Master_log_pos Exec_Master_Log_Pos 主机二进制日志文件中已执行事件的等效位置
5 Sql_delay SQL_Delay 从站必须落后于主站的秒数
6 Number_of_workers [没有] 用于并行执行复制事件(事务)的从属工作线程数
7 Id [没有] 内部使用的ID;目前这总是1
在MySQL 5.6之前,该relay-log.info文件不包含行数或延迟值(并且该 slave_relay_log_info表不可用)。

线 状态栏 描述
1个 Relay_Log_File 当前中继日志文件的名称
2 Relay_Log_Pos 中继日志文件中的当前位置;在从属数据库上已执行到此位置的事件
3 Relay_Master_Log_File 主二进制日志文件的名称,从中读取中继日志文件中的事件
4 Exec_Master_Log_Pos 主机二进制日志文件中已执行事件的等效位置
注意
如果将从属服务器降级到MySQL 5.6之前的版本,则较旧的服务器将无法relay-log.info正确读取 文件。要解决此问题,请在文本编辑器中通过删除包含行数的初始行来修改文件。

如果尚未将文件刷新到磁盘 ,则relay-log.info文件内容和SHOW SLAVE STATUS语句显示的状态可能不匹配 relay-log.info。理想情况下,您应该仅relay-log.info在脱机(即mysqld未运行)的从属服务器上查看 。对于正在运行的系统,如果要将状态日志写入表,则可以使用SHOW SLAVE STATUS或查询 slave_master_info和 slave_relay_log_info表。

备份从站的数据时,应备份这两个状态日志以及中继日志文件。从从站还原数据后,需要状态日志来恢复复制。如果丢失了中继日志,但是仍然有中继日志信息日志,则可以对其进行检查以确定SQL线程在主二进制日志中执行了多远。然后你可以使用 CHANGE MASTER TO与 MASTER_LOG_FILE和 MASTER_LOG_POS选项告诉从服务器从该点重新读取二进制日志。当然,这要求二进制日志仍存在于主数据库中。

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

评论