MySql主从复制

2024-07-29

35
0
flush tables with read lock;#添加读锁
UNLOCK TABLES;#解锁

1、主库配置

server-id=1 
read-only=0 
log-bin=mysql-bin 
#忽略的数据,指不需要同步的数据库 
#binlog-ignore-db=mysql 
#指定同步的数据库 
#binlog do-db=db01

2、配置完后重启

 systemctl restart XXX

3、创建远程连接账号,分配权限

CREATE USER ‘用户名’@’地址’ IDENTIFIED WITH mysql\_native\_password BY ‘密码’ GRANT PEPLICATION SLAVE ON *.* TO ‘用户名’@’地址’

查看

SHOW GRANTS FOR '用户名'@'地址'; select user,host from user;

4、查看日志坐标

show master status;
#file : 从哪个日志文件开始推送日志文件 
#position : 从哪个位置开始唯送日志 
#binlog_ignore_db : 指定不需要同步的数据库

5、从库配置

server-id = 2  # 服务器唯一标识,不能与主服务器相同 
relay-log = mysql-relay-bin  # 启用中继日志 
read-only=1

6、 配置完后重启

 systemctl restart XXX

7、设置主数据库信息

CHANGE MASTER TO 
	MASTER_HOST='master\_host\_ip', 
	MASTER_PORT=13306, 
	MASTER_USER='replication\_user', 
	MASTER_PASSWORD='replication\_password', 
	MASTER_LOG_FILE='mysql-bin.000001',  # 主服务器二进制日志文件 
	MASTER_LOG_POS=1117;  # 日志位置,通常为0,除非有特定位置

7、开始复制

START SLAVE; 
# STOP SLAVE;# 停止复制

8、验证复制状态

SHOW SLAVE STATUS\G
#如果Slave_IO_Running和Slave_SQL_Running都显示为"Yes",则表示复制正在正常运行。

9、从库宕机处理

查看error日志中的pos,重新设置主数据库信息然后开始复制。