• mysql数据库的备份与数据恢复


    一、定时备份数据库   

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

    1. 创建shell脚本

    vim mysql_autobackup.sh
    创建脚本内容如下:
    #!/bin/sh
    db_user="root"
    db_passwd="123456"
    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="123456"
    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 +15 -type f | xargs rm -f

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

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

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

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

    补充:crontab 的格式说明

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

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

    格式简化之后是下面这样

    * * * * * *

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

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

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

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

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

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

    综合起来就是下面的格式

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

    举例:

    30 21 * * * reboot
    上面的例子表示每晚的21:30重启服务器。
    45 4 1,10,22 * * reboot
    上面的例子表示每月1、10、22号的4:45重启服务器
    10 1 * * 6,0 reboot
    上面的例子表示每周六、周日的1:10重启服务器
    0,30 18-23 * * * reboot
    上面的例子表示在每天18:00至23:00之间每隔30分钟重启服务器。
    0 23-7/1 * * * 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是之前备份的数据库,根据提示输入密码之后就恢复成功了,打开平台已经正确显示,数据也显示正确。

  • 相关阅读:
    CCS的一些问题
    SignalTapII新特性Storage Qualification
    信号发生器输出幅值与输出阻抗的关系
    关于print函数的一些细节问题探讨
    hp3020 打印机驱动完全卸载方法
    【转】Ruby Selenium 测试
    [nodejs]CoffeeScript里实现Mixin
    [Ruby]ARGF的使用
    【Groovy】使用Maven集成Groovy代码
    [nodejs]optimist库
  • 原文地址:https://www.cnblogs.com/xiehong/p/11743630.html
Copyright © 2020-2023  润新知