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
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
# 編輯 root 的 crontab
crontab -e
# 每天凌晨 1:01 執行備份
1 1 * * * /root/mysql_dump/mysql_back.sh >/dev/null 2>&1
* * * * * command
分 時 日 月 周
* 表示任意值1 1 * * * = 每天 01:010 2 * * 0 = 每週日 02:00DB_LIST=("db1" "db2")rsync 或 scp 推送至異地存儲注意: 腳本中密碼明文存儲有風險,生產環境建議使用
~/.my.cnf配置客戶端認證,或使用密碼管理工具。