- 二进制日志(binary log)、中继日志(relay log)
1、master将改变的数 记录在本地的二进制日志中;
2、slave将master的binary log拷贝到自己的relay log
3、中继日志事件,将数据读取到自己的数据库中
MYSQL主从复制是异步的,串行化,有延迟
master:slave = 1 : n
主机配置
master的配置文件:
[mysqld]
# id
server-id=1
# 二进制文件日志保存路径
log-bin="D:/data/mysql-bin"
# 错误记录文件日志
log-error="D:/log/mysql-error"
#主从同步是,忽略的数据库
binlog-ignore-db=...
#(可选)指定主从同步时,同步哪些数据库
binlog-do-db=...
- 主数据库授权哪个数据库为自己的slave
GRANT REPLICATION slave,reload,super ON . TO 'root'@'192.168.11.%' IDENTIFIED BY 'root';
flush privileges;
- 查看主数据库的状态
show master status;
image.png
记录File和Position的值(可能会变,做同步前,需要查看下最新),从机配置需要用到
从机配置:
slave的配置文件:
[mysqld]
# id
server-id=2
log-bin=mysql-bin
replicate-do-db=test
- 从机授权
CHANGE MASTER TO
MASTER_HOST = '192.168.2.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '123456',
MASTER_PORT=3306,
master_log_file = 'mysql-bin.000001',
master_log_pos=575;
开启主从机同步
- 开启
从机:
start slave;
检验:show slave status \G,观察:
image.png
确保二者都是YES
可查看下面的Last_IO_Error字段提示信息:
错误原因,有可能是使用了相同的server-id
分别查看主从中server-id
show variables like '%server_id%'
若是版本问题,导致的server-id不生效,可通过全局变量设置解决:
set global server_id = 2;
网友评论