数据迁移

主从集群构建

主库配置文件

1
2
3
4
5
6
7
[mysqld]
bind-address=0.0.0.0
server-id=1
log-bin=mysql-bin
log-slave-updates
binlog-ignore-db=mysql,information_schema,sys,performance_schema
binlog_format=MIXED

从库配置文件

1
2
3
4
[mysqld]
bind-address=0.0.0.0
server-id=2
relay-log=mysql-relay

1. 主库全量备份并记录binlog位置

1
mysqldump -u root -p --master-data=1 --single-transaction --all-databases > master_backup.sql  

2. 修改master_backup.sql 文件

1
2
3
4
5
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=5096;

# 修改为:

CHANGE MASTER TO MASTER_HOST='192.168.194.128',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=5096;

3. 从库重放

1
mysql -u root -p < master_backup.sql

3. 数据检查

1
2
#主库执行
pt-table-checksum --user=check_user --password=123456 --databases=testbb,testdb1,testdb2 --no-check-binlog-format --no-check-replication-filters --max-lag=1

4. 是数据修复

1
pt-table-sync --no-check-slave --user=check_user --password=123456  dsn=u=check_user,p=123456,h=192.168.194.128,P=3306 dsn=u=check_user,p=123456,h=192.168.194.129,P=3306 --databases=testdb2 --execute --print