隨著業務擴展,手動掛載從庫效率低且易出錯。本文梳理自動化添加從庫的 7 步標準流程,適合構建 Ansible/Shell/Python 自動化腳本或平台化交付系統。
SHOW MASTER STATUS 獲取 File, Positionmysqldump --master-data=2 --single-transaction 導出含位點的全量備份[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
mysql -uroot -p < full_backup.sqlxtrabackup 物理備份加速大數據量場景GRANT REPLICATION SLAVE ON *.* TO 'backup'@'slave_ip' IDENTIFIED BY PASSWORD '*HASH';
FLUSH PRIVILEGES;
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;
START SLAVE;
SHOW SLAVE STATUS\G;
# 自動化腳本需輪詢檢查:
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
# Seconds_Behind_Master: 0
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。