- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
mysql備份腳本參考
藍隊云小課堂:
在操作數據過(guò)程中,可能會(huì )導致數據錯誤,甚至數據庫奔潰,而有效的定時(shí)備份能很好地保護數據庫。本篇文章主要給出一個(gè)可一作為參考的數據庫備份腳本。
#!/bin/bash
# 設置MySQL用戶(hù)名和密碼
MYSQL_USER="your_mysql_user"
MYSQL_PASSWORD="your_mysql_password"
# 獲取當前日期
CURRENT_DATE=$(date +"%Y%m%d")
# 設置備份目錄
BACKUP_DIR="/home/backup/$CURRENT_DATE"
# 設置日志文件
LOG_FILE="/home/mysqlbackup_log/backup_log_$CURRENT_DATE.txt"
# 創(chuàng )建備份目錄和日志目錄(如果不存在)
mkdir -p $BACKUP_DIR
mkdir -p $(dirname $LOG_FILE)
# 獲取MySQL所有數據庫列表,排除Database|information_schema|performance_schema|mysql四個(gè)mysql自帶數據庫
DATABASES=$(mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)")
# 檢測磁盤(pán)空間,確保至少有1GB的空間
MIN_DISK_SPACE=1024000
AVAILABLE_SPACE=$(df -P $BACKUP_DIR | awk 'NR==2 {print $4}')
if [ $AVAILABLE_SPACE -lt $MIN_DISK_SPACE ]; then
# 刪除最老的備份文件,直到騰出足夠的空間
while [ $AVAILABLE_SPACE -lt $MIN_DISK_SPACE ]; do
OLDEST_FILE=$(ls -1t $BACKUP_DIR | grep ".gz" | tail -n 1)
rm $BACKUP_DIR/$OLDEST_FILE >> /dev/null
AVAILABLE_SPACE=$(df -P $BACKUP_DIR | awk 'NR==2 {print $4}')
done
fi
# 循環(huán)備份每個(gè)數據庫,并將輸出寫(xiě)入日志文件
for DB in $DATABASES
do
# 設置備份文件名
BACKUP_FILE="$BACKUP_DIR/$DB-$CURRENT_DATE.sql"
# 導出數據庫
mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $DB > $BACKUP_FILE >> /dev/null
# 壓縮備份文件
gzip $BACKUP_FILE
# 刪除原始的非壓縮備份文件
rm $BACKUP_FILE >> /dev/null
# 記錄備份過(guò)程到日志文件
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Backup completed for database: $DB" >> $LOG_FILE
done
# 記錄備份完成信息到日志文件
echo "[$(date +"%Y-%m-%d %H:%M:%S")] Backup process completed." >> $LOG_FILE
# 加入計劃任務(wù),每天執行,輸出信息保存在/home/backup/logs/mysql_outlog文件中
# crontab -e
# 0 0 * * * bash -c /home/scripts/mysqlautobackup.sh >> /home/backup/logs/mysql_outlog
更多小知識,可聯(lián)系藍隊云一起探討。
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP