博客 / 詳情

返回

定時備份MySQL數據庫

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 數據庫功能。

注:該定時任務會在系統重啓後依舊保留,不用擔心重新設置

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.