天天看点

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点每小时备份一次数据库

* 7-23/1 * * * /home/backup/db_bk/shell/bkDatabaseName.sh

#每天0点删除历史备份

* 0 */1 * * /home/backup/db_bk/shell/bk_rm.sh

继续阅读