MySQL雙主熱備是一種高可用性方案,在實際生產環境中得到了廣泛應用。但是,要保證這種方案的正確性,我們需要進行測試。
下面以CentOS 7操作系統和MySQL 5.7版本為例,介紹一下如何測試MySQL雙主熱備。
1. 準備兩臺機器,分別作為兩個MySQL節點。
Node A: IP地址:192.168.1.100 MySQL端口:3306 Node B: IP地址:192.168.1.101 MySQL端口:3307
2. 在兩個節點上安裝MySQL軟件,并保證兩個節點的MySQL版本一致。
$ sudo yum install mysql-server
3. 在Node A上創建一個數據庫test,并在其中創建一張表t1。
CREATE DATABASE test; USE test; CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) );
4. 在Node B上將Node A上的數據庫同步過來。
$ mysqldump -h192.168.1.100 -P3306 -uroot -p --single-transaction --master-data=2 test >test.sql $ mysql -h127.0.0.1 -P3307 -uroot -p test< test.sql
5. 在Node A和Node B上分別打開MySQL的二進制日志功能。
# 在my.cnf文件中添加以下配置 log-bin=mysql-bin server-id=1
6. 在Node A和Node B上分別創建一個用于MySQL復制的用戶。
CREATE USER repl@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
7. 在Node A上將Node B作為復制節點,同時記錄下master_log_file和master_log_pos的值。
CHANGE MASTER TO MASTER_HOST='192.168.1.101', MASTER_PORT=3307, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=426; START SLAVE; SHOW SLAVE STATUS\G
8. 在Node B上將Node A作為復制節點,同時記錄下master_log_file和master_log_pos的值。
CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=426; START SLAVE; SHOW SLAVE STATUS\G
9. 對Node A和Node B上的test庫中的t1表進行更新測試,檢查數據是否同步。
10. 對Node A進行壓力測試,模擬大量用戶并發訪問,檢查Node B是否正確切換為主節點。
11. 對Node B進行壓力測試,模擬大量用戶并發訪問,檢查Node A是否正確切換為主節點。
通過以上測試,可以保證MySQL雙主熱備方案的正確性和穩定性。