一、在主库操作 1.备份数据
mysqldump -uroot -p –single-transaction –master-data=2 –no-autocommit -A -B > all.sql
解释:
–single-transaction 设置事务的隔离级别为可重复读,即 REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在 dump 期间,如果其他 innodb 引擎的线程修改了表的数据并提交,对该 dump 线程的数据并无影响,在这期间不会锁表
–master-data=2 该选项将二进制日志的位置和文件名写入到输出中 下图中的标红部分
–no-autocommit 采用批量提交方式(提高还原性能)
-A 同参数–all-databases 备份所有库,并在备份文件中生成创建库的语句及 use 语句。这样方便恢复时不用创建指定数据库
-B 此参数用于指定多个数据库,同-A 参数,生成创建库的语句及 use 语句。
1 2 3 4 5 6 7 2.查看数据库的 binlog 文件以及 position
head -n 20 all.sql
1 二、在从库操作
(1)将从库的数据备份
mysqldump -uxxx -p –single-transaction –master-data=2 –no-autocommit -A > all_repl.sql
1 (2)将从库还原为普通数据库
mysql> stop slave; mysql> reset slave; mysql> show slave status\G 1 2 3 (3)数据还原, 从主库导出的备份文件有 drop table 语句,导入时请确认是从库
mysql -uxxx -p < all.sql
1 (4)重新设置同步
mysql> change master to master_host=‘xx.xx.xx.xx’,master_user=‘repuser’,master_password=‘xxxxxx’,master_log_file=‘mysql-bin.000001’, master_log_pos=154; mysql> start slave; mysql> show slave status \G
参考文档: