同步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復制功能。