内容待补充

案例文字说明:

7.3 故障时间点:

周四上午10点,开发人员误删除了一个表,如何恢复?

7.4 思路:

1、停业务,避免数据的二次伤害

2、找一个临时库,恢复周三23:00全备

3、截取周三23:00  --- 周四10点误删除之间的binlog,恢复到临时库

4、测试可用性和完整性

5、

5.1 方法一:直接使用临时库顶替原生产库,前端应用割接到新库

5.2 方法二:将误删除的表导出,导入到原生产库

6、开启业务

实验过程code

 #-------------------------------------------------------------------------------
#
# 企业案例恢复操作
# 1.1 全备+恢复部分误删除的表(全备期间删除或者全备完成后删除)
# Author:nod
# Date:18-08-05
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# 启动实例模拟备用数据库
#-------------------------------------------------------------------------------
mysqld_safe --defaults-file=/data/3307/my.cnf & [root@db01 tmp]# netstat -lnp | grep 330*
tcp 0 0 :::3306 :::* LISTEN 45894/mysqld
tcp 0 0 :::3307 :::* LISTEN 46940/mysqld
unix 2 [ ACC ] STREAM LISTENING 146100 46940/mysqld /data/3307/mysql.sock #-------------------------------------------------------------------------------
# 主库模拟数据
#-------------------------------------------------------------------------------
[root@db01 tmp]# mysql -uroot -p123 -A mysql> flush logs; mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000012 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> create database backup; mysql> create table backup.full select * from world.city; mysql> create table backup.full_1 select * from mysql.user; #-------------------------------------------------------------------------------
# 模拟主库每天定时进行全备
#-------------------------------------------------------------------------------
[root@db01 backup]# mysqldump -uroot -p123 -A -R --triggers --master-data=2 --single-transaction|gzip > /backup/full_$(date +%F).sql.gz
Warning: Using a password on the command line interface can be insecure. [root@db01 backup]# ll
total 328
-rw-r--r-- 1 root root 334770 Aug 5 22:19 full_2018-08-05.sql.gz #-------------------------------------------------------------------------------
# 模拟主库数据发生变化
# 故障前thur数据为239rows
#-------------------------------------------------------------------------------
mysql> create table backup.thur select * from world.country;
Query OK, 239 rows affected (0.11 sec)
Records: 239 Duplicates: 0 Warnings: 0 mysql> update backup.full set countrycode='CHN';
Query OK, 3716 rows affected (0.04 sec)
Rows matched: 4079 Changed: 3716 Warnings: 0 mysql> delete from backup.full where id>200;
Query OK, 3879 rows affected (0.05 sec) #-------------------------------------------------------------------------------
# 模拟主库数据故障 删除thur表
#-------------------------------------------------------------------------------
mysql> drop table thur; #-------------------------------------------------------------------------------
# 开始恢复数据部分
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# 通过全备进行数据分析
#-------------------------------------------------------------------------------
[root@db01 backup]# gzip -d full_2018-08-05.sql.gz
[root@db01 backup]# ll
total 1072
-rw-r--r-- 1 root root 1096129 Aug 5 22:19 full_2018-08-05.sql #-------------------------------------------------------------------------------
# 2 分析full_2018-08-05.sql得出
# CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=137208;
# 说明是从mysql-bin.000012开始记录 start-position为137208
# 3 通过show binlog events in 'mysql-bin.000012' 得出drop开始的位置为 536332
# 因而语句写为:
# mysqlbinlog --start-position=137208 --stop-position=536332 /data/mysql/mysql-bin.000012 >/backup/inc.sql
#------------------------------------------------------------------------------- [root@db01 backup]# mysqlbinlog --start-position=137208 --stop-position=536332 /data/mysql/mysql-bin.000012 >/backup/inc.sql
[root@db01 backup]# ll
total 1608
-rw-r--r-- 1 root root 1096129 Aug 5 22:19 full_2018-08-05.sql
-rw-r--r-- 1 root root 546397 Aug 5 22:27 inc.sql #-------------------------------------------------------------------------------
# 进入备用数据库 恢复数据
#-------------------------------------------------------------------------------
[root@db01 tmp]# mysql -S /data/3307/mysql.sock set sql_log_bin=0;
source /backup/full_2018-08-05.sql
source /backup/inc.sql #-------------------------------------------------------------------------------
# 检查恢复后的数据
#-------------------------------------------------------------------------------
mysql> select count(*) from thur;
+----------+
| count(*) |
+----------+
| 239 |
+----------+
1 row in set (0.00 sec) #-------------------------------------------------------------------------------
# 将故障表导出
#-------------------------------------------------------------------------------
[root@db01 backup]# mysqldump -S /data/3307/mysql.sock backup thur >/backup/thur.sql #-------------------------------------------------------------------------------
# 登录主库 导入数据thur.sql
# 因为是导出的单表,一定要进入数据库后恢复 use backup
#-------------------------------------------------------------------------------
[root@db01 backup]# mysql -uroot -p123 -A mysql> use backup;
Database changed
mysql> source /backup/thur.sql;
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) #-------------------------------------------------------------------------------
# 检查主库数据
#-------------------------------------------------------------------------------
mysql> select count(*) from thur;
+----------+
| count(*) |
+----------+
| 239 |
+----------+
1 row in set (0.01 sec)

还有一个升级版  链接地址:https://www.cnblogs.com/nodchen/p/9428077.html

MySQL mysqlbinlog企业案例的更多相关文章

  1. MySQL binlog 企业案例升级版

    需求:1.创建一个数据库 oldboy2.在oldboy下创建一张表t13.插入5行任意数据4.全备5.插入两行数据,任意修改3行数据,删除1行数据6.删除所有数据7.再t1中又插入5行新数据,修改3 ...

  2. MySQL数据库企业集群项目实战(阶段三)

                              MySQL数据库企业集群项目实战(阶段三) 作者 刘畅 时间 2020-10-25 目录 1 架构拓扑图 1 1.1 方案一 1 1.2 方案二 2 ...

  3. MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事

    MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事   一网友反馈使用mysqlbinlog解析出的二进制日志中的内容中,有些SQL语句有#注释的情况,这个是怎么回事呢?我们通过实验 ...

  4. Mysql: mysqlbinlog命令查看日志文件

    想查看mysql的binlog文件,但是裸的binlog文件是无法直视的,mysqlbinlog这个工具是用来查看binlog文件内容的(使用方式man mysqlbinlog查看),但是使用mysq ...

  5. 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/

    企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...

  6. 20.Linux进程管理-企业案例

    1.管理进程状态 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号.当然除了kill.还有killall,pkill 1.使用kill ...

  7. 记一次血淋淋的MySQL崩溃修复案例

    摘要:今天给大家带来一篇MySQL数据库崩溃的修复案例 本文分享自华为云社区<记一次MySQL崩溃修复案例,再也不用删库跑路了>,作者: 冰 河. 问题描述 研究MySQL源代码,调试并压 ...

  8. MySQL 企业案例:误删核心业务表

    问题描述: 1.正在运行的网站系统,MySQL 数据库,数据量 25G,日业务增量 10 - 15M 2.备份策略:每天 23:00,计划任务调用 mysqldump 执行全备脚本 3.故障时间点:上 ...

  9. 【转】mysql增量备份恢复实战企业案例

    来源地址:http://seanlook.com/2014/12/05/mysql_incremental_backup_example/ 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但 ...

随机推荐

  1. docker下搭建fastfds集群版

    搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成 ...

  2. go-elasticsearch 来自官方的 golang es client

    elasticsearch 终于有了官方的golang sdk 了,地址 https://github.com/elastic/go-elasticsearch 当前还不稳定,同时主要是对于es7 的 ...

  3. 05C++引用

    1.变量名 变量名实质上是一段连续存储空间的别名,是一个标号(门牌号): 通过变量来申请并命名内存空间: 通过变量的名字可以使用内存空间. 2.引用的概念 变量名,本身是一段内存的引用,即别名(ali ...

  4. 海思HI3518由于sensor对齐方式问题导致视频花屏

    https://blog.csdn.net/faihung/article/details/70306446 前几天在验证一台IPC硬件时,遇到一个问题:在其它设备上视频功能运行正常的固件,烧录到客户 ...

  5. ElasticSearch:Lucene和ElasticSearch

    Lucene的概念: 关于索引 索引(index)和搜索(搜索),在lucene以及es里面索引是一个动作,即插入动作,包括创建索引以及为索引添加文档:所有则是针对索引(添加)的文档按照评分规则进行查 ...

  6. java 泛型与通配符(?)

    泛型应用于泛型类或泛型方法的声明. 如类GenericTest public class GenericTest<T> { private T item; public void set( ...

  7. ASP.NET AJAX入门系列(2):使用ScriptManager控件

    ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问W ...

  8. Hanlp实战HMM-Viterbi角色标注中国人名识别

    这几天写完了人名识别模块,与分词放到一起形成了两层隐马模型.虽然在算法或模型上没有什么新意,但是胜在训练语料比较新,对质量把关比较严,实测效果很满意.比如这句真实的新闻“签约仪式前,秦光荣.李纪恒.仇 ...

  9. [转]Ubuntu python-config

    转自:http://manpages.ubuntu.com/manpages/precise/man1/python-config.1.html recise (1) python-config.1. ...

  10. 脱壳:OEP(即程序入口点)查找 --- 基本思路和常见方法

    OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP), 只要我们找到程序真正的OEP,就可以立刻脱壳. PUSHAD (压栈) 代表程序的入口点, POPAD (出栈) 代表程序的出口 ...