Linux系统设置自动备份mysql数据库

写在前面:

为了保证数据库容灾性,定期对数据库数据进行备份是十分重要的。

备份数据的基本思路是将数据库中的数据导出保存到其他位置,每隔一段时间便进行一次导出,以保证数据的完整。为了让数据能够定期保存,利用Linux的Crontab自动执行Bash脚本以达到自动备份的要求。


第一步:选择位置创建数据保存的文件夹

选择指定位置创建文件夹mysqlbackup文件夹

cd ~
mkdir mysqlbackup

 然后创建保存数据和保存日志的文件夹,并对当前用户进行授权。

#进入 mysqlback 文件夹
cd mysqlback

#创建备份数据文件夹
mkdir backup_data

#创建备份日志文件夹
mkdir backup_logs

#对当前用户授予对文件夹的写入权限
sudo chmod u+w backup_data
sudo chmod u+w backup_logs

第二步:编写Bash脚本

vim mysqlbackup.sh
#!/bin/bash
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd='root'
#需要备份的数据库,多个数据库用空格分隔
dbname='TestData'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/root/mysqlbackup/backup_logs'
#数据备份路径
datapath='/root/mysqlbackup/backup_data'
#备份数据
mysqldump -u ${dbuser} -p${dbpasswd} ${dbname} > "${datapath}/${dbname}"-"${backtime}.sql" 2>> ${logpath}/mysqllog.log;
#若备份成功则进行进行数据压缩
if [ "$?" == 0 ];then
cd $datapath
#将数据压缩节省存储空间
tar jcf "${dbname}"-"${table}"-"${backtime}.tar.bz2" "${dbname}"-"${backtime}.sql" > /dev/null
#删除原始文件,只留压缩后文件
rm -f "${datapath}/${dbname}"-"${backtime}.sql"
#删除七天前备份,也就是只保存7天内的备份
find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo ${backtime}-"数据库 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
else
#否则,备份失败则进行以下操作
echo ${backtime}-"数据库 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
fi

脚本编辑完成后,先执行脚本测试是否能够成功运行

./mysqlbackup.sh

若正常执行,则控制台无信息输出,在 backup_data 和 backup_logs 文件夹中可查看到 tar.bz2 和 log 文件

第三步:设置Crontab进行定期执行

crontab -e

打开当前用户的crontab表,编辑格式可参考/etc/crontab中的格式。

 下图为来自百度百科的Crontab文件格式说明:

附:

1、查看CronTab日志

sudo cat /var/log/cron

 2、Chmod

语法:

chmod [-cfvR] [--help] [--version] mode file...

参数说明:

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

 写在最后:

在Centos和Ubuntu系统下都有测试过,这个方式都可以使用,Bash脚本参考https://blog.csdn.net/lwwl12/article/details/83214651

发布了29 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42404727/article/details/89337549