关键技术,数据库产生的二进制文件,在主库就是binlog在从库就是relay-log,用最新的物理备份可以新启动个新实例,可以模拟个从库,把主库的binlog复制到新的数据库实例上,利用主从复制和物理备份可以恢复到误操作前的数据
具体操作命令如下:
环境:
192.168.214.89  生产库
192.168.214.90  新数据库
 
1、在192.168.214.89上物理备份
innobackupex  --defaults-file=/application/mysql56/etc/my.cnf   --no-timestamp --user=root --password=123456 --host=192.168.214.89 --port=5621 --parallel=5    /data0/bak/full56
 
2、在192.168.214.89上多创建几个表,模拟业务增量
mysql> use employees;
 
mysql> create table employees_test as select * from employees;
Query OK, 300024 rows affected (7.18 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> insert into employees_test select * from employees_test;
Query OK, 300024 rows affected (5.19 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> insert into employees_test select * from employees_test;
Query OK, 600048 rows affected (7.97 sec)
Records: 600048  Duplicates: 0  Warnings: 0
 
#模拟binlog日志切换
mysql> flush logs;
Query OK, 0 rows affected (0.80 sec)
 
 
mysql> insert into employees_test select * from employees_test;
Query OK, 1200096 rows affected (25.22 sec)
Records: 1200096  Duplicates: 0  Warnings: 0
 
mysql> create table employees_test1 as select * from employees_test;
Query OK, 2400192 rows affected (59.35 sec)
Records: 2400192  Duplicates: 0  Warnings: 0
 
mysql> create table employees_test2 as select * from employees;
Query OK, 300024 rows affected (9.20 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> create table employees_test3 as select * from employees;
Query OK, 300024 rows affected (10.78 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> create table employees_test4 as select * from employees;
Query OK, 300024 rows affected (11.17 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
 
mysql> flush logs;
Query OK, 0 rows affected (0.49 sec)
 
mysql> create table employees_test5 as select * from employees;
Query OK, 300024 rows affected (10.67 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> flush logs;
Query OK, 0 rows affected (0.18 sec)
 
mysql> create table employees_test6 as select * from employees;
Query OK, 300024 rows affected (9.42 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> flush logs;
Query OK, 0 rows affected (0.31 sec)
 
mysql> create table employees_test7 as select * from employees;
Query OK, 300024 rows affected (8.83 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
mysql> create table employees_test8 as select * from employees;
Query OK, 300024 rows affected (9.83 sec)
Records: 300024  Duplicates: 0  Warnings: 0
 
 
查看数据库一共有多少个表
mysql> show tables;
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| employees_test      |
| employees_test1     |
| employees_test2     |
| employees_test3     |
| employees_test4     |
| employees_test5     |
| employees_test6     |
| employees_test7     |
| employees_test8     |
| salaries            |
| titles              |
+---------------------+
15 rows in set (0.00 sec)
 
mysql> drop database employees;
Query OK, 15 rows affected (4.00 sec)
 
为了查找方便,误操作后切换日志
mysql> flush logs;
Query OK, 0 rows affected (0.35 sec)
 
3、恢复备份文件
innobackupex  --defaults-file=/application/mysql56/etc/my.cnf    --parallel=5  --apply-log  /data0/bak/full56
 
4、在192.168.214.90上新安装个MySQL实例,启动新的MySQL实例,看启动是否成功,有异常的话,看错误日志解决,关闭MySQL数据库
 
 
5、把89恢复完的备份文件scp到90新安装的MySQL实例的数据目录下,启动数据库,让90成为一个从库
 
# cd /data0/bak/full56
 
# chown mysql:mysql * -R
 
mysql> CHANGE MASTER TO   MASTER_HOST='192.168.1.88';   # MASTER_HOST可以随便指定
 
完了关闭数据库
 
 
6、把89的binlog文件scp到90新安装的MySQL实例的数据目录下,删除相关的文件,启动数据库
# scp  mysql-bin.*  192.168.214.90:/data0/mysql/mysql56/var
# rm -rf mysql-bin.index
# rename mysql-bin relay-log mysql-bin.*
# ls ./relay-log.0* > relay-log.index
 
7、在主库上解析误操作前的binlog信息
# /application/mysql56/bin/mysqlbinlog mysql-bin.000042 > /tmp/42.sql
 
vi /tmp/42.sql
 
。。。。。。。。。。。。。。。。。。
# at 16494555
#181026  9:28:38 server id 19289  end_log_pos 16494586 CRC32 0xedfa848b         Xid = 11451753
COMMIT/*!*/;
# at 16494586
#181026  9:29:55 server id 19289  end_log_pos 16494693 CRC32 0x8c072efe         Query   thread_id=3816657       exec_time=4     error
_code=0
SET TIMESTAMP=1540517395/*!*/;
drop database employees
/*!*/;
。。。。。。。。。。。。。。。。。
 
7、查看备份时候的binlog信息
# catxtrabackup_binlog_info
mysql-bin.000039        32987250
 
8、在90上做恢复
mysql> change master to relay_log_file='relay-log.000039',relay_log_pos=32987250;
Query OK, 0 rows affected (0.05 sec)
 
mysql> START SLAVE until RELAY_LOG_FILE = 'relay-log.000042', RELAY_LOG_POS = 16494555;
Query OK, 0 rows affected (0.04 sec)
 
查看验证表是否恢复正确
mysql> use employees;
Database changed
 
mysql> show tables;
+---------------------+
| Tables_in_employees |
+---------------------+
| departments         |
| dept_emp            |
| dept_manager        |
| employees           |
| employees_test      |
| employees_test1     |
| employees_test2     |
| employees_test3     |
| employees_test4     |
| employees_test5     |
| employees_test6     |
| employees_test7     |
| employees_test8     |
| salaries            |
| titles              |
+---------------------+
15 rows in set (0.00 sec)
 
再把employees数据库备份出来导入到192.168.214.89上
 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭

用xtrabackup+binlog恢复误删除的数据库的更多相关文章

  1. 烂泥:通过binlog恢复mysql数据库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用bin ...

  2. 一个简单的binlog恢复测试

    日常的数据备份及恢复测试,是DBA工作重中之重的事情,所以要做好备份及测试,日常的备份常见有mysqldump+binlog备份.xtrabackup+binlog备份,无论那一种,几乎都少不了对bi ...

  3. 从xtrabackup备份恢复单表

    目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...

  4. 从xtrabackup备份恢复单表【转】

    目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...

  5. 烂泥:通过binlog恢复mysql备份之前的数据

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章,我们讲解了如何通过mysql的binlog日志恢复mysql数据库,文章连接为<烂泥:通过binlog恢复mysql数据库>.其 ...

  6. rman恢复误删除的一张表(不完全恢复)

    恢复误删除的一张表可以使用很多方法,如日志挖掘.闪回等,rman恢复(不完全恢复)肯定不是最好的,也不建议用, 现在我们只是演示一下这种恢复. 1 RMAN备份数据库 2创建测试表 3查看此时的SCN ...

  7. MySQL的binlog恢复(Windows下)

    前言 在最近的工作中,由于自己粗(zuo)心(si)误update操作导致几百行的数据出现错误,在心急如焚的同时(那时候我竟然不知道除了备份之后还有binlog日志恢复)立马查资料学习binlog的恢 ...

  8. Mysql使用binlog恢复数据解决误操作问题的两种方法

    为保证没有其他参数配置影响,重新安装配置了一台最小化安装的CentOS7虚拟机 1. 基础知识
 安装mysql5.6数据库Mysql binlog初步理解 2. 配置mysql 开启binlog.修 ...

  9. mysql利用binlog恢复数据详细例子

    模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...

随机推荐

  1. D. Vasya And The Matrix(Educational Codeforces Round 48)

    D. Vasya And The Matrix time limit per test2 seconds memory limit per test256 megabytes inputstandar ...

  2. 视图解析器InternalResourceViewResolver在什么情况下需要配置?在什么情况下不需要配置?

    如果路径名是逻辑名的话,必须配置 -------------- 相对路径,即逻辑名称如果路径名是真实名的话,可选配置 若是绝对路径,则不用配置,即真实名称 注:试一下逻辑名和真实名的例子*****有用 ...

  3. 260 Single Number III 数组中除了两个数外,其他的数都出现了两次,找出这两个只出现一次的数

    给定一个整数数组 nums,其中恰好有两个元素只出现一次,其他所有元素均出现两次. 找出只出现一次的那两个元素.示例:给定 nums = [1, 2, 1, 3, 2, 5], 返回 [3, 5].注 ...

  4. Winform学习知识汇总

    引用博客 http://www.cnblogs.com/peterzb/archive/2009/06/14/1502918.html

  5. 2105. [NOIP2015] 信息传递

    ★☆   输入文件:2015message.in   输出文件:2015message.out   简单对比 时间限制:1 s   内存限制:256 MB [题目描述] 有n个同学(编号为1到n)正在 ...

  6. MySql备份表数据

    一:根据user表创建user_backup表 drop table if exists user_backup; create table user_backup like user; // lik ...

  7. 【笔记JS/HTML/CSS】ubuntu环境下的sublime text2 安装 zenCoding

    刚接触web编程的时候就被老师安利了sublime text2 这个文本编辑器,后来发现它真的挺好用的,无论是windows还是ubuntu,都可以很简单地下载安装(到官网,免费哦),三分钟内就搞定了 ...

  8. 运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下

    问题:想调用service类中的私有方法时, Method target=clz.getMethod("say", String.class);用Class的getMethod报错 ...

  9. Linux 软件编译、安装、删除

    本文学习内容 手动安装软件 手动安装下载源码的软件 源码编译3步骤 deb包-包依赖管理 dekg -l 查看所以安装deb的包 apt-get仓库安装(自动处理依赖问题) 640?wx_fmt=gi ...

  10. MySql学习笔记(四) —— 数据的分组

    前面介绍的聚集函数只是用来计算行数,平均数,最大值,最小值而不用检索所有数据.通过count()函数,我们可以计算生产商1003提供的产品数目,但如果我要查询所有生产商提供的商品数,这就需要进行分组查 ...