流程

过程大致如下:

  • 从主库找到备份文件,放到从库服务器。
  • 恢复数据到从库
  • 设置MySQL还原点
  • 启动从库开始主从复制

连接数据库

先连接主库
mysql -uroot -p

切换数据库(或者不切换也行)

use yourdatabase;

停止主从复制

stop slave;
reset slave all;

设置写入缓存大小。提高mysql导入速度。(和磁盘IO差不多就行)

set global bulk_insert_buffer_size=128*1024*1024;

恢复数据 (根据自己的备份方式恢复)

source /bakfile

找到mysql binlog 备份点 (在linux 下面执行,其他操作系统同理)

less  /bakfile 

找到

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-190.000640', MASTER_LOG_POS=120;
/*获取时间binlog文件名和pos*/

注意,实际可能并不需要这样,直接在主库执行:
show master status
1668453592882.png
取得了bin-log和pos后直接修改从库,pos其实可以为0,会自动follow。

修改从库同步位置

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;

修改缓存。启动复制

set global bulk_insert_buffer_size=8*1024*1024;
start slave ;

查看主从同步状态

show slave status \G;

如果有问题。查看mysql 错误日志。

同步开始后可能会有少量的冲突出现 ,使用下面语句可以跳过一个事务并查看同步状态

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;
start slave ;
show slave status \G;