复制中的各类文件
从 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 表中。
在任何情况下,请不要删除或编辑这些文件或表。
最后更新于