由于公司的DBA离职,数据库的维护工作就落到了我身上。刚好遇到了从库因为数据原因导致无法主从复制,由于对mysql数据库不是很了解,在恢复过程中遇到了很多问题。记录下本次心酸的恢复过程。
本次过程大致如下:
- 从主库找到备份文件,放到从库服务器。
- 恢复数据到从库
- 设置MySQL还原点
- 启动从库开始主从复制
1. 连接到数据库
mysql -h127.0.0.1 -uroot -p ;
2. 切换数据库
use yourdatabase;
3. 停止主从复制
stop slave;
reset slave all;
4. 设置写入缓存大小。提高mysql导入速度。(和磁盘IO差不多就行)
set global bulk_insert_buffer_size=128*1024*1024;
5. 恢复数据 (根据自己的备份方式恢复)
source /bakfile
6. 找到mysql binlog 备份点 (在linux 下面执行,其他操作系统同理)
less /bakfile
找到
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-190.000640', MASTER_LOG_POS=120;
获取时间binlog文件名和pos。
7. 修改从库同步位置
CHANGE MASTER TO
MASTER_HOST='10.251.192.18',
MASTER_USER='sync',
MASTER_PASSWORD='DBect98773!_sync',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin-190.000640',
MASTER_LOG_POS=120;
8. 修改缓存。启动复制
set global bulk_insert_buffer_size=8*1024*1024;
start slave ;
9. 查看主从同步状态
show slave status \G;
10. 如果有问题。查看mysql 错误日志。
11. 同步开始后可能会有少量的冲突出现 ,使用下面语句可以跳过一个事务并查看同步状态
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;
start slave ;
show slave status \G;