关键技术,数据库产生的二进制文件,在主库就是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. 51nod2006 飞行员配对(二分图最大匹配)

    2006 飞行员配对(二分图最大匹配) 题目来源: 网络流24题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 第二次世界大战时期,英国皇家空军从沦陷国 ...

  2. magento 翻译使用实例

    在自定义的模块中若想要使用翻译,需在config.xml中加入如下配置 <config> <adminhtml> //后台 <translate> <modu ...

  3. Java 8 (7) 重构、测试和调试

    为改善可读性和灵活性重构代码 看到这里我们已经可以使用lambda和stream API来使代码更简洁,用在新项目上.但大多数并不是全新的项目,而是对现有代码的重构,让它变的更简洁可读,更灵活. 改善 ...

  4. STL容器迭代过程中删除元素技巧(转)

    1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<in ...

  5. Python基础语法(转)

    作者:Peter 出处:http://www.cnblogs.com/Peter-Zhang/   Python 基础语法(一) Python的特点 1. 简单 Python是一种代表简单思想的语言. ...

  6. EF CodeFirst 不得不说的Where与OrderBy

    先来聊上5毛钱的“排序” Code: using (ApplicationDbContext Db=new ApplicationDbContext()) { var res = Db.Threes. ...

  7. java_IO_装饰器

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  8. 这段代码很Pythonic | 相见恨晚的 itertools 库

    前言 最近事情不是很多,想写一些技术文章分享给大家,同时也对自己一段时间来碎片化接受的知识进行一下梳理,所谓写清楚才能说清楚,说清楚才能想清楚,就是这个道理了. 很多人都致力于把Python代码写得更 ...

  9. wpf 界面加载 Command

    导入 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" <i:Interaction. ...

  10. java.net.MalformedURLException: no protocol: www.baidu.com

    URL url = new URL("www.baidu.com");改为 URL url = new URL("http://www.baidu.com");