mysql.example.com)、Database、User、Password。ssh user@yourdomain.com~/backups):mkdir -p ~/backups && cd ~/backups
3. 執行 mysqldump:mysqldump -h mysql.example.com -u db_user -p db_name > backup_$(date +%F).sql
4. 輸入密碼,等待完成。檔案將在 ~/backups。
壓縮版:mysqldump -h mysql.example.com -u db_user -p db_name | gzip > backup_$(date +%F).sql.gz
mysql -h mysql.example.com -u db_user -p db_name
4. 執行還原:SOURCE backup_2024-01-15.sql;
5. 等待完成,輸入 EXIT; 離開。
非互動單行指令:mysql -h mysql.example.com -u db_user -p db_name < backup_2024-01-15.sql
| 錯誤 | 原因與解法 |
|---|---|
| Access denied | 帳密錯誤、Host 不允許 → 確認 DreamHost 資料庫主機名、用戶權限 |
| Unknown database | 資料庫名拼寫錯誤、大小寫 |
| Packet too large | 單條 INSERT 過大 → mysqldump --max_allowed_packet=512M、mysql --max_allowed_packet=512M |
| Timeout | 大資料庫匯出超時 → 分表備份、加 --quick、或用實體備份工具 |
# ~/backup_mysql.sh
#!/bin/bash
DATE=$(date +%F)
mysqldump -h mysql.example.com -u db_user -p'password' db_name | gzip > ~/backups/db_$DATE.sql.gz
# 保留 30 天
find ~/backups -name 'db_*.sql.gz' -mtime +30 -delete
加入 crontab -e:0 3 * * * ~/backup_mysql.sh(每天凌晨 3 點備份)。