MySQL主從復制(Master-Slave Replication)是一種常見的數據同步機制,它允許將一個MySQL數據庫服務器(主庫)的數據實時復制到一個或多個MySQL數據庫服務器(從庫)。主從復制的主要用途包括:
本文將詳細介紹如何快速搭建MySQL主從復制架構。
在開始搭建主從復制架構之前,需要準備以下環境:
首先,在主庫服務器上修改MySQL的配置文件(通常為/etc/my.cnf或/etc/mysql/my.cnf),添加或修改以下配置項:
[mysqld]
server-id=1 # 主庫的唯一標識,必須為1
log-bin=mysql-bin # 啟用二進制日志
binlog-format=ROW # 設置二進制日志格式為ROW
expire_logs_days=7 # 設置二進制日志的過期時間
max_binlog_size=100M # 設置每個二進制日志文件的最大大小
binlog-do-db=your_database_name # 指定需要復制的數據庫,如果不指定則復制所有數據庫
修改完配置文件后,重啟MySQL服務以使配置生效:
sudo systemctl restart mysqld
在主庫上創建一個用于復制的用戶,并授予復制權限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
在主庫上執行以下命令,獲取主庫的二進制日志文件名和位置:
SHOW MASTER STATUS;
記錄下File和Position的值,后續在從庫配置時會用到。
在從庫服務器上修改MySQL的配置文件,添加或修改以下配置項:
[mysqld]
server-id=2 # 從庫的唯一標識,必須與主庫不同
relay-log=mysql-relay-bin # 啟用中繼日志
read_only=1 # 設置從庫為只讀模式
修改完配置文件后,重啟MySQL服務以使配置生效:
sudo systemctl restart mysqld
在從庫上執行以下命令,配置從庫復制:
CHANGE MASTER TO
MASTER_HOST='主庫IP地址',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='主庫的File值',
MASTER_LOG_POS=主庫的Position值;
在從庫上啟動復制進程:
START SLAVE;
在從庫上執行以下命令,檢查從庫的復制狀態:
SHOW SLAVE STATUS\G;
確保Slave_IO_Running和Slave_SQL_Running的值都為Yes,表示復制進程正常運行。
在主庫上創建一個測試數據庫,并插入一些數據:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'Alice'), (2, 'Bob');
在從庫上查詢測試數據庫,驗證數據是否同步:
USE test_db;
SELECT * FROM test_table;
如果從庫上能夠查詢到與主庫相同的數據,說明主從復制配置成功。
主從復制延遲是指從庫的數據同步滯后于主庫。常見原因包括:
解決方法:
主從復制中斷可能是由于以下原因:
解決方法:
mysqldump工具導出主庫數據并導入到從庫。通過本文的介紹,您已經了解了如何快速搭建MySQL主從復制架構。主從復制不僅可以提高數據庫的可用性和性能,還能為數據備份和災難恢復提供保障。在實際生產環境中,建議定期監控主從復制的狀態,及時發現并解決問題,確保數據同步的穩定性和可靠性。
希望本文對您有所幫助,祝您在MySQL主從復制的實踐中取得成功!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。