序言
数据库数据备份尤为重要,而我们不会人工手动去备份,这样会很麻烦,我们都是通过服务器每日自定运行来做的,设置一个定时时间即可。我这里使用的是MariaDB数据库,mysql操作步骤一样。
查看mysqldump的位置
mysqldump是一个数据库备份程序,执行如下命令查看该程序的位置
结果
1 2
| [root@localhost ~]# whereis mysqldump mysqldump: /usr/bin/mysqldump /usr/share/man/man1/mysqldump.1.gz
|
可以看到mysqldump在目录 /usr/bin下,如果下面脚本的PATH中没有你自己查询到的这个路径,需要将该路径配置到PATH中。如果你的目录也是在/usr/bin目录下,那么不需要修改PATH路径
创建执行备份的脚本
1.创建并打开脚本
1
| vim /root/mariadb_backup.sh
|
2.编辑脚本,脚本内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin export PATH #数据库用户名 dbuser='root' #数据库密码 dbpasswd='root' #数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2 dbname='mysql03 db4' #备份时间 backtime=`date +%Y%m%d%H%M%S` #日志备份路径 logpath='/opt/mariadb_backup/log' if [ ! -d "$logpath" ]; then mkdir -p "$logpath" fi
#数据备份路径 datapath='/opt/mariadb_backup' if [ ! -d "$datapath" ]; then mkdir -p "$datapath" fi
#日志记录头部 echo ‘”备份时间为${backtime},备份数据库表 ${dbname} 开始” >> ${logpath}/mysqllog.log #正式备份数据库 for table in $dbname; do source=`mysqldump -u${dbuser} -p${dbpasswd} --single-transaction ${table}> ${datapath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log; #备份成功以下操作 if [ "$?" == 0 ];then cd $datapath #为节约硬盘空间,将数据库压缩 tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null #删除原始文件,只留压缩后文件 rm -f ${datapath}/${backtime}.sql echo “数据库表 ${dbname} 备份成功!!” >> ${logpath}/mysqllog.log else #备份失败则进行以下操作 echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log fi done
|
3.配置权限
1
| chmod +x mariadb_backup.sh
|
4.执行脚本
定时执行脚本
安装crontabs, crontab是用来定期执行程序的命令
添加定时任务
方便测试,定时任务每分钟执行一次
点击查看cron表达式资料
1
| */1 * * * * /root/mariadb_backup.sh
|
查看定时任务
进入备份文件夹目录,将压缩文件解压缩
1 2
| cd /opt/mariadb_backup tar jxvf mysql0320201201222301.tar.bz2
|
为了保证定时任务生效,可以重启定时任务
贴出主要的命令:
1 2 3 4
| service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置
|
为了保证定时任务能开机自启动,可以添加自启动
如果出现自启动失败的情况,可以参考下面的操作配置自启动
追加
1 2
| # auto start crond service service crond start
|