返回顶部
首页 > 资讯 > 数据库 >MYSLQ 增量恢复学习及实践
  • 631
分享到

MYSLQ 增量恢复学习及实践

2024-04-02 19:04:59 631人浏览 泡泡鱼
摘要

Mysql的架构一般都是一主多从 或是双主高可用模式,物理故障不需要增量恢复什么情况需要增量恢复?一般是由人为引起的误操作才需要增量恢复。增量恢复的必需要满足的条件1)开启mysql log-bin 日志功

Mysql架构一般都是一主多从 或是双主高可用模式,物理故障不需要增量恢复

什么情况需要增量恢复?

一般是由人为引起的误操作才需要增量恢复。

增量恢复的必需要满足的条件

1)开启mysql log-bin 日志功能

2)存在一份全备加上全备之后的时刻到出问题时刻的所有增量binlog 文件备份。


增量恢复的思路:

先恢复全量,然后把全备时刻点以后的增量日志,按顺序恢复成sql文件,然后把文件中有问题的SQL语句删除(也可通过时间和位置点),再恢复到数据库


下面模拟认为误操作删除数据库后 通过增量恢复的过程


创建一个测试库 WWW 和 test  测试表

create database www character set utf8 collate utf8_general_ci;use www;CREATE TABLE `test` (  `id` int(4) NOT NULL,  `name` varchar(16) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

插入数据

insert test values(1,'xiaoming'),(2,'xiaozhang'),(3,'www'),(4,'koala');
select * from test;+----+-----------+| id | name      |+----+-----------+|  1 | xiaoming  ||  2 | xiaozhang ||  3 | www       ||  4 | koala     |+----+-----------+4 rows in set (0.00 sec)

 此时是全备时表里的数据

修改系统时间  到0点 刷新BINLOG后对www库进行全备

 

mysqldump -uroot -p123456 -S /data/3306/mysql.sock -B -F -x -R --master-data=2 www|gzip >/server/backup/www_$(date +%F).sql.gz

查看是否生产全备文件

[root@db03 backup]# lltotal 8drwxr-xr-x 2 root root 4096 Jul 13 02:18 tp-rw-r--r-- 1 root root  878 Jul 15 00:01 www_2016-07-15.sql.gz

将系统时间调整到10点后 再插入几条数据

mysql> insert test values(5,'hahaha'),(6,'changsha'),(7,'bbs');Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0

此时test表数据为

mysql> select * from test;+----+-----------+| id | name      |+----+-----------+|  1 | xiaoming  ||  2 | xiaozhang ||  3 | www       ||  4 | koala     ||  5 | hahaha    ||  6 | changsha  ||  7 | bbs       |+----+-----------+7 rows in set (0.00 sec)

开始模拟人为误操作将www 库删除

mysql> show databases;+--------------------+| Database           |+--------------------+| infORMation_schema || blog               || mysql              || oldboy             || oldboy_gbk         || oldgril            || performance_schema || xiaowan            |+--------------------+8 rows in set (0.00 sec)

 

进行恢复操作

1、首先查看BINLOG位置 将全备之后的binlog 文件全部备份出来 

如果不先备份 全备恢复后 又会写入LOG BIN 文件

-rw-r--r-- 1 root root  878 Jul 15 00:01 www_2016-07-15.sql.gz[root@db03 backup]# gzip -d www_2016-07-15.sql.gz [root@db03 backup]# grep CHANGE www_2016-07-15.sql-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000137', MASTER_LOG_POS=107;-rw-r----- 1 root root  150 Jul 15 00:01 mysql-bin.000135-rw-r----- 1 root root  150 Jul 15 10:10 mysql-bin.000136-rw-r----- 1 root root  397 Jul 15 10:09 mysql-bin.000137

2、对bin-log进行解析 找出误操作的那条语句 将该条语句进行删除

mysqlbinlog -d www mysql-bin.000135 mysql-bin.000136 mysql-bin.000137 >>wwwbin.sql

[root@db03 backup]# vim wwwbin.sql 

# at 318

#160715 10:06:12 server id 1  end_log_pos 397   Query   thread_id=17    exec_time=0     error_code=0

SET TIMESTAMP=1468548372;

drop database www    #如不删除恢复的时候误操作会被一同恢复到数据库中 那就又回到原点白忙活了!

;

DELIMITER ;

# End of log file

ROLLBACK ;

;

;


3、恢复全备数据

[root@db03 backup]# mysql -uroot -p123456 -S /data/3306/mysql.sock <www_2016-07-13.sql

查看一库,到全备之前的数据已经恢复了

[root@db03 backup]# mysql -uroot -p123456 -S /data/3306/mysql.sock -e "use www;select * from test;"+----+-----------+| id | name      |+----+-----------+|  1 | xiaoming  ||  2 | xiaozhang ||  3 | www       ||  4 | koala     |+----+-----------+


4、恢复增量数据 也就是通过bin-log 文件恢复 0点 到出问题之前的数据

将 解析成SQL文件的bin-log 导入数据库

[root@db03 backup]# mysql -uroot -p123456 -S /data/3306/mysql.sock www<wwwbin.sql

查看表 到误操作之前的数据都找回来了。

[root@db03 backup]# mysql -uroot -p123456 -S /data/3306/mysql.sock -e "use www;select * from test;"+----+-----------+| id | name      |+----+-----------+|  1 | xiaoming  ||  2 | xiaozhang ||  3 | www       ||  4 | koala     ||  5 | hahaha    ||  6 | changsha  ||  7 | bbs       |+----+-----------+


要注意的问题

1、数据库里如有多个库  -d 指定库

mysqlbinlog -d www mysql-bin.000135 mysql-bin.000136 mysql-bin.000137 >>wwwbin.sql


2、如果是重要的库出问题,那么最好停库或禁止库被应用服务写入,然后在恢复(iptables处理)。如果通过host解析的,注释解析文件记录,用户中心(接口停掉)。


3、多个binlog 文件要按顺序恢复。

mysqlbinlog -d www 01 02 03 04>bin.sql 或者for 循环读取顺序很重要。


4、如果不是drop,而是updata破坏数据,解决起来就复杂,一般需要停或禁止库被应用服务写入,然后再恢复。


如果是删除了某个库的某张表 则需要从bin-log 中分离出表的SQL语句的思路:

a.把原来指定oldboy库导出表结构,恢复好测试库,然后把oldboy_bin.sql语句恢复到测试库,然后再用mysqkdump导出需要的单个表,恢复到已经恢复了全备的正式库上。

b.www_bin.sql 最小按库分,那么可以grep”表名”把old_bin.sql所有对于该表的记录过滤出来。恢复到已经恢复了全备的正式库

mysqlbinlog -d oldboy >bin.sql 后,

grep 要恢复的表 bin.sql >a.sql


您可能感兴趣的文档:

--结束END--

本文标题: MYSLQ 增量恢复学习及实践

本文链接: https://lsjlt.com/news/40095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MYSLQ 增量恢复学习及实践
    MYSQL的架构一般都是一主多从 或是双主高可用模式,物理故障不需要增量恢复什么情况需要增量恢复?一般是由人为引起的误操作才需要增量恢复。增量恢复的必需要满足的条件1)开启MYSQL log-bin 日志功...
    99+
    2024-04-02
  • mysql增量备份及断点恢复
    简介增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次...
    99+
    2024-04-02
  • RabbitMQ学习及实践3--Spr
        根据学习的RabbitMQ知识配了一个SpringMVC的实现。这是一个完整的工程,view的部分使用freeMarker,持久化操作是通过mybatis实现。    整个工程的目录结构如下:src下的相关包的解释:    cont...
    99+
    2023-01-31
    RabbitMQ Spr
  • percona-xtrabackup完全及增量备份与恢复
    一、简介Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。其主要特点是备份过程快速、可靠,不会...
    99+
    2024-04-02
  • MySQL增量备份与恢复--实验
    1、创建全备 innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/home/mysql/3306/d...
    99+
    2024-04-02
  • mysql增量备份与恢复实战
    备份:mysqldump -uroot -p** -A -B -F --master-data=2 --single-transaction  --events > /root/all.sq...
    99+
    2024-04-02
  • Percona XtraBackup怎样实现全备及增量备份与恢复
    Percona XtraBackup怎样实现全备及增量备份与恢复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 p...
    99+
    2024-04-02
  • MySQL 数据恢复 全备份恢复以及增量恢复 (以手残删库为例)
    数据恢复原理图测试环境 MySQL5.51 首先新建数据库 lampol  数据表 test create database lampol;use lampol;create table...
    99+
    2024-04-02
  • MySQL——全量、增量备份与恢复(理论+实操)
    数据备份的重要性 1、在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果 2、造成数据丢失的原因 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃 数据库备份的分类 从物理与...
    99+
    2024-04-02
  • Mysql实现增量恢复的方法详解
    实验介绍 增量恢复一般适用的场景: 1、人为的sql语句破坏了数据库 2、在进行下一次完全备份之前发生系统故障导致数据库数据丢失 3、在主从架构中,主库数据发生了故障 丢失完全备份之后更改的数据的恢复步骤 ...
    99+
    2024-04-02
  • Oracle 学习之RMAN(十四)恢复实战--基于时间点恢复
    1. 我们先做一个全备RMAN> backup database ; Starting backup at 2015/07/09 ...
    99+
    2024-04-02
  • Oracle 学习之RMAN(十五)恢复实战--TSPITR
      TSPITR是英文Tablespace Point In Time Recovery的缩写。也就是表空间定点时间恢复。TSPITR是一种相对细粒度的不完全恢复技术。我们通常见到的还原操作,都是...
    99+
    2024-04-02
  • 物理写的判断 & 介质恢复 & 实例恢复 & 增量检查点
    物理写的检测:select  * from v$sysstat where lower(name) like&nbs...
    99+
    2024-04-02
  • 如何进行MySQL 5.6 xtrabackup 全量和增量的备份及恢复
    今天就跟大家聊聊有关如何进行MySQL 5.6 xtrabackup 全量和增量的备份及恢复,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。xtrab...
    99+
    2024-04-02
  • mysql数据库增量恢复多实例实战演示
    mysql主从复制原理要点       1、异步方式同步      &nbs...
    99+
    2024-04-02
  • Python机器学习及实践+从零开始通往
    内容简介   本书面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读者熟悉并且掌握当下最流行的机器学习、数据挖掘与自然语言处理工具...
    99+
    2023-01-31
    从零开始 机器 Python
  • 使用innobackupex完成数据增量备份及恢复的步骤
    使用innobackupex完成数据增量备份及恢复的步骤1. 规划备份目录及配置及my.cnfmkdir /backup/mysql/fullmkdir /backup/mysql/daily1mkdir ...
    99+
    2024-04-02
  • mysql增量备份及断点恢复脚本的示例分析
    这篇文章给大家分享的是有关mysql增量备份及断点恢复脚本的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简介增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只...
    99+
    2024-04-02
  • Oracle 学习之RMAN(十三)恢复实战--数据块修复
      在很多情况下,数据库只是某个数据文件的些许数据块发生损坏。这种情况,我们当然可是使用数据库恢复或者数据文件恢复的方式来解决问题。但是有点高射炮打蚊子的感觉。幸好RMAN提供了块级别的恢复。下面...
    99+
    2024-04-02
  • MySQL数据库如何实现Percona全量增量备份与恢复
    本文主要给大家简单讲讲MySQL数据库如何实现Percona全量增量备份与恢复,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL数据库如何实现Perc...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作