????????MySQL 主從復制是將主數據庫的變更自動同步到從數據庫的過程,常用語讀寫分離、高可用性和數據備份。
1.環境準備
????????確保主從服務器已安裝相同版本的 MySQL,并能通過網絡互相訪問。
# 檢查 MySQL 版本
mysql -V
2.配置主服務器
(1)編輯主服務器的配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)
[mysqld]
server-id = 1 # 唯一標識,建議使用IP地址的最后一個數
log-bin = mysql-bin # 啟用二進制日志
expire-logs-days = 10 # 二進制日志過期時間
?(2)重啟 MySQL 服務并驗證配置
sudo systemctl restart mysql
mysql -e "SHOW VARIABLES LIKE 'log_bin';" # 應顯示 ON
(3)?創建復制用戶
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
3.配置從服務器
(1)編輯從服務器的配置文件
[mysqld]
server-id = 2 # 唯一標識,不能與主庫重復
log-bin = mysql-bin # 從庫也可作為其他從庫的主庫時需要
read-only = 1 # 從庫設置為只讀(可選)
(2)重啟 MySQL 服務
sudo systemctl restart mysql
(3)連接從服務器到主服務器
在從服務器上執行以下命令,配置主從關系:
CHANGE MASTER TOMASTER_HOST='主服務器IP',MASTER_USER='repl_user',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001', # 替換為主服務器的日志文件名MASTER_LOG_POS=123456; # 替換為主服務器的日志位置START SLAVE;SHOW SLAVE STATUS\G;
檢查以下兩個狀態是否均為 Yes:Slave_IO_Running: Yes
Slave_SQL_Running: Yes