方案一:
把主库进行锁表操作,这样备份时数据就不会写入,备份数据库在导入从库,然后开启主从同步,操作如下:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
锁表后备份,并且查看一下一下binlog的位置,然后还原后,根据纪录位置进行同步即可.
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000006 | 1998 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
方案二
备份主库时刷新一下binlog,在备份库中会显示打印备份的位置,从那个binlog位置进行备份,然后在从库中进行还原,还原后在根据备份的binlog位置进行同步,这样不影响主库的写,也不影响从库的同步.
mysqldump -uroot -p --all-databases --single-transaction --flush-logs --master-data=2 > backup.sql
备份后,把备份后的文件copy到从库中,然后在从库中导入即可,导入后查看一下备份到binlog位置
grep "CHANGE MASTER" backup.sql -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000051', MASTER_LOG_POS=376609350;
然后根据备份到位置进行同步,从新创建同步进行,然后开启同步
change master to master_host='10.32.128.104', master_user='root', master_password='123456', master_log_file='mysql-bin.000051', master_log_pos=376609350; START SLAVE;
这样同步就可以从备份位置同步,然后同步的过程中也不会影响到用户的使用,不影响同步进度.以上是两种同步方案仅供参考.
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏