在 Ubuntu 上構建 MySQL 每日自動備份,核心組件:mysqldump 導出 + crontab 定時調度。以下為最小可用配置:
mkdir -p /mysqldata
cat > /usr/sbin/bakmysql <<'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump --all-databases -uroot -p'YourPassword' > /mysqldata/mysql_${DATE}.sql
# 單庫備份替換 --all-databases 為 dbname
EOF
chmod +x /usr/sbin/bakmysql
# 編輯系統 crontab
echo "0 3 * * * root /usr/sbin/bakmysql" >> /etc/crontab
# 每日 03:00 執行(避開業務高峰)
# 重啟 cron 服務
systemctl restart cron
mysqldump ... | gzip > /mysqldata/mysql_${DATE}.sql.gz,節省 70%+ 空間。scp /mysqldata/mysql_${DATE}.sql.gz user@backup-server:/path/。find /mysqldata -name "mysql_*.sql.gz" -mtime +7 -delete 保留 7 天。gunzip -c backup.sql.gz | mysql -uroot -p test_db 驗證可還原性。--single-transaction --master-data=2 獲得不加鎖一致性快照。mysqldump: command not found → 腳本用絕對路徑 /usr/bin/mysqldump 或導出 PATH。-p'Pass#$%',或用 --defaults-extra-file=/root/.my.cnf 讀取配置文件。df -h /mysqldata。