源库操作:
1.锁库
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.03 sec)
2.记录当前binlog位置
mysql> SHOW MASTER STATUS\G;
*************************** 1. row ***************************
File: mysql-bin.000002
Position: 463367754
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: ea142c44-1315-11e4-84a5-0800270c8b99:1-114
1 row in set (0.00 sec)
ERROR:
No query specified
3.设置数据库关闭模式,做checkpoint,将buffer的数据全部写入数据文件
mysql> set global innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
注:如果是从库有问题重建,需要清空原来的从库信息,否则binlog日志需要重新再传一次
4.关闭数据库
[root@mysql-db101 ~]# service mysql stop
Shutting down MySQL.. [确定]
目标库操作:
清空环境
#清空表空间
[mysql@mysql-db202 data]$ mv ibdata1 ibdata1_bak
#清空redo文件
[mysql@mysql-db202 data]$ mv ib_logfile0 ib_logfile0_bak
[mysql@mysql-db202 data]$ mv ib_logfile1 ib_logfile1_bak
[mysql@mysql-db202 data]$ mv ib_logfile2 ib_logfile2_bak
#清空relay日志文件
[mysql@mysql-db202 data]$ rm -rf *relay-bin*
#清空其它schema
[mysql@mysql-db202 data]$ rm -rf baofeng
#清空binlog文件、binlog index文件
[mysql@mysql-db202 logbin]$ rm -rf mysql-bin.*
#清空mysql库
[mysql@mysql-db202 logbin]$ mv mysql /tmp/mysql_bak
官方手册上说需要排除mysql的schema:
但是这样有问题,如果不拷贝mysql库的话,那么用户信息、存储过程等信息则无法同步过去,因此还是迁移mysql库比较好
源端操作:
拷贝文件:
scp -r ib_logfile0 mysql@192.168.128.93:/home/mysql/data
scp -r ib_logfile1 mysql@192.168.128.93:/home/mysql/data
scp -r ib_logfile2 mysql@192.168.128.93:/home/mysql/data
scp -r ibdata1 mysql@192.168.128.93:/home/mysql/data
scp -r baofeng mysql@192.168.128.93:/home/mysql/data
scp -r mysq mysql@192.168.128.93:/home/mysql/data/
目标端操作:
启动数据库
[root@mysql-db101 ~]# service mysql start
mysql> UNLOCK TABLES;
重置master信息:
mysql> change master to master_host='192.168.128.91', master_user='rep',master_password='123456';
mysql> set global GTID_PURGED= "ea142c44-1315-11e4-84a5-0800270c8b99:1-114";
mysql> start slave;
mysql> show slave status\G;
mysql> UNLOCK TABLES;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25704976/viewspace-1442055/
,如需转载,请注明出处,否则将追究法律责任。