MySQL数据库的定时自动备份 - 海龙。

hai-long 2021-12-10 原文


MySQL数据库的定时自动备份


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

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

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

 

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

 

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

 

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

 

  5、执行一下康康

 

 

 成功了

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

当前状态:

 

 把两测试用的库删了

 

 恢复备份

 

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

 

 

 

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

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

 

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

 

 

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

 

 

 

 这次执行也报错了

 

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

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

 

 

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

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

还原备份也可以用:

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

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

 

 

 然后再编辑一个.sh脚本

 

 添加权限执行一下

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

 

进行备份

 

 删除测试的数据库

 

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

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

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

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

 

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

 

 这个规则也比较简单

*    *    *    *    *    用户 脚本

*表示一个小时的第几分钟,可以输入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    *    *    *    *    用户    脚本    //表示每天整点执行

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

 

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

 

 现在是38,定个40看看

 

 诶,成功了

 

总结一下就是

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

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

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

 

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

 

发表于
2020-04-14 01:53 
海龙。 
阅读(7172
评论(0
编辑 
收藏 
举报

 

版权声明:本文为hai-long原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hai-long/p/12690768.html

MySQL数据库的定时自动备份 - 海龙。的更多相关文章

  1. Hydra-爆破神器的用法 – 一颗尘土

    Hydra-爆破神器的用法 一、简介 Hydra(九头蛇海德拉)是希腊神话之中的一个怪兽,以九个头闻名于世。拥 […]...

  2. 计算机环境变量的配置,以java为例以及eclipse简要设置 – lmqljt

    计算机环境变量的配置,以java为例以及eclipse简要设置      安装JDK时可以不安装公共jre。因 […]...

  3. RGB颜色值与十六进制颜色码转换工具 – 秦朗的天空

    RGB颜色值与十六进制颜色码转换工具 简介 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、 […]...

  4. java Swing图形界面开发_001 – 笑明子

    java Swing图形界面开发_001 java AWT的缺点:   平台不兼容(不同的品台样式不一样,有些 […]...

  5. 离京总结-写于离京前夕 – 只会一点java

    一、引子 作为一个资深北漂,博主从16年就开始思考退路。17年筛选了全国几乎所有经济强市,最终选定了广州。后续 […]...

  6. nginx虚拟主机搭建 – activecode

    nginx虚拟主机搭建  nginx [engine x]是 Igor Sysoev 编写的一个 HTTP 和 […]...

  7. 刷机成功了 – 旷野轻尘一个人

    刷机成功了 http://zhidao.baidu.com/link?url=hZTPUtGm03cNxbnV […]...

  8. 用Graphviz画结构图 – 清炒白菜

    用Graphviz画结构图 2008-06-23 18:13  清炒白菜  阅读(4655)  评论(0)  […]...

随机推荐

  1. ORACLE备份与还原

    ———————— […]...

  2. 使用软件starf**k_de(更新0.82b版本),免拔光驱线玩YS6

    在网上发现这个小东东,德国人做的。可以不用拔光驱线或者在BIOS中禁用就能模拟最小镜像进入老版本starfor […]...

  3. Matlab 如何/怎样 读取图片 显示图片 转换成灰度图 – LGLiu

    Matlab 如何/怎样 读取图片 显示图片 转换成灰度图 % 读取图片 im = imread(\̵ […]...

  4. 用Creator实现一个擀面的效果

    先上几张效果图 怎么实现的呢? 节点介绍 1是背景图,可以忽略;2 是准备好的面团;3 是擀好的面饼先隐藏;4 […]...

  5. 【css3】旋转倒计时

    【css3】旋转倒计时 2018-02-23 23:03 by stoneniqiu, … 阅读, […]...

  6. matlab练习程序(线性分类器)

    clear all; close all; clc; num=7; X=[ 1 0.4 0.05; 1 -0. […]...

  7. .net如何使用系统中没有安装的字体?

      不想安装到客户端的 Fonts 目录下面,但是我又想在程序中使用它。 这段代码放在哪里? 字体文件需要放到 […]...

  8. Python 与 Javascript 简单对比

    原文出处:https://www.jianshu.com/p/ae85850821a3 项目 python j […]...

展开目录

目录导航