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

Linux 下 MySQL 定時備份:crontab + mysqldump 自動化實戰

     編輯:MySQL 綜合教學

核心命令速查

單庫備份

mysqldump -u root -p'password' db_name > /backup/db_name_$(date +%F_%H%M%S).sql

單庫還原

mysql -u root -p'password' db_name < /backup/db_name_20240101_010000.sql

壓縮備份(推薦,壓縮比約 1:10)

mysqldump -u root -p'password' db_name | gzip > /backup/db_name_$(date +%F_%H%M%S).sql.gz

自動化備份腳本

#!/bin/bash
# /root/mysql_dump/mysql_back.sh

DB_NAME="cncounter"
DB_USER="root"
DB_PASS="mypasssecret"
BIN_DIR="/usr/bin"
BCK_DIR="/root/mysql_dump/data"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BCK_DIR"
"$BIN_DIR/mysqldump" --opt -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" \
  | gzip > "$BCK_DIR/${DB_NAME}_dump_${DATE}.sql.gz"

# 可選:刪除 7 天前備份
find "$BCK_DIR" -name "*.gz" -mtime +7 -delete

crontab 部署

# 編輯 root 的 crontab
crontab -e

# 每天凌晨 1:01 執行備份
1 1 * * * /root/mysql_dump/mysql_back.sh >/dev/null 2>&1

crontab 時間格式速記

*  *  *  *  *  command
分 時 日 月 周
  • * 表示任意值
  • 1 1 * * * = 每天 01:01
  • 0 2 * * 0 = 每週日 02:00

進階技巧

  • 多庫備份:腳本中循環數組 DB_LIST=("db1" "db2")
  • 遠程同步:備份完成後配合 rsync 或 scp 推送至異地存儲
  • 驗證備份可用性:定期在測試環境執行還原演練

注意: 腳本中密碼明文存儲有風險,生產環境建議使用 ~/.my.cnf 配置客戶端認證,或使用密碼管理工具。

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