要實現MySQL兩個數據庫之間的同步,可以使用MySQL自帶的主從復制(Master-Slave Replication)功能。下面是配置主從復制的基本步驟:
在主服務器(Master)上設置:
a. 修改my.cnf文件,通常位于/etc/mysql/my.cnf
或/etc/my.cnf
。
b. 在[mysqld]部分添加以下內容:
server-id=1
log-bin=mysql-bin
binlog-do-db=<需要同步的數據庫名>
binlog-format=row
c. 重啟MySQL服務。 d. 登錄MySQL,創建一個專門用于同步的用戶并授權:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
e. 查詢主服務器的二進制日志文件名和位置:
SHOW MASTER STATUS;
記下File
和Position
的值,稍后在配置從服務器時需要用到。
在從服務器(Slave)上設置:
a. 修改my.cnf文件,通常位于/etc/mysql/my.cnf
或/etc/my.cnf
。
b. 在[mysqld]部分添加以下內容:
server-id=2
relay-log=relay-bin
relay-log-index=relay-bin.index
c. 重啟MySQL服務。 d. 登錄MySQL,配置主服務器信息:
CHANGE MASTER TO
MASTER_HOST='主服務器IP',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='從主服務器查詢到的File名',
MASTER_LOG_POS=從主服務器查詢到的Position值;
e. 啟動從服務器同步:
START SLAVE;
完成以上步驟后,從服務器將開始與主服務器進行數據同步。你可以通過以下命令查看從服務器的同步狀態:
SHOW SLAVE STATUS\G;
如果Slave_IO_Running
和Slave_SQL_Running
都顯示為"Yes",則表示同步正常進行中。
注意:這里的同步是單向的,只有主服務器上的數據變更會反映到從服務器上。從服務器上的數據變更不會影響到主服務器。此外,在進行數據庫同步前,請確保兩臺服務器的MySQL版本相同,并對數據庫進行備份,以防止數據丟失。