資料庫-每日自動備份-Ubuntu-MariaDB
今天來實做一個備份任務,要在 Ubuntu 上設定每日凌晨 4:00 自動備份 MariaDB 中的所有資料庫,我們可以使用 cron
和一個自定義的 Shell 腳本來完成這個任務,以下是詳細步驟和代碼:
步驟 1:創建備份腳本
先創建一個備份 Shell Script,這個腳本將備份所有資料庫並分開儲存。
1.在 /usr/local/bin
目錄下創建一個新的 Shell 腳本:
sudo nano /usr/local/bin/backup_mariadb.sh
2. Script 的內容指令如下
#!/bin/bash # 設定資料庫的用戶名和密碼 DB_USER="your_db_user" DB_PASSWORD="your_db_password" DB_HOST="10.0.0.1" # 設定備份儲存目錄 BACKUP_DIR="/path/to/backup/dir" mkdir -p $BACKUP_DIR # 獲取當前日期和時間 CURRENT_DATE=$(date +%Y-%m-%d-%H-%M-%S) # 獲取所有資料庫名稱 DATABASES=$(mysql -h$DB_HOST -u$DB_USER -p$DB_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database) # 備份每個資料庫 for DB in $DATABASES; do if [[ "$DB" != "information_schema" && "$DB" != "performance_schema" && "$DB" != "mysql" && "$DB" != "sys" ]]; then BACKUP_FILE="$BACKUP_DIR/$CURRENT_DATE-$DB.sql" mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASSWORD --databases $DB > $BACKUP_FILE fi done
其中要修改的有
- DB_HOST : 要改成自己的
- your_db_user : 資料庫中有備份權限的使用者 ID
- your_db_password : 密碼
- BACKUP_DIR=”/path/to/backup/dir” : 要改成你要存放的路徑,像是 /var/backup_db/
3.將 .sh 變成可執行擋
sudo chmod +x /usr/local/bin/backup_mariadb.sh
步驟 2:設置 Cron 任務
1.打開 cron
crontab -e
2.加入設定內容,要注意的是實間是主機時間,通常主機是 UTC+0 的時區,要注意轉換,才會是正確的當地時間,可以參考這篇
0 4 * * * /usr/local/bin/backup_mariadb.sh
這樣就會在每天的早上四點去備份資料庫了
加入每一個SQL檔案都可以被壓縮的功能
程式碼區塊要改成下面這一個
# 備份每個資料庫並壓縮 for DB in $DATABASES; do if [[ "$DB" != "information_schema" && "$DB" != "performance_schema" && "$DB" != "mysql" && "$DB" != "sys" ]]; then BACKUP_FILE="$BACKUP_DIR/$CURRENT_DATE-$DB.sql" ZIP_FILE="$BACKUP_DIR/$CURRENT_DATE-$DB.zip" mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASSWORD --databases $DB > $BACKUP_FILE zip $ZIP_FILE $BACKUP_FILE rm $BACKUP_FILE fi done
刪除舊資料
可以利用下面的指令,放在程式碼的最後面
# 刪除兩天前的備份文件 find $BACKUP_DIR -type f -name "*.zip" -mtime +2 -exec rm {} \;
需要改時間的話,只要修正 -mtime +2 ,把+2改成自己需要的時間
近期留言