Ubuntu 16.04 使用cron定时备份mysql数据库

        在一次迁移数据库过程中,一不小心把用户相关的数据清空了,幸好只是在开发环境,影响不大,若是在生产环境,我可能就悲剧咯!
        所以不得不把数据库备份提上日程啦~~

背景及相关知识点

环境介绍

linux机器:Ubuntu 16.04
定时器:系统级定时器
数据库:直接部署在linux上,mysql8

知识点

linux 定时任务类别

linux 定时任务分为两种:

  1. 系统级
cat /etc/crontab
  1. 用户级
cat /usr/bin/crontab
定时任务定义格式

定时器格式如下:

.------------ minute (0-59) (* = every minute)
| .---------- hour (0-23) (* = every hour)
| | .-------- day of month (1-31) (* = every day)
| | | .------ month (1-12 or jan-dec) (* = every month)
| | | | .---- day of week (0-6 or mon-sun) (Sunday=0) (* = every day)
| | | | |
* * * * * command_to_run

ubuntu打开cron日志

  1. 进入整个系统日志目录
sudo vim /etc/rsyslog.d/50-default.conf

展示如下内容:

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log

重点可以看到#cron. /var/log/cron.log*

  1. 去掉cron.*相关的#,保存并退出
  2. 重启rsyslog服务
sudo service rsyslog restart 
  1. 查看cron日志
sodo cat /var/log/cron.log

crontab命令

查看系统的定时任务列表
cat /etc/crontab
查看当前用户的定时任务列表
crontab -l 
修改当前用户的定时任务列表
crontab -e

键入以上命令会,进入GNU nano模式,修改任务列表后执行保存退出操作(保存退出操作: CTRL+O Enter CTRL+X)

定时备份实现方式

系统级别定时任务

编写备份脚本

在/root/mysql/目录下,创建并编写备份脚本backup.sh

#!/bin/bash
mysqldump -uroot -p123456 db_pmp > /root/mysql/backup/db_pmp/$(date +%Y%m%d).sql
mysqldump -uroot -p123456 db_user > /root/mysql/backup/db_user/$(date +%Y%m%d).sql

修改系统级定时任务

  1. 修改/etc/crontab
vim /etc/crontab
  1. 加入备份定时任务
0 1 * * * root sh /root/mysql/backup.sh
  1. 查看是否添加成功
cat /etc/crontab

结果如下:

root@ubuntu:~# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0 1 * * * root sh /root/mysql/backup.sh

用户级别定时任务(待实现)

因为还没搞清楚目前系统的用户权限,倒腾半天没弄出来,有点遗憾。。。
TODO


后记:使用系统级别的定时任务定时备份mysql肯定是不好的,慎用!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值