复制中的各类文件

从 MySQL 复制流程可以看到复制过程中涉及了两类非常重要的日志文件:

  • 二进制日志文件(Binlog) 二进制日志文件(Binlog)以二进制的形式记录 MySQL 中的所有数据修改操作,包括 Create、Drop、Insert、Update、Delete 操作等

  • 中继日志文件(Relay Log) 中继日志文件 Relay Log 的文件格式、内容和二进制日志文件 Binlog 一样,唯一的区别在于从库上的 SQL 线程在执行完当前中继日志文件 Relay Log 中的事件之后,SQL 线程会自动删除当前中继日志文件 Relay Log,避免从库上的中继日志文件 Relay Log 占用过多的磁盘空间。

为了保证从库崩溃重启之后,从库的 I/O 线程SQL 线程仍然能够知道从哪里开始复制,从库上默认还会创建两个日志文件 master.info relay-log.info 用来保存复制的进度。这两个文件在磁盘上以文件形式分别记录了从库的 I/O 线程当前读取主库二进制日志 Binlog 的进度SQL 线程应用中继日志 Relay Log 的进度

master.info 记录的是 I/O 线程连接主库的一些参数,主要包括 SHOW SLAVE STATUS 显示出的以下 5 列:

  • Master Host:主库的 IP。

  • Master User:主库上,主从复制使用的用户账号。

  • Master Port:主库 MySQL 的端口号。

  • Master_Log_File:从库的 I/O 线程当前正在读取的主库 Binlog 的文件名。

  • Read_Master_Log_Pos:从库 I/O 线程当前读取到的位置。

relay-log.info 记录的是 SQL 线程应用中继日志 Relay Log 的一些参数,主要包括 SHOW SLAVE STATUS 显示出的以下 4 列:

  • Relay_Log_File:从库 SQL 线程正在读取和应用的中继日志 Relay Log 的文件名。

  • Relay_Log_Pos:从库 SQL 线程当前读取并应用的中继日志 Relay Log 的位置。

  • Relay_Master_Log_File:从库 SQL 线程正在读取和应用的 Relay Log 对应于主库 Binlog 的文件名。

  • Exec_Master_Log_Pos:中继日志 Relay Log 中 Relay_Log_Pos 位置对应于主库 Binlog 的位置。

副本在其连接元数据存储库中存储与主节点相关的信息。连接元数据存储库可以是文件形式或表形式,这取决于 master_info_repository 系统变量的设置值。

  • 当副本以 master_info_repository=FILE 运行时,会在数据目录中存储两个文件,命名为master.info 和 relay-log.info。

  • 相反,如果 master_info_repository=TABLE,则此信息将保存在 mysql 数据库中的master_slave_info 表中。

在任何情况下,请不要删除或编辑这些文件或表。

最后更新于