一、定时备份数据库 

前段时间工作中搭建了HttpRunnerManager的接口自动化测试平台,由于平台中没有提供用例下载的功能及权限管理功能,自己也不会写前端,于是就想了办法,那就是备份数据库,如果有人误删了数据,那么可以通过备份的数据库来进行数据恢复。接下来记录一下数据库的备份与恢复操作记录。

1. 创建shell脚本

vim mysql_autobackup.sh
创建脚本内容如下:
#!/bin/sh
db_user="root"
db_passwd=""
db_name="userdb"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/home/ceshi/backup/$name.sql
说明:
/usr/bin/mysqldump :mysql数据库安装目录下的mysqldump备份工具路径
dbname :需要备份的数据库名字
/home/ceshi/backup/$name.sql :备份文件输出位置,可以根据情况自行设定

2. 给shell脚本添加执行权限

chmod +x  mysql_autobackup.sh

然后我自己测试了一下,运行 mysql_autobackup.sh脚本的时候,提示:Warning: Using a password on the command line interface can be insecure.意思是:在命令行界面上使用密码可能不安全。所以脚本执行失败了。

解决方法:

对于 mysqldump 要如何避免出现(Warning: Using a password on the command line interface can be insecure.) 警告信息呢?

找到 my.cnf文件,我用的是:whereis  my.cnf 找到的。

然后修改:

vim /etc/my.cnf

[mysqldump]

user=your_backup_user_name #数据用户名

password=your_backup_password #数据库密码

修改完配置文件后, 只需要执行mysqldump 脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。

然后修改 mysql_autobackup.sh文件:

#!/bin/sh
db_user="root"
db_passwd="root"
db_name="HttprunnerManager"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump $db_name >>/home/ceshi/backup/$name.sql

因为我们每天晚上都会备份一下数据库,所以备份之后我们以当时的备份时间来命名备份文件,比如我2019年1月30号晚上1点30分整备份的数据库即为“20191026013000.sql”

那么每天都会生成一个文件,时间久了硬盘就会被塞满,而且很早之前的数据也没有太大的保留意义,那么我们可以在每天备份时同时删除一段时间之前的备份数据,比如我们需要删除15天之前的备份:

find /home/ceshi/backup/ -mtime +15 -type f | xargs rm -f

“/home/ceshi/backup/”为我们备份文件的保存目录;

“-mtime +15”是设置时间为15天前

“-type f”表明查找的类型是文件

这行命令完成的操作是:查找/home/ceshi/backup/目录下30天之前的文件并且删除。

我们把这行删除的命令加入到mysql_autobackup.sh文件中:

#!/bin/sh
db_user="root"
db_passwd=""
db_name="HttprunnerManager"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump $db_name >>/home/ceshi/backup/HttpRunnerManager_$name.sql
#查找/home/ceshi/backup/目录下15天之前的文件并且删除
find /home/ceshi/backup/ -mtime + -type f | xargs rm -f

备份跟删除的命令我们都写好了,那么我们可以通过crontab来让系统每天自动的去执行这两个任务

crontab -e 写入计划任务并保存:

  * * * sh /home/ceshi/backup/mysql_autobackup.sh

表示每天晚上1点30分会执行/home/ceshi/backup目录下的mysql_autobackup.sh脚本,就是我们上面编写的备份跟删除操作的脚本,这样就可以完成系统每天自动备份数据库并且会自动的去查找超过15天的备份并删除.

补充:crontab 的格式说明

1、以我们刚才写的计划任务为例:

  * * * sh /home/ceshi/backup/mysql_autobackup.sh

格式简化之后是下面这样

* * * * * *

第一列的“*”为分钟 从1~59

第二列的“*”为小时 从0~23,0代表午夜12点

第三列的“*”为日 从1~31

第四列的“*”为月 从1~12

第五列的“*”为星期 从0~6,0代表星期天

第六列的“*”为要运行的命令

综合起来就是下面的格式

分 时 日 月 星期 要运行的命令

举例:

  * * * reboot
上面的例子表示每晚的21:30重启服务器。
  ,, * * reboot
上面的例子表示每月1、、22号的4:45重启服务器
  * * , reboot
上面的例子表示每周六、周日的1:10重启服务器
, - * * * reboot
上面的例子表示在每天18:00至23:00之间每隔30分钟重启服务器。
 -/ * * * reboot
晚上11点到早上7点之间,每隔一小时重启服务器

二、使用备份的数据库进行数据恢复:

1.首先就是要删除已经备份的数据库:

mysql> drop database HttprunnerManager;

删除之后,发现平台已经打不开了;

然后重新创建数据库:

mysql> create Database HttprunnerManager charset utf8;

查看数据库信息,是空的;

mysql> use HttprunnerManager
Database changed
mysql> show tables;
Empty set (0.00 sec)

恢复命令:

mysql -uroot -p HttprunnerManager<HttpRunnerManager_20191026160601.sql

以上命令中:HttprunnerManager是新建的数据库的名字,是空的,HttpRunnerManager_20191026160601.sql是之前备份的数据库,根据提示输入密码之后就恢复成功了,打开平台已经正确显示,数据也显示正确。

mysql数据库的备份与数据恢复的更多相关文章

  1. mysql数据库误删除后的数据恢复操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

  2. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  3. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

  4. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  5. 转-MySQL 数据库误删除后的数据恢复操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

  6. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  7. MYSQL数据库增量备份

    MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可.接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法. #fu ...

  8. [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

    通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...

  9. mysql数据库的备份和恢复

    Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...

随机推荐

  1. Cookie的使用、Cookie详解、HTTP cookies 详解、获取cookie的方法、客户端获取Cookie、深入解析cookie

    Cookie是指某些网站为了辨别用户身份.进行session跟踪而存储在用户本地终端上的数据(通常经过加密),比如说有些网站需要登录才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我 ...

  2. Android5_浅谈Java的package机制

    当代码量越来越大,类越来越多.尤其会增加同名类的风险.所以对类进行管理就显得非常重要. 包(package)机制是java中管理类的重要手段. 包名的命名方式:业内默认的做法是使用公司的网络域名的倒写 ...

  3. slim中的参数获取

    官方文档中对于get和post的参数有以下获取方式 $app->get('/', function (Request $req, Response $res, $args = []) { $my ...

  4. monorepo仓库管理方式探秘

    前言 随着功能和业务量级的飙升,前端代码量级也越来越大,管理运维的成本也进一步增加. 代码仓库的运营管理挑战也浮出水面. 主流方案有两种:一是multirepo式的分散式的独立仓库,二是monorep ...

  5. NFS服务介绍及实验

    一.什么是NFS NFS 是 Network File System 的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布.功能是通过网络让不同的机器 ...

  6. linux-iostat、sar、top、htop

    1.iostat 实时显示linux的任务 centos7中默认没有安装iostat,所以得提前安装sysstat yum install -y sysstat -c 统计cpu信息 -d 统计磁盘信 ...

  7. 嗨,让我带你逐行剖析Vue.js源码

    本项目受到了阮一峰老师的肯定,已刊登在阮一峰老师微信公众号的科技爱好者周刊第87期,同时也被多个微博大V转发,短短一个月时间内在github上star数量就已经突破2k! Hello,大家好,我最近在 ...

  8. 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找

    做项目是遇见下拉框的形式,后台返回来3万多条,用element UI中的select选择器中的搜索还是会造成页面卡顿和系统崩溃,因此用了它的远程搜索功能,发现还不错,解决了这个问题. 代码1 < ...

  9. 洛谷$P$2286 宠物收养场 $[HNOI2004]$ $splay$

    正解:$splay$ 解题报告: 传送门! $splay$板子,,,? 先考虑这题要实现些什么东西嘛$QwQ$ 其实只要实现一个东西?就查询数列中与给定数字相差最小的数,显然用$splay$查询前驱后 ...

  10. 「Vijos 1283」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔杖

    佳佳的魔杖 背景 配制成功了珍贵的0号药水,MM的病治好了.轻松下来的佳佳意外的得到了一个好东西--那就是--一种非常珍贵的树枝.这些树枝可以用来做优质的魔杖!当然了,不能只做自己的,至少还要考虑到M ...