同步MySQL主库与测试库数据可以通过多种方法实现,以下是几种常见的方法:
导出主库数据:
mysqldump -u [用户名] -p[密码] --databases [数据库名] > [导出文件名].sql
例如:
mysqldump -u root -p --databases mydatabase > mydatabase_backup.sql
导入数据到测试库:
登录到测试库MySQL服务器,然后使用mysql
命令导入导出的SQL文件:
mysql -u [用户名] -p[密码] [数据库名] < [导出文件名].sql
例如:
mysql -u root -p mydatabase < mydatabase_backup.sql
配置主库:
编辑主库的my.cnf
(或my.ini
)配置文件,确保以下配置项存在且正确:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=[需要复制的数据库名]
重启主库MySQL服务以使配置生效。
获取主库二进制日志坐标:
在主库上执行以下命令以获取当前的二进制日志坐标(文件名和位置):
SHOW MASTER STATUS;
记下File
和Position
的值。
配置测试库:
编辑测试库的my.cnf
(或my.ini
)配置文件,确保以下配置项存在且正确:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
重启测试库MySQL服务以使配置生效。
设置主库和测试库的连接:
在测试库上创建一个用于复制的主库账号,并授权:
CREATE USER '[用户名]'@'%' IDENTIFIED BY '[密码]';
GRANT REPLICATION SLAVE ON *.* TO '[用户名]'@'%';
FLUSH PRIVILEGES;
配置测试库作为从库:
在测试库上执行以下命令,使用之前获取的二进制日志坐标来配置从库:
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='[用户名]',
MASTER_PASSWORD='[密码]',
MASTER_LOG_FILE='[文件名]',
MASTER_LOG_POS=[位置];
START SLAVE;
检查从库的状态以确保复制正常进行。
安装并备份主库:
使用Percona XtraBackup工具备份主库数据:
innobackupex --user=[用户名] --password=[密码] --host=[主库IP] --databases=[数据库名] /path/to/backup
将备份文件传输到测试库:
将备份文件复制到测试库的相应位置。
在测试库上恢复备份:
在测试库上使用innobackupex
命令恢复备份数据:
innobackupex --user=[用户名] --password=[密码] --host=[测试库IP] /path/to/backup
配置测试库以同步主库更改(可选):
如果需要实时同步主库的更改,可以配置测试库作为从库,并使用MySQL复制功能。