MySQL是一個非常常用的數據庫,常常需要在不同服務器之間同步數據。為了達到這個目的,我們可以使用MySQL自帶的Replication功能。Replication可以讓一個MySQL服務器將自己的數據庫變更同步到其他的MySQL服務器。在MySQL Replication中,一個服務器是master,其他的服務器是slave。Master服務器上的任何數據變更操作都會被記錄下來,并且通過網絡傳輸到一個或多個Slave服務器,這樣就可以保證Slave服務器上的數據庫和Master服務器上的數據庫保持一致。
Replication的工作流程如下:
1. Master記錄所有數據變更操作。 2. Master將變更操作轉換成二進制日志,并將其發送到Slave。 3. Slave從Master接收二進制日志,并應用到其本地的數據庫上,與Master保持同步。
要進行MySQL Replication,需要做以下準備工作:
1. 確定Master和Slave服務器之間能夠相互通信,可以使用ping命令等檢查。 2. 在Master服務器上創建一個用于Replication的賬戶,授權Slave服務器使用。 3. 在Slave服務器上設置Replication參數。
下面我們來進行具體的操作。
1. 在Master服務器上創建賬戶并授權
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
2. 在Master服務器上開啟二進制日志功能
# 編輯my.cnf文件,在[mysqld]下增加如下內容 log-bin=mysql-bin server-id=1
3. 在Slave服務器上設置Replication參數
# 編輯my.cnf文件,在[mysqld]下增加如下內容 server-id=2 relay-log=slave-relay-bin replicate-do-db=testdb
其中,server-id是唯一標識一個MySQL服務器的參數。relay-log是Slave服務器上用于存儲Master服務器的二進制日志的位置。replicate-do-db是指定Slave服務器只同步某個數據庫的數據。
4. 在Slave服務器上啟動Replication
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4; START SLAVE;
其中,MASTER_HOST指的是Master服務器的IP地址或者域名。MASTER_LOG_FILE和MASTER_LOG_POS分別是Slave服務器同步Master服務器的二進制日志起點。
至此,MySQL Replication就已經完成了。Master服務器上的數據變更操作都會被同步到Slave服務器上。