MySQL 主从同步

一、主服务器配置

1. 数据库配置

# mysql主库配置
# 集群唯一标识,主库从库不能重复(值为数据库IP)
server_id=88
# 开启二进制日志
log_bin=mysql-bin
#日志有效期(天)< mysql8.4 
expire_logs_days=7

2. 创建远程连接账户

从库同步主库的数据,需要先连接到主库。因此需要创建一个远程连接的账户:

如 :创建一个远程连接账户’slave’,密码为’slave’

CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
flush privileges; 

3. 查看master状态

复制主机的数据库,需要先查询主机数据库二进制日志的文件名和文件所在位置的,命令如下:

SHOW MASTER STATUS;

4. 停止主机数据库的写操作

从机开始同步之前,主机不能再进行写操作,如果主机仍在进行写操作,会导致同步失败,导致同步无法继续执行。

二、从服务器配置

1. 数据库配置

# mysql主库配置
# 集群唯一标识,主库从库不能重复(值为数据库IP)
server_id=101
# 开启二进制日志
log_bin=mysql-bin
#日志有效期(天)	
expire_logs_days=7

2. 开启局域网访问能力

CREATE USER 'manager'@'%' IDENTIFIED BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'manager'@'%';
FLUSH PRIVILEGES;

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

3. 使用管理工具同步数据库

4. 开始同步

从数据库执行同步命令    ( < mysql 8.4)

change master to master_host='192.168.0.185', 
master_user='root',  
master_password='root', 
master_log_file='mysql-bin.000001',master_log_pos=1063;

# 开始同步
start SLAVE;
master_log_file 和 master_log_pos
通过主机执行 : SHOW MASTER STATUS; 查询

>= 8.4

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='192.168.0.185',
    SOURCE_USER='root',
    SOURCE_PASSWORD='root',
    SOURCE_LOG_FILE='mysql-bin.000002',
    SOURCE_LOG_POS=157;
    
START REPLICA;

5. 查看从机状态

show slave status;
>= 8.4
show REPLICA STATUS;