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是之前备份的数据库,根据提示输入密码之后就恢复成功了,打开平台已经正确显示,数据也显示正确。

原文地址:https://www.cnblogs.com/xiehong/p/11743630.html

时间: 2024-10-19 09:41:43

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

MySQL数据库-完全备份及恢复

MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑角度: 对数据库的对象的备份,例如数据表,及数据表中的一些sql语句等 备份策略角度: 完全备份:每次对数据进行整体的备份 差异备份:在第一次完整备份a数据后,以后的每次的备份是a+b,b就是针对于a数据发生变化的数据,称之为'差异数据'.缺点:b的数据内存会越来越大b+=b,导致数据恢复缓慢.恢复

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

在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办??? 下面,就mysql数据库误删除后的恢复方案进行说明. 一.工作场景(1)MySQL数据库每晚12:00自动完全备份.(2)某天早上上班,9点的时候,一同事犯晕drop了一个数据库!(3)需要紧急恢复!可利用备份的数据文件以及增量的binlog文件进行数据恢复. 二.数据恢复思路(1)利用全备

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

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

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

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI

Windows Server服务器端MySQL数据库自动备份

1.给root账户授权所有sql权限 grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 2.建立bat批处理文件 @echo off set path=%path%;D:\Program Files\MySQL\MySQL Server 5.5\bin set y=%date:~0,4% set m=%date:~5,2% set d=%d

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

通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/test.sql ---备份test数据库到 D 盘 mysql -h127.0.0.1 -uroot -ppass test< test.sql ---将D备份的数据库脚本,恢复到数据库中 更多命令参看:http://www.cnblogs.com/xcxc/archive/2013/01/30/28828

使用LVM快照实现对mysql数据库的备份

数据库备份有多种方法,今天介绍下使用lvm的快照功能完成对mysql数据库的备份.lvm在对数据进行备份的时候可以提供近乎热备的方式,它的工作机制是这样的:在某一时刻对数据库所在目录创建快照卷,由此,通过快照卷访问的数据就是保存快照那一刻时的数据,而后将快照卷中的数据拷贝至其他目录即可,之所以称他为近乎热备是因为在创建快照的时候需要对数据库施加读锁,在这期间数据库不能进行写操作. 使用lvm备份数据库的前提  1,数据文件必须在lv中 2,此逻辑卷所在的卷组必须有足够的空间使用快照卷 3, 数据

mysql数据库定时备份

操作步骤:1.将脚本放到任意位置下,不容易被误删即可2.定时任务,一周执行一次脚本 脚本如下:#!bin/bash backuppath=/data/mysql/backup date=$(date +%Y%m%d%H%M) SQLuser=root SQLpwd=password mysqldump=/usr/local/mysql/bin/mysqldump mysql=/usr/local/mysql/bin/mysql HIS_Date=`date -d $(date -d "-30 d

mysql 数据库定时备份 增量/全备份

实验楼的 MySQL 数据库需要设计一个自动备份方案,能够每周执行一次全备份,每天执行一次增量备份. 数据库名称为 shiyanlou,管理的用户名为 shiyanlou,密码为 shiyanlou.注意需要先手动启动 MySQL 服务. 目标 设计并实现备份方案,任务完成后满足以下要求: MySQL 服务处于运行状态 需要为服务器中的 shiyanlou 用户设定计划任务 计划任务中设定每周的周一凌晨3点执行一次全备份 计划任务中设定每天凌晨3点执行一次增量备份,周一不执行 请不要编写额外的脚