Ubuntu定时备份Mysql数据库数据

首先linux(ubuntu)服务器定时任务执行就有一个命令~~~~>crontab

crontab 简介:

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。

 crontab工作流程:

crontab是UNIX系统下定期执行任务的触发器。用户把要定期执行的任务记录在这个文件下面,然后crond定期的去检查这个定期执行列表,有要执行的工作时便自动执行。

备份Mysql有多种方法:我这里就使用~~~>mysqldump 

mysqldump简介:

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。​​​​​​

mysqldump工作流程:

1.调用FTWRL(flush tables with read lock),全局禁止读写
2.开启快照读,获取此时的快照(仅对innodb表起作用)
3.备份非innodb表数据(*.frm,*.myi,*.myd等)
4.非innodb表备份完毕后,释放FTWRL锁
5.逐一备份innodb表数据
6.备份完成。

我的例子需求:

定时备份数据库,每1小时备份一次,并将当前时间作为文件夹名称,我的是分布式,分了3个库,所以我就将这三个库放在该文件夹目录下面,由此,解决需求。

实例如下:

一丶创建shell脚本

#!/bin/sh
#将当前时间赋值给变量  datetimes
datetimes=$(date --date='0 days ago' "+%Y-%m-%d-%H:%M:%S")
#创建目录 
sudo	mkdir -p	/sqlRepository/$datetimes
#并赋予该目录所有者权限
sudo	chmod	777	$datetimes
#备份数据库
#命令介绍  用户名  密码   端口   数据库名   保存的文件路径  后缀为sql  
sudo	mysqldump -uroot -p123456 -P3306 mtqiushui.dispatching > /sqlRepository/$datetimes/mtqiushui.dispatching.sql
sudo	mysqldump -uroot -p123456 -P3306 mtqiushui.auth > /sqlRepository/$datetimes/mtqiushui.auth.sql
sudo	mysqldump -uroot -p123456 -P3306 mtqiushui.resources > /sqlRepository/$datetimes/mtqiushui.resources.sql
#自此后面的注释不用管,这是我之前写的,它的作用是每1小时创建新的备份,将老的备份删除
#if	[	-f "/sqlRepository/mtqiushui.dispatching.sql" ]
#then
#sudo	rm	-rf	/sqlRepository/mtqiushui.dispatching.sql
#mysqldump -uroot -p123456 -P3306 mtqiushui.dispatching > /sqlRepository/mtqiushui.dispatching.sql
#else
#sudo mysqldump	-uroot	-p123456 -P3306 mtqiushui.dispatching	>	/sqlRepository/mtqiushui.dispatching.sql
#fi
#if	[	-f "/sqlRepository/mtqiushui.auth.sql" ]
#then
#sudo	rm	-rf	/sqlRepository/mtqiushui.auth.sql
#mysqldump -uroot -p123456 -P3306 mtqiushui.auth > /sqlRepository/mtqiushui.auth.sql
#else
#sudo mysqldump	-uroot	-p123456 -P3306 mtqiushui.auth	>	/sqlRepository/mtqiushui.auth.sql
#fi
#if	[	-f "/sqlRepository/mtqiushui.resources.sql" ]
#then
#sudo	rm	-rf	/sqlRepository/mtqiushui.resources.sql
#mysqldump -uroot -p123456 -P3306 mtqiushui.resources > /sqlRepository/mtqiushui.resources.sql
#else
#sudo mysqldump	-uroot	-p123456 -P3306 mtqiushui.resources	>	/sqlRepository/mtqiushui.resources.sql
#fi

注意:这里首先你要先执行一下这个脚本,看是否报错。

如果报错,很可能是你编译该脚本时格式出错:

解决步骤:

1.sudo vim 脚本名称

2.按键盘的 i 键--然后Esc 终端左下角  :set  ff 

3.如果出现  dos  (就说明你的脚本格式不正确)

4.修改格式  : set ff = unix 回车之后   继续 Esc  :wq 保存

5.如果出现权限问题无法保存    就在 wq后面 加上 !

如果出现synix类似问题.很可能就是你的脚本里面语法有问题,自己检查解决

直至你的脚本运行没问题,再进行后面的步骤。

二丶书写定时配置:

去你的系统  /etc/目录下找到 crontab

1.编译

sudo  vim  crontab

2.书写定时配置

# /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 )
#我这里是每1小时执行一次
#注意语法格式 后面脚本目录必须 绝对路径 
*/60 *  * * *    root   /sqlRepository/sry.sh  
#

3.定时例子

   每五分钟执行  */5 * * * *

  每小时执行     0 * * * *

  每天执行       0 0 * * *

  每周执行       0 0 * * 0

  每月执行       0 0 1 * *

  每年执行       0 0 1 1 *

三丶根据你的系统可选

我的是Ubuntu 16.04版本,所以我的定时运行日志文件未打开,需要手动打开

另外  我的系统没有那个 service命令插件,需要另外命令进行操作

1.先打开日志,输入命令

sudo vim /etc/rsyslog.d/50-default.conf

2.找到 #cron.*   /var/log/cron.log

将前面那个注释去掉,保存并退出

3.如果系统没有service命令插件,就用我的方式重启,开启,关闭cron服务

#停止
/etc/init.d/cron stop
#开启
/etc/init.d/cron start
#重启
sudo /etc/init.d/cron restart

4.切记,如果修改了crontab这个文件,一定要重启cron服务,否则无效

5.查看定时任务日志文件

tail -f /var/log/cron.log

由此,需求解决~~~~折腾了一天半,很好!又磨练了我的性子。

明知路南偏偏行:

我从来都不会对自己失去一点点信心,因为我就是明知路南偏偏行~

如果有任何问题,欢迎指出来,一块讨论,有疑问加Q:2509647976 微:x331191249

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值