crontab定时备份数据库

Posted 风吹头蛋凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crontab定时备份数据库相关的知识,希望对你有一定的参考价值。

为什么要备份数据库?

  • 保证数据的可恢复性
  • 防患于未然
  • 提升系统安全性

接下来就教大家如何通过crontab定时备份数据库

认识crontab

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务

使用crontab

  1. 首先创建一个bash 文件
    mkdir back.sh
  2. 编写 back.sh
#!/bin/bash
time=`date +%Y%m%d`
###################数据库配置信息#######################
user=数据库用户名
passwd=数据库密码
dbname=数据库名字
mysql_back_path=备份的数据文件存放地址
###################数据库配置信息#######################
mysqldump -u $user -p$passwd $dbname > $mysql_back_path/$time.sql

写好.bash.sh之后,可以用shell命令执行以下,如果没问题的话,再去使用定时命令
注意可能出现Warning: Using a password on the command line interface can be insecure
解决步骤:

  1. 修改etc/my.cnf 增加如下代码 ,此时备份数据会使用如下账号
[client]
host=localhost
user=root
password=123456

编写crontab定时任务

crontab -e

*/1 * * * * /bin/sh /www/back.sh

以上是每分钟备份的写法,具体可网上搜索crontab配置具体配置

等到定时任务执行,然后就可以看到生成的sql文件了,但是有时候会出现产生sql文件,但是文件无内容,空白,这是因为脚本执行mysqldump时,没有找到命令,这个时候就需要我们在脚本里指定命令路径。如下:
查询命令位置 whereis php

/usr/local/Cellar/mysql/5.7.22/bin/mysqldump -u u s e r − p user -p userppasswd $dbname > m y s q l b a c k p a t h / mysql_back_path/ mysqlbackpath/time.sql

查询执行日志

tail -f /var/log/cron       //查看最新的日志
tail -100 /var/log/cron     //查看最新的100条日志

以上是关于crontab定时备份数据库的主要内容,如果未能解决你的问题,请参考以下文章

crontab定时备份数据库

crontab定时备份数据库

linux crontab mysql定时自动备份

Crontab定时备份数据库

crontab+shell脚本实现定时备份mysql数据库

Linux crontab 定时任务命令详解