MySQL的主備(主從)配置是一種常見的數據高可用性和數據備份方案,主要用於實現數據的實時複製,確保數據的一致性和系統的容錯能力。下面我將詳細介紹如何配置MySQL的主備環境。
1.1、 環境準備
確保你的服務器上已經安裝了MySQL,並且至少有兩台服務器,一台作為主服務器(Master),另一台作為從服務器(Slave)。
2. 配置主服務器(Master)
修改配置文件
在主服務器的MySQL配置文件(通常是my.cnf或my.ini)中添加或修改以下配置:
[mysqld]
server-id = 1 # 唯一的服務ID,Master設為1
log-bin = mysql-bin # 啓用二進制日誌
binlog-do-db = your_database # 需要複製的數據庫名,如果要複製所有數據庫,可以使用 *
重啓mysql服務
systemctl restart mysqld
創建複製用户
登錄MySQL,創建一個用於複製的專用用户:
# 創建用户並設置密碼
# 創建一個名為 replicator 的用户,@'%' 表示該用户可以從任何主機(遠程或本地)連接數據庫 IDENTIFIED BY 'password'•:為用户設置密碼為 password
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
# MySQL 中用於配置複製權限的 SQL 命令,命令解析如下:
# GRANT REPLICATION SLAVE•:授予複製權限,允許用户進行數據同步操作。
# ON *.*:表示對所有數據庫和表生效。
# TO 'replicator'@'%':將權限授予用户 replicator,並允許該用户從任何主機連接(% 表示任意主機)
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES; # 配置生效
查看二進制日誌位置和文件名
SHOW MASTER STATUS;
記錄下File和Position的值,稍後配置從服務器時會用到。
3. 配置從服務器(Slave)
修改配置文件
在從服務器的MySQL配置文件中添加或修改以下配置:
[mysqld]
server-id = 2 # 唯一的服務ID,Slave設為2,與Master不同
relay-log = slave-relay-bin # 中繼日誌文件名,可選配置
read_only = 1 # 從服務器設置為只讀模式,可選配置,防止誤操作修改數據
重啓MySQL服務
systemctl restart mysqld
配置複製源(Slave連接Master)
CHANGE MASTER TO
MASTER_HOST='master_ip', # 主服務器IP地址
MASTER_USER='replicator', # 複製用户名稱
MASTER_PASSWORD='password', # 複製用户密碼
MASTER_LOG_FILE='mysql-bin.000001', # 從SHOW MASTER STATUS得到的File值
MASTER_LOG_POS=123; # 從SHOW MASTER STATUS得到的Position值
注意替換master_ip、password、mysql-bin.000001和123為實際的IP地址、密碼和日誌位置。
啓動複製線程
啓動複製線程:START SLAVE;
查看從庫狀態:SHOW SLAVE STATUS\G;
檢查Slave_IO_Running和Slave_SQL_Running兩個字段是否都為Yes,以確認複製正常運行。
4、測試和驗證配置
無論風雨,和自己一決勝負吧