MYSQL主从修复

1、主库进行全备

--master-data是 mysqldump 的一个参数,用来在备份时 记录当前主库的 binlog 位置,方便之后搭建 主从复制,生成的sql文件开头会自动写入一条 CHANGE MASTER 语句

CHANGE MASTER TO 
  MASTER_LOG_FILE='mysql-bin.000123',
  MASTER_LOG_POS=456789;  

=1=2 的区别

参数行为
--master-data=1CHANGE MASTER 语句可执行(不注释)
--master-data=2CHANGE MASTER 语句会被注释掉
 nohup /usr/bin/mysqldump -uroot -p'password'  --routines --events --single-transaction --master-data=2 --flush-logs --all-databases | gzip  > /app/backup/allbackup_$(date +%Y%m%d%H%M).sql.gz

2、主库准备同步账号密码

CREATE USER 'replicate'@'%' IDENTIFIED BY 'repl_password';
# ALTER USER 'replicate'@'%' IDENTIFIED BY 'repl_password'; 已有账号忘记密码,更改密码
FLUSH PRIVILEGES;

3、从库清空数据库及停止原有的主从同步

drop database dbname;
stop slave;

4、查看位置点

zgrep "CHANGE MASTER" backup.sql.gz
# -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=87206893;

5、从库导入数据

nohup zcat allbackup_$(date +%Y%m%d%H%M).sql.gz | mysql -u root -p'password' > import.log 2>&1 &

6、从库恢复主从同步

reset slave;
change master to master_host='主库IP',master_user='replicate',master_password='repl_password',master_log_file='mysql-bin.000004',master_log_pos=87206893;
start slave;

7、验证主从同步状态

SHOW SLAVE STATUS\G
---
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
---
字段说明
Slave_IO_RunningIO线程是否从主库读取binlog
Slave_SQL_RunningSQL线程是否执行binlog