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=1 | CHANGE MASTER 语句可执行(不注释) |
--master-data=2 | CHANGE 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_Running | IO线程是否从主库读取binlog |
| Slave_SQL_Running | SQL线程是否执行binlog |