crontab定时备份数据库

  • Post author:
  • Post category:其他




为什么要备份数据库?

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

接下来就教大家如何通过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






u


s


e


r













p





passwd $dbname >



m

y

s

q

l

b

a

c

k

p

a

t

h

/

mysql_back_path/






m


y


s


q



l










b


















a


c



k










p


















a


t


h


/





time.sql



查询执行日志

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

在这里插入图片描述



版权声明:本文为qq_29974553原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。