由于公司的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;