我是靠谱客的博主 灵巧钢铁侠,最近开发中收集的这篇文章主要介绍mysql数据库定时备份_MySQL数据库的定时自动备份,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

昨天做了MySQL数据库的备份基本操作的实验,今天试一下MySQL数据库的定时自动备份。

大概思路就是,首先为备份文件单独创建一个目录,然后再目录下创建Shell脚本里写上执行数据库备份的命令,并且给这个Shell脚本添加可执行的权限,最后给这个Shell脚本添加到crond计划任务,让它每天定时执行。

1、首先进入home目录,创建一个mysqlBackup的目录,然后进入这个目录

bcbf30c7cbc4954825d66f48b12c8b67.png

2、创建一个.sh后缀的文件,

d153e9a0811817bca0e30dbac900389c.png

3、编辑Shell脚本,备份所有数据库到/home/mysqlBackup目录下,并命名为Back_年月日_时分秒.sql

924c95cf7ab689e43add128546185eb1.png

4、为备份文件添加X执行操作,并且我取消了同组、其他用户的读权限,因为脚本里面有数据库密码=..=

3f468d7323ee53fdd558064c5ad150c9.png

5、执行一下康康

7ec89d0bd5762713b5cd6cd72a18e80c.png

成功了

6、下面删俩库,拿这个恢复备份测试一下

当前状态:

443436ce26da5d09d4c51594d4e74966.png

把两测试用的库删了

de433fc64cb07f86b798604153c7d321.png

恢复备份

c74ff5f70d5faec36a433bdd18fc7389.png

但是这里报错了,我又试了一下手工备份,发现是可以恢复的

91b6cba9ff21a437d4f9860d0f1f7677.png

这个问题花了我半天时间,最后发现原因是出在了脚本上,脚本里面的sql语句是将密码直接写在了参数-p 后面,而之前的操作都是-p后面没有输入密码通过后面密码出入窗输入的。

下面对比一下不直接输入密码和直接输入密码生成的两个文件a.sql和b.sql

dccfac08aa5cd5d5846ccbf2118547d5.png

下面图片可以明显看出来a.sql文件文件大小为849000+,而b.sql只有203

6d783eb9f9c885115521eb514539821f.png

所以想要用.sh完成备份数据库就需要解决脚本与服务器输入数据库密码这个交互的过程,我觉得用expect这个工具应该也是可以实现的,但我搜了一波别人是怎解决的发现,发现好像别人的脚本里都是将一些数据库的信息赋值给了变量,然后调用变量来备份的,然后我修改了一下Shell脚本。

3a4352643de3007a1455557af3164616.png

这次执行也报错了

ab1727dfa306bbc60d2e73f8fed245e7.png

原因是因为在MySQL5.6之后版本的数据库的安全机制,大概意思就是在命令行使用密码可能不安全,所以这个也是用不了的。

解决这个问题需要修改数据库的my.cnf配置文件

80c6869fc908a813395a5e24c040a37f.png

这样备份数据库可以使用:

mysqldump --defaults-extra-file=/etc/my.cnf --all-databases > bak.sql

还原备份也可以用:

mysql --defaults-extra-file=/etc/my.cnf < bak.sql;

其实回复备份呢,输密码也无所谓了

1ea8ba96aa59751dac917df67b22773e.png

然后再编辑一个.sh脚本

7f74e87faa14ad063ec66e51868d6915.png

添加权限执行一下

738e2c0c6ccef1817f2f202b87003e49.png

2e26daae1a78e181a2e73015edf76d79.png

这次测试一下能不能还原,添加一个数据库

6351ba35be912873c5b99677f195d083.png

进行备份

20d8e0d07e66688eebc9ad977bc12210.png

删除测试的数据库

9224be49588de5e636b54131aa285700.png

用不输入密码的方式试一下能不能恢复备份

728828c099940703fde4145026dde9fc.png

这样被删除的数据库就已经恢复了

7、将Shell脚本添加到计划任务

首先看一下crond的状态,发现是开着的

211f8709341d1f181026f395bbb2cd62.png

然后编辑/etc/crontab这个文件,将shell脚本添加到配置文件中

d6af8667e7087a9cf8f58c127c7a1045.png

这个规则也比较简单

*    *    *    *    *    用户 脚本

*表示一个小时的第几分钟,可以输入0-59

*表示一天的第几个小时,可以输入0-23

*表示一个月的第几天,可以输入1-31

*表示一年的第几个月,可以输入1-12

*表示星期几,可以输入0-6,0或者7表示周日

0    2    *    *    *    用户    脚本    //表示每天两点执行

0    2    *    *    7    用户    脚本    //表示每周日两点执行

0    2    10,20,30    *    *    用户    脚本    //表示每周月10号、20号、30号执行

*/1  *    *    *    *    用户    脚本    //每分钟执行一次

0    *    *    *    *    用户    脚本    //表示每天整点执行

然后星期几的那个和与月日感觉不是很搭,还是看自己需要吧

下面试一下,先把备份删了,然后定个时试执行备份脚本

c8b3f71b733f7f4894ebe02b1f624dad.png

现在是38,定个40看看

ed53d194382f852cad54415585f545fd.png

诶,成功了

97ecee41b7089bde1c11dd3acfc75b24.png

总结一下就是

1、将密码写在数据库配置文件my.cnf中(或许还有其他更好的办法)

2、使用Shell脚本编写备份语句,并且给这个shell脚本可以执行的权限

3、通过crond计划任务,定时执行Shell脚本

但是这样会不会不符合数据保密性呢?

817407cce51ceced32eddb12b6d1ecda.png

最后

以上就是灵巧钢铁侠为你收集整理的mysql数据库定时备份_MySQL数据库的定时自动备份的全部内容,希望文章能够帮你解决mysql数据库定时备份_MySQL数据库的定时自动备份所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部