如何解决线上数据库删了的问题

发布时间:2021-10-22 17:12:38 作者:iii
来源:亿速云 阅读:129

本篇内容主要讲解“如何解决线上数据库删了的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决线上数据库删了的问题”吧!

事件背景

主要思想与原理

过程示意图

如何解决线上数据库删了的问题

操作过程

模拟数据

CREATE TABLE `student` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` char(20) NOT NULL,   `age` tinyint(2) NOT NULL DEFAULT '0',   PRIMARY KEY (`id`),   KEY `index_name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8    mysql> insert student values(1,'zhangsan',20);  mysql> insert student values(2,'lisi',21);  mysql> insert student values(3,'wangwu',22);

全备命令

# mysqldump -uroot -p -B -F -R -x --master-data=2 test|gzip >/server/backup/test_$(date +%F).sql.gz

参数说明:

继续插入数据并删库

mysql> insert student values(4,'xiaoming',20); mysql> insert student values(5,'xiaohong',20);

在插入数据的时候我们模拟误操作,删除test数据库。

mysql> drop database test;

此时,全备之后到误操作时刻之间,用户写入的数据在binlog中,需要恢复出来。

查看全备之后新增的binlog文件

# cd /server/backup/ # ls test_2020-08-19.sql.gz # gzip -d test_2020-08-19.sql.gz  # grep CHANGE test_2020-08-19.sql  -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;

这是全备时刻的binlog文件位置,即mysql-bin.000003的107行,因此在该文件之前的binlog文件中的数据都已经包含在这个全备的sql文件中了

移动binlog文件,并读取sql,剔除其中的drop语句

# cp /data/3306/mysql-bin.000003 /server/backup/ # mysqlbinlog -d test mysql-bin.000003 >mysql-bin.000003.sql

接下来,使用vim编辑mysql-bin.000003.sql文件,剔除drop语句

注意:在恢复全备数据之前必须将该binlog文件移出,否则恢复过程中,会继续写入语句到binlog,最终导致增量恢复数据部分变得比较混乱

恢复数据

# mysql -uroot -p < test_2020-08-19.sql  # mysql -uroot -p -e "select * from test.student;" +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | zhangsan |  20 | |  2 | lisi     |  21 | |  3 | wangwu   |  22 | +----+----------+-----+

此时恢复了全备时刻的数据,然后使用mysql-bin.000003.sql文件恢复全备时刻到删除数据库之间,新增的数据。

# mysql -uroot -p test < mysql-bin.000003.sql  # mysql -uroot -p -e "select * from test.student;" +----+----------+-----+ | id | name     | age | +----+----------+-----+ |  1 | zhangsan |  20 | |  2 | lisi     |  20 | |  3 | wangwu   |  20 | |  4 | xiaoming |  20 |  |  5 | xiaohong |  20 | +----+----------+-----+

此时,整个恢复过程结束,是不是很简单呢?没错,就是这么简单!!

到此,相信大家对“如何解决线上数据库删了的问题”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. MySQL通过添加索引解决线上数据库服务器压力大问题
  2. 如何解决JVMFullGC引发严重线上事故的问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库

上一篇:在Linux上如何安装s3cmd

下一篇:怎么在Windows 10中禁用屏幕截图

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》