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