MySQL 主從同步是用于在多個(gè)數(shù)據(jù)庫之間共享數(shù)據(jù)的一種方式。在這種架構(gòu)中,主庫負(fù)責(zé)所有的寫操作,而從庫則負(fù)責(zé)所有的讀操作。這種配置可以提高整個(gè)系統(tǒng)的可伸縮性和可靠性。下面我們來一步步介紹 MySQL 主從同步的配置。
首先,我們需要保證主庫和從庫的 MySQL 版本一致,并且需要配置好主庫和從庫的網(wǎng)絡(luò)連接。在主庫上,我們需要修改 MySQL 配置文件,打開 binlog 功能,并將 binlog 格式設(shè)置為 row 格式。 binlog 是用于記錄數(shù)據(jù)庫所有變更操作的日志文件,row 格式表示 binlog 記錄的是每個(gè)變更操作的具體內(nèi)容。以下是修改 MySQL 配置文件的代碼:
[mysqld] log-bin=mysql-bin binlog-format=row server-id=1
其中,log-bin 表示 binlog 日志文件的前綴名稱,可以自定義。server-id 是主庫的唯一標(biāo)識(shí)符。
接下來,在主庫上為從庫創(chuàng)建一個(gè)用于同步的賬戶,并授權(quán)給這個(gè)賬戶 REPLICATION SLAVE 和 REPLICATION CLIENT 權(quán)限。以下是創(chuàng)建賬戶和授權(quán)的代碼:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%';
在主庫上執(zhí)行完這些操作后,我們需要查看主庫的狀態(tài)信息,并記錄下 File 和 Position 的值,這是用來標(biāo)識(shí)主庫當(dāng)前 binlog 日志文件和位置的參數(shù)。以下是查看狀態(tài)信息的代碼:
SHOW MASTER STATUS;
接下來,在從庫上同樣需要修改 MySQL 配置文件,打開 relay-log 功能,并將 slave 的 server-id 設(shè)置為一個(gè)不同于主庫的值。relay-log 是用于存儲(chǔ)從庫對(duì)于主庫變更操作的重放記錄的日志文件。以下是修改 MySQL 配置文件的代碼:
[mysqld] server-id=2 relay-log=mysqld-relay-bin relay-log-index=mysqld-relay-bin.index log-slave-updates
最后,在從庫上執(zhí)行以下代碼,設(shè)置從庫連接主庫的信息。
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_file_position; START SLAVE;
其中,master_host 是主庫地址,repl 是連接使用的賬戶名,password 是賬戶的密碼,master_log_file_name 和 master_log_file_position 分別是主庫上記錄的 File 和 Position 的值。執(zhí)行完以上操作后,從庫就會(huì)自動(dòng)同步主庫的數(shù)據(jù)。