首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 本地與雙機互備 Shell 腳本設計解析

     編輯:MySQL 資料庫相關知識

腳本定位

mysqldump_all.sh:支援三種模式的備份自動化腳本——first(遠端初始化建庫)、local(本地壓縮備份)、無參數(遠端同步備份)。

關鍵配置變數

REMOTE_HOST=""        # 遠端主機 IP/主機名
REMOTE_PASSWORD=""    # 遠端 MySQL root@本機 密碼
DB_PATH="/var/lib/mysql"
LOCAL_PASSWORD=""     # 本地 MySQL root 密碼
DB_BACKUP_PATH="/root/db_bk"
NO_BACKUP_DB=""       # 排除庫,空格分隔,如 "test mysql information_schema"

執行流程邏輯

  1. 遍歷 $DB_PATH 下一級目錄作為資料庫名。
  2. 排除 NO_BACKUP_DB 列表與非目錄項目。
  3. 依模式分支:
    • first:遠端 mysqladmin create db 建庫。
    • local:本地 mysqldump | gzip,保留上一版 .1.gz。
    • 預設:mysqldump --add-drop-table | mysql -h $REMOTE_HOST 管道同步至遠端。

使用範例

# 1. 首次建立遠端鏡像庫
./mysqldump_all.sh first

# 2. 日常本地備份(可加入 crontab)
./mysqldump_all.sh local

# 3. 日常遠端同步備份
./mysqldump_all.sh

安全與健壯性建議

  • 密碼明文寫在腳本中風險極高,建議改用 --defaults-extra-file 指向 chmod 600 的 .my.cnf。
  • 遠端同步模式無 --single-transaction,InnoDB 可能出現不一致,建議加入。
  • 缺乏錯誤碼檢查與日誌記錄,生產環境需加強。
  • 遠端帳號需具備 CREATE、DROP、INSERT 等權限,遵循最小權限原則建立專用備份帳號。

適用場景

中小型 MyISAM/InnoDB 混合環境、單向異地備份、無專業備份工具授權的團隊快速落地方案。

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