Linux中mysql数据库的自动备份策略

思路:
挂载云数据盘用来做数据备份;
编写shell脚本备份数据到数据盘,并删除历史备份文件;
利用crontab建立计划任务,执行上述脚本;

1.挂载云数据盘

#查看数据盘信息,比如数据盘是/dev/vdb
fdisk -l
#对数据盘分区
fdisk /dev/vdb 
#按照界面的提示,依次输入“n”(新建分区)、“p”(新建主分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“wq”(保存分区表),回车开始分区。
#格式化分区为ext3格式
mkfs.ext3 /dev/xvdb1
#创建备份目录
mkdir /home/backup
#挂载目录
mount /dev/vdb1 /home/backup

2.编写shell脚本备份数据到数据盘,并删除历史备份文件

  • 备份数据到数据盘
    cd /home/backup
    vi bkDatabaseName.sh

#!/bin/bash
nowHour=$(date +%H)
if [ $nowHour -gt 6 ] && [ $nowHour -lt 23 ]
then
mysqldump -uroot -pdatabasePwd bkDatabaseName1 > /home/backup/db_bk/bkDatabaseName1_$(date +%Y%m%d_%H%M%S).sql
sleep 1m
mysqldump -uroot -pdatabasePwd bkDatabaseName2 > /home/backup/db_bk/bkDatabaseName2_$(date +%Y%m%d_%H%M%S).sql
fi

chmod u+x bkDatabaseName.sh
#测试
sh bkDatabaseName.sh

  • 删除历史备份文件

    vi bk_rm.sh

    #!/bin/bash
    #7天前日期
    delDate=`date +%Y%m%d  -d "-7 days"`
    #echo $delDate
    #查询并删除7天前备份数据
    find /home/backup/db_bk -name "*${delDate}*" -exec rm {} \;

    3.计划任务

crontab -e

#每天7-23点每小时备份一次数据库
0 7-23/1 * * * /home/backup/db_bk/shell/bkDatabaseName.sh
#每天0点删除历史备份
0 0 */1 * * /home/backup/db_bk/shell/bk_rm.sh

猜你喜欢

转载自blog.csdn.net/hanjingjava/article/details/81076260