千家信息网

操作MySQL误删数据库备份该如何恢复

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,下文主要给大家带来操作MySQL误删数据库备份该如何恢复,希望这些内容能够带给大家实际用处,这也是我编辑操作MySQL误删数据库备份该如何恢复这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。案
千家信息网最后更新 2025年01月24日操作MySQL误删数据库备份该如何恢复

下文主要给大家带来操作MySQL误删数据库备份该如何恢复,希望这些内容能够带给大家实际用处,这也是我编辑操作MySQL误删数据库备份该如何恢复这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

案例:2013年6月1日,上午10点左右某网站的数据库被误删除,导致网站无法访问,由于数据库已经备份了6月1日凌晨0点之前的数据,但是0点之后到10点左右的数据就没有备份数据,那么要求你将数据库中的所有数据进行恢复。

一:数据记录介绍

6月1日0点之前的数据为

|  1 | oldboy  ||  2 | oldgirl ||  3 | inca    ||  4 | zuma    ||  5 | kaka    |# 6月1日0点之后到10点左右写入的数据为|  6 | oldgirl ||  7 | test    ||  8 | laowang |

二:模拟事故的发生准备

1.为了不影响本次实验,我们先将系统的定时任务。

[root@db01 ~]# crontab -l#*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

2.先将使用时间调整至凌晨0点,每天00点进行数据库备份

[root@db01 backup]# date -s "2013/06/01"Mon Aug 29 00:00:00 CST 2016

3.先检查数据库有哪些数据

[root@db01 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sockmysql> use oldboy;

创建一个test表测试

CREATE TABLE `test` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL,PRIMARY KEY(`id`));

向表中插入数据

insert into test values (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');mysql> select * from test;+----+---------+| id | name    |+----+---------+|  1 | oldboy  ||  2 | oldgirl ||  3 | inca    ||  4 | zuma    ||  5 | kaka    |+----+---------+5 rows in set (0.00 sec)

4.首先对oldboy数据库进行全量备份

下面的参数--master-data=2需要开启binlog日志

[root@db02 ~]# mysqldump -uroot -poldboy123 -S /data/3306/mysql.sock -B -F -x --master-data=2 oldboy|gzip >/server/backup/oldboy_$(date +%F).sql.gz     #<== -x  表示备份数据库锁表

检查新生产的binlog日志

[root@db02 ~]# ll /data/3306/-rw-rw----  1 mysql mysql    107 Jun  1 00:02 mysql-bin.000070

5.检查数据库是否备份成功

[root@db01 ~]# ll /server/backup/-rw-r--r-- 1 root root 872 Jun  1 00:02 oldboy_2013-06-01.sql.gz

6.然后望数据库写入一些数据,模拟备份完成以后数据库还依旧在写入数据

[root@db02 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock   mysql> use oldboy;mysql> insert into test values(6,'oldgirl'),(7,'test'),(8,'laowang');mysql> select * from test;+----+---------+| id | name    |+----+---------+|  1 | oldboy  ||  2 | oldgirl ||  3 | inca    ||  4 | zuma    ||  5 | kaka    ||  6 | oldgirl ||  7 | test    ||  8 | laowang |+----+---------+8 rows in set (0.00 sec)

三:制造故障发生

假设上午10点:

出事了,

某个领导,误删了数据库oldboy

7.现在模拟早上10点发生故障,数据库oldboy被删除,先修改时间

[root@db02 ~]# date -s "10:00:00"Mon Aug 29 10:00:00 CST 2016[root@db02 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "drop database oldboy;" Query OK, 1 row affected, 1 warning (0.01 sec)

#检查数据库是否删除成功

mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e "show databases;" 

四:解决问题,恢复数据

10:10分,运维人员,网站客户,发现问题,找到开发或运维

最后确定问题,网站的数据库连接不上,报错。登录数据库发生数据库不存在啦

8.现在我们来解决问题,恢复数据库

首先我们需要知道备份以后产生的binlog日志,可以通过备份的时间判断。

[root@db02 ~]# ll /data/3306/-rw-rw----  1 mysql mysql    107 Jun  1 00:02 mysql-bin.000070

9.如果看不出来的话,看备份文件的信息,

[root@db02 ~]# cd /server/backup/[root@db02 backup]# gzip -d oldboy_2013-06-01.sql.gz[root@db02 backup]# grep "CHANGE" oldboy_2013-06-01.sql -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000070', MASTER_LOG_POS=107

10.先将mysql-bin.000070的binlog日志进行备份

[root@db02 ~]# cp /data/3306/mysql-bin.000070 /server/backup/[root@db02 ~]# ll /server/backup/total 8-rw-r----- 1 root root  415 Jun  1 10:04 mysql-bin.000070      #<== 增量备份文件-rw-r--r-- 1 root root 2203 Jun  1 00:02 oldboy_2013-06-01.sql      #<== 全量备份文件

11.根据上面的情况,我们已经准备好了全量备份加增量备份的数据,现在就可以恢复

我们的目的,

(1)恢复00点之前的全量备份(5条数据)

[root@db02 ~]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock 

12恢复00点到10点的增量备份(2条数据)

[root@db02 ~]# cd /server/backup/[root@db02 backup]# mysqlbinlog -d oldboy mysql-bin.000070 >zengliang.sql

13先找到binlog日志的drop语句删除,然后在恢复binglog日志的增量备份

[root@db02 backup]# vim zengliang.sqldrop database oldboy      #<== 删除此行

14.现在将数据库的增量备份文件恢复到数据库

[root@db02 backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock 

15只要能恢复到以下的数据,就表示数据恢复成功

[root@db01 backup]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock -e 'select * from oldboy.test;'+----+---------+| id | name    |+----+---------+|  1 | oldboy  ||  2 | oldgirl ||  3 | inca    ||  4 | zuma    ||  5 | kaka    ||  6 | oldgirl ||  7 | test    ||  8 | laowang |+----+---------+

对于以上关于操作MySQL误删数据库备份该如何恢复,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

数据 备份 数据库 日志 增量 文件 网站 问题 检查 成功 内容 时间 先将 下文 故障 目的 面的 准备 事故 人员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中宏数据库是什么系统 网络安全等级测试工作流程 OMIM数据库如何搜索疾病 上海邀玩网络技术有限公司 11g数据库可以用到10g上吗 投资数据库终端 深度网络技术有限公司 计算机网络技术的云计算 数据库顺序取前三 数据库服务器硬件怎么检测 南昌哪个软件开发培训好 2020年江苏省网络安全日 若客户端首先向服务器发送fin 关于网络安全的好与坏 明日之后怎么把服务器切换 恩平天气预报软件开发 福州新华互联网科技学校校园环境 doop 数据库 软件开发为什么前后端分离 ef生成数据库报错 数据库应用技术第六章行考答案 关于网络安全网络文明的海报 正规软件开发加盟商代理价格 r星总部服务器 国开数据库应用技术形考任务2 蒙城天气预报软件开发 中国医院协会网络安全分会 我的世界良心魔改宝可梦服务器 数据库备份到本地 企业模拟沙盘软件开发公司
0