MySQL 提供了 mysqldump 命令來實現導出數據庫,命令用法如下:
mysqldump -u root -p[password] [database_name] > [backup].sql
在 Linux 服務器中結合 crontab 定時命令實現定時備份數據庫,同時支持壓縮、備份日誌、定期清理等功能。
1. 備份執行腳本
新建 mysql 的備份命令腳本
$ vi db_backup.sql
複製以下內容:
#!/bin/bash
# 數據庫名稱
database_name="mydb"
mysql_password=""
# 備份文件保存地址
backup_dir="/mydata/backup/mydb"
# 備份文件名前綴
backup_prefix="demo"
# 備份文件的有效期,單位為day
backup_days="30"
dd=`date +%Y-%m-%d-%H-%M-%S`
backup_file="$backup_dir/$backup_prefix-$dd.sql"
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
mysqldump -u root -p$mysql_password $database_name > $backup_file
# 壓縮sql文件
gzip -f $backup_file
# 寫創建備份日誌
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
# 清除過期的文件
find $backup_dir -name "$backup_prefix*.sql.gz" -mtime +$backup_days -exec rm {} \;
至此,執行該腳本,可以生成壓縮的數據庫.sql文件
2. 定時任務
給 shell 設置執行權限:
$ chmod +x db_backup.sql
使用 crontab 命令定期執行腳本
# 編輯 cron 腳本文件
$ sudo crontab -e
在打開的配置文件中追加以下內容:
# 示例為每天凌晨2點30分執行備份腳本文件
# 注意修改要執行的腳本的路徑
30 2 * * * /root/bin/db_backup.sh
檢查定時任務:
$ crontab -l
# 結果會包含新增加的定時任務
# 30 2 * * * /root/bin/db_backup.sh
至此實現了定時備份 MySQL 數據庫功能。
注:該定時任務會在系統重啓後依舊保留,不用擔心重新設置