前提:
1、历史缘由,来到这家公司的库只是单库,性能安全性稳定性都有隐患,就决定做读写分离,但是首先要基于MySQL做主从复制;
2、公司的服务不能停,只能做不停机的主从搭建;
3、mysqldump 每天备份数据;
难点:mysqldump无法直接确认备份出来的最后一个position,且不停机数据库会源源不断有dml和ddl,position是一直变的,要确认开始复制的position
方式:和从库数据做比对,从而确认position
开始:
1、搭建好从库(版本必须要和主库一致或者高于主库)【不详说】
2、配置从库my.cnf搭建好主从复制【不详说】
2、用source命令把mysqldump备份的sql导入到从库
3、把最新的一份binlog文件拷贝到另外一个文件夹备用
【重要】找到从库中的操作最频繁的两张表,找到最后的更新插入时间
4、通过mysqlbinlog打开binlog文件,开始时间为上面找到的最后更新插入时间,找到那条SQL以及前后的几条SQL,去从库里面比对是否一致。从而确认出position
/usr/local/mariadb/bin/mysqlbinlog --no-defaults --database=qqcloud --base64-output=decode-rows -v --start-datetime='2020-04-23 09:35:00' mysql-bin.000099 |more
5、找到position,最后一个end_log_pos
end_log_pos 385146405
6、停止slave
stop slave;
7、配置从库同步点position等
change master to
master_host='127.0.0.1',
master_user='***',
master_password='****',
master_log_file='mysql-bin.000099',
master_log_pos=385146405;
8、开启slave
start slave;
9、观看slave状态;
show slave status;