萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 自動化添加從庫部署思路與腳本化實踐

MySQL 從庫自動化部署:從 0 到 1 的標準化流程設計

隨著業務擴展,手動掛載從庫效率低且易出錯。本文梳理自動化添加從庫的 7 步標準流程,適合構建 Ansible/Shell/Python 自動化腳本或平台化交付系統。

自動化部署 7 步驟

  1. 環境檢查與安裝
    • 自動安裝 MySQL(版本 ≥ Master,確保向下兼容)
    • 檢測現有實例版本、配置、數據目錄
  2. 獲取 Master 基準數據
    • 遠程執行 SHOW MASTER STATUS 獲取 File, Position
    • 或使用 mysqldump --master-data=2 --single-transaction 導出含位點的全量備份
  3. 渲染從庫配置文件
    [mysqld]
    server-id={{ auto_increment_id }}  # 全局唯一,可用 IP 最後段+隨機數生成
    replicate-wild-do-table=business.%
    replicate-wild-ignore-table=mysql.%,information_schema.%,performance_schema.%,sys.%
    read_only=1
    relay_log_purge=0
    skip_slave_start
    
  4. 導入全量備份
    • mysql -uroot -p < full_backup.sql
    • 或使用 xtrabackup 物理備份加速大數據量場景
  5. Master 授權從庫訪問
    GRANT REPLICATION SLAVE ON *.* TO 'backup'@'slave_ip' IDENTIFIED BY PASSWORD '*HASH';
    FLUSH PRIVILEGES;
    
  6. 配置復制連線參數
    
    CHANGE MASTER TO
      MASTER_HOST='master_ip',
      MASTER_USER='backup',
      MASTER_PASSWORD='plain_password',  # 或使用 MASTER_PASSWORD 明文
      MASTER_PORT=3306,
      MASTER_LOG_FILE='mysql-bin.000010',
      MASTER_LOG_POS=399387901,
      MASTER_CONNECT_RETRY=10;
    
  7. 啟動復制與驗證
    
    START SLAVE;
    SHOW SLAVE STATUS\G;
    # 自動化腳本需輪詢檢查:
    # Slave_IO_Running: Yes
    # Slave_SQL_Running: Yes
    # Seconds_Behind_Master: 0
    

關鍵自動化設計點

  • 冪等性:腳本可重複執行不產生副作用(如重複授權、重複 CHANGE MASTER)
  • 版本兼容:檢測 Master/Slave 版本差異,自動調整參數(如 GTID 模式)
  • 密碼管理:對接 Vault/密碼中心,避免明文寫入腳本
  • 監控整合:部署完成自動註冊 Prometheus/MySQL Exporter 監控
  • 回滾機制:失敗自動清理已建實例、撤銷授權、發送告警

生產環境擴展:GTID 模式簡化流程

MySQL 5.6+ 啟用 GTID 後,步驟 2/6 可合併:


CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='backup',
  MASTER_PASSWORD='pwd',
  MASTER_AUTO_POSITION=1;  # 無需指定 File/Position

極大降低位點管理複雜度,推薦生產環境全面遷移 GTID。

copyright © 萬盛學電腦網 all rights reserved