首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MySQL 主從庫配置之手工主從切換操作實戰

     編輯:Java 綜合教學

MySQL 主從庫配置之手工主從切換操作實戰

環境資訊

  • 主庫:192.168.1.60:3306 (db1)
  • 備庫:192.168.1.61:3306 (db2)
  • Replication 用戶:rep1 / rep1abcd1243d

切換步驟

1. 確認雙向建立 Replication 用戶

CREATE USER 'rep1'@'%' IDENTIFIED BY 'rep1abcd1243d';
GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'%';

2. 檢查從庫狀態

SHOW SLAVE STATUS\G

3. 檢查主庫狀態

SHOW SLAVE HOSTS;

4. 從庫:停止 IO_THREAD

STOP SLAVE IO_THREAD;
SHOW SLAVE STATUS\G  -- 確認 Slave_IO_Running: No, Slave_SQL_Running: Yes

5. 激活從庫為新主庫(於從庫執行)

STOP SLAVE;
RESET MASTER;
RESET SLAVE ALL;
SHOW BINARY LOGS;  -- 確認 bin-log.000001, 120 bytes

注意:RESET SLAVE ALL 會刪除 replication 參數,SHOW SLAVE STATUS 將回傳空結果。

6. 原主庫改為從庫

CHANGE MASTER TO 
    MASTER_HOST='192.168.1.61', 
    MASTER_PORT=3306, 
    MASTER_USER='rep1', 
    MASTER_PASSWORD='rep1abcd1243d', 
    MASTER_LOG_FILE='bin-log.000001', 
    MASTER_LOG_POS=120;
START SLAVE;
SHOW SLAVE STATUS\G

7. 遇到連線錯誤排查

db1 日誌報錯:Error_code: 1045,連線被拒。排查發現 db2 存在匿名用戶(User=''),導致連線嘗試匹配匿名用戶而非 rep1。解決:

DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

刪除匿名用戶後重試,同步恢復正常。

數據驗證

新主庫 db2 插入測試資料:

INSERT INTO test_sr(id) VALUES(30);
SELECT * FROM test_sr ORDER BY id DESC LIMIT 1;

舊主庫 db1 驗證同步:

SELECT * FROM test_sr ORDER BY id DESC LIMIT 1;

雙端資料一致,主從切換成功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved