MySQL的復制(replication)功能是一種實現數據高可用性和負載均衡的技術。它允許一個MySQL服務器(稱為主服務器或Master)將其數據復制到一個或多個其他MySQL服務器(稱為從服務器或Slave)。這樣,當主服務器出現故障時,從服務器可以接管其工作,保證數據的可用性。
以下是使用MySQL復制功能的基本步驟:
my.cnf
(或my.ini
)配置文件中,確保以下設置是正確的:[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=需要復制的數據庫名
binlog-format=ROW
其中,server-id
是主服務器的唯一標識符,log-bin
啟用了二進制日志記錄,binlog-do-db
指定了要復制的數據庫,binlog-format
定義了復制的事件格式(可以是STATEMENT, ROW或MIXED)。my.cnf
(或my.ini
)配置文件中,添加或修改以下設置:[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
其中,server-id
是從服務器的唯一標識符,relay-log
定義了中繼日志的位置,log-slave-updates
啟用了從服務器將更新事件記錄到其中繼日志,read-only
設置了從服務器為只讀模式以防止寫操作。CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
其中,'repl'@'%'
是復制用戶的登錄名和密碼,可以根據需要進行更改。SHOW MASTER STATUS;
這將返回兩個值:File
(二進制日志文件名)和Position
(二進制日志中的位置)。CHANGE MASTER TO
MASTER_HOST='master_ip_address',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='recorded_file_name',
MASTER_LOG_POS=recorded_position;
START SLAVE;
其中,master_ip_address
是主服務器的IP地址,recorded_file_name
和recorded_position
分別是上一步中獲取的二進制日志文件名和位置。SHOW SLAVE STATUS\G;
如果一切正常,你應該能看到Slave_IO_Running
和Slave_SQL_Running
的值都是Yes
,表示復制進程正在正常運行。請注意,以上步驟僅提供了基本的MySQL復制配置過程。在實際應用中,可能還需要考慮更多的因素,如網絡配置、防火墻設置、安全性等。因此,在部署MySQL復制之前,請確保充分了解相關概念和最佳實踐,并根據實際需求進行適當的調整和優化。