MySQL复制binlog的流程大致如下:
主服务器:
1. 记录写操作并将数据写入binlog文件
2. 向从服务器发送binlog文件
从服务器:
1. 首先,将binlog文件存储到本地
2. 读取binlog文件,记录和执行binlog中的写操作
当大家在MySQL中启用binlog复制后,会在MySQL配置文件中看到一个配置参数:log-bin
,在这个参数中,大家可以指定二进制日志文件的保存路径。具体如下:
[mysqld]
log-bin=/var/lib/mysql/mysql-bin
expire-logs-days=10
max-binlog-size=100M
log-bin
参数值指定了binlog文件存储的路径和文件名前缀。MySQL会将文件以mysql-bin.
命名的形式保存在/var/lib/mysql/
目录下。在这个目录中,大家可能会找到多个binlog文件,每个文件都有不同的序号来区分不同的binlog文件。
除了配置log-bin
参数外,大家还需要在从服务器上指定一个参数,用于使从服务器能够读取主服务器的binlog并将其同步至从服务器的本地:
[mysqld]
log-bin=/var/lib/mysql/mysql-bin
server-id=2
relay-log=/var/lib/mysql/slave-relay-bin
relay-log-index=/var/lib/mysql/slave-relay-bin.index
server-id
参数指定了从服务器的唯一标识符。在同一个复制环境中,不同的MySQL实例的server-id
是不同的。
relay-log
和relay-log-index
参数会将binlog文件在从服务器上进行转义和同步。这两个参数的功能很类似于log-bin
参数。
使用MySQL复制binlog可以实现主从复制,并保持数据的一致性。在高并发的情况下,发现数据不一致,大家可以通过binlog来确定问题的根源,然后快速解决问题。因此,在 MySQL的工作中,熟悉并掌握binlog复制的技能是非常必要的!