MyFlash

连延迟从库都用不上了,MySQL备份还能恢复吗?

為{幸葍}努か 提交于 2020-10-18 02:39:30
​背景 首先交代一下背景,由于某些因素的限制,我们公司目前的备份策略采用的是隔天全备的方案,增量备份则使用的是binlog server的方式,那么如何快速恢复就成为了我们需要思考的问题。 正文 恢复需求 根据我以往的一些经验来说,通常需要从备份恢复数据的场景有如下几种: 被误删库了; 被误删表了,类型为TRUNCATE或者DROP; 被误删列了,类型为ALTER ... DROP COLUMN; 被误删数据了,类型为DELETE或者UPDATE或者REPLACE; 表空间损坏或出现坏块了。 根据场景来说,我们可以大致分为两类: 第一类为不可逆恢复,也就是通常的DDL,比如上述的1、2、3、5等场景; 第二类为可逆的恢复,通常可以利用binlog进行回滚(要求binlog格式为ROW,binlog_image为FULL),也就是对应上述的场景4。 对于第二类的恢复需求一般来说都比较容易处理,可以利用binlog回滚工具,例如业界比较著名的有binlog2sql以及MyFlash等,这里暂不赘述,我们重点来讨论第一类需求。 为了达到快速恢复的目的,业界DBA经常会采用的方式就是部署一个延迟从库来解决,我们公司目前所有的核心DB都部署了延迟从库。但是即便有了延迟从库,假设我们错过了延迟的时间,或者在后续利用延迟从库恢复的时候指定错了位点,导致了误删DDL同样应用到了从库

MySQL数据恢复

江枫思渺然 提交于 2020-08-17 08:38:17
1 前言 数据恢复的前提的做好备份,且开启 binlog , 格式为 row 。如果没有备份文件,那么删掉库表后就真的删掉了, lsof 中还有记录的话,有可能恢复一部分文件,但若刚好数据库没有打开这个表文件,那就只能跑路了。如果没有开启 binlog ,那么恢复数据后,从备份时间点开始的数据都没得了。如果 binlog 格式不为 row ,那么在误操作数据后就没有办法做闪回操作,只能老老实实地走备份恢复流程。 2 直接恢复 直接恢复是使用备份文件做全量恢复,这是最常见的场景 2.1 mysqldump备份全量恢复 使用 mysqldump 文件恢复数据非常简单,直接解压了执行 gzip -d backup.sql.gz | mysql -u<user> -h<host> -P<port> -p 2.2 xtrabackup备份全量恢复 恢复过程 # 步骤一:解压(如果没有压缩可以忽略这一步) innobackupex --decompress <备份文件所在目录> # 步骤二:应用日志 innobackupex --apply-log <备份文件所在目录> # 步骤三:复制备份文件到数据目录 innobackupex --datadir=<MySQL数据目录> --copy-back <备份文件所在目录> 2.3 基于时间点恢复 基于时间点的恢复依赖的是 binlog 日志

binlog2sql的使用

我只是一个虾纸丫 提交于 2020-08-14 11:23:58
binlog2sql 是大众点评开源的一款用于解析 binlog 的工具,可以用于生成闪回语句,项目地址 binlog2sql。 5.1.1 安装 unzip binlog2sql.zip cd binlog2sql-master/ 安装依赖 pip install -r requirements.txt 5.1.2 生成回滚SQL python binlog2sql/binlog2sql.py --flashback \ -h<host> -P<port> -u<user> -p'<password>' -d<dbname> -t<table_name>\ --start-file='<binlog_file>' \ --start-datetime='<start_time>' \ --stop-datetime='<stop_time>' > ./flashback.sql python binlog2sql/binlog2sql.py --flashback \ -h<host> -P<port> -u<user> -p'<password>' -d<dbname> -t<table_name> \ --start-file='<binlog_file>' \ --start-position=<start_pos> \ --stop-position=<stop_pos>

MongoDB文档(二)--查询

萝らか妹 提交于 2020-08-14 11:01:29
(一)查询文档 查询文档可以使用以下方法 # 以非结构化的方式显示所有的文档 db. < collectionName > .find(document) # 以结构化的方式显示所有文档 db. < collectionName > .find(document).pretty() # 只返回一个文档(结构化方式) db. < collectionName > .findOne() 测试1 : 使用find()方法以非结构化的方式查询文档 > db.blog.find() { "_id" : ObjectId("5ebd7133c50e24a9d8fb2a7a"), "title" : "Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理", "Link" : "https://www.cnblogs.com/lijiaman/p/12885649.html", "summary" : "(一)相关概念逻辑卷是使用逻辑卷组管理(Logic Volume Manager)创建出来的设备,如果要了解逻辑卷,那么首先...", "tags" : [ "Linux", "study" ], "post" : "2020-05-13 23:17", "views" : 57, "comments" : [ { "user" : "user1", "message" : "mark!

删库不跑路,MySQL数据来恢复

帅比萌擦擦* 提交于 2020-08-06 21:14:58
日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生。那么,如果连数据都恢复不了,还要什么 DBA。 1. 前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉库表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。但若刚好数据库没有打开这个表文件,那就只能跑路了。如果没有开启 binlog,那么恢复数据后,从备份时间点开始的数据都没了。如果 binlog 格式不为 row,那么在误操作数据后就没有办法做闪回操作,只能老老实实地走备份恢复流程。 2. 直接恢复 直接恢复是使用备份文件做全量恢复,这是最常见的场景。 2.1 mysqldump 备份全量恢复 使用 mysqldump 文件恢复数据非常简单,直接解压了执行: gzip -d backup.sql.gz | mysql -u<user> -h<host> -P<port> -p 2.2 xtrabackup 备份全量恢复 恢复过程: # 步骤一:解压(如果没有压缩可以忽略这一步) innobackupex --decompress <备份文件所在目录> # 步骤二:应用日志 innobackupex --apply-log <备份文件所在目录> # 步骤三:复制备份文件到数据目录 innobackupex --datadir=

实测两款SQL回滚工具

匆匆过客 提交于 2020-05-01 17:18:02
第一个:binlog2sql 软件版本要求: Python 2.7, 3.4+ MySQL 5.6, 5.7 下载地址: https://github.com/danfengcao/binlog2sql 缺点:不支持8.0 优点:不需把binlog下载到本地,即可生成回滚SQL 使用方法: python /opt/software/binlog2sql/binlog2sql/binlog2sql.py -h172.18.54.93 -P3308 -udba -p'123456' -dtest -tt1 --start-file='mysql-bin.000016' --start-datetime='2020-04-29 17:40:00' --stop-datetime='2020-04-29 17:44:00' -B --back-interval 0 注意:使用的时候带上--back-interval 0 否则导入回滚SQL的时候,每1000条SQL会sleep 1秒,这里有点坑。 第二个:myflash 软件要求:美团点评用C语言开发,需要安装gcc,glib2 下载地址:git clone https://github.com/Meituan-Dianping/MyFlash.git 该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具

第6课 Flash存储器和MTD驱动

时光怂恿深爱的人放手 提交于 2020-04-24 17:53:18
6.1 MTD MTD(memory technology device内存技术设备) 在硬件和文件系统之间提供了一个抽象的接口。 6.1.1 MTD 驱动 接下来,我们在uClinux下实现MTD,进入目录:cd /work/uClinux-dist/linux-2.4.x/drivers/mtd/maps 修改config.in文件:sudo gedit Config.in,在endmenu前添加一行: dep_tristate ' CFI Flash device mapped on myboard_flash' CONFIG_MTD_MYFLASH $CONFIG_MTD_CFI,如下图: 保存退出。 然后再该目录下添加myflash.c文件。下面链接里有flash.c文件,直接使用。 https://pan.baidu.com/disk/home?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=#/all?vmode=list&path=%2F%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E8%B5%84%E6%96%99%2Flesson%2F%E8%B5%84%E6%96%99%2Flesson%206 在该路径下修改Makefile文件

基于 MyFlash 的 MySQL数据恢复

☆樱花仙子☆ 提交于 2019-12-05 17:21:34
以前mysql回复误删数据用的比较多的是基于原始binlog或binlog2sql,昨天又遇到一例开发误删的问题,这次用用美团开源的工具 MyFlash试试。用下来效果还是不错的,基于库 or 表的过滤可以有效的筛选出来目标sql。 #### 项目地址 https://github.com/Meituan-Dianping/MyFlash/ ####实现原理 https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651747096&idx=1&sn=e561ce9254f69c3fcd04c73b44e56e69&chksm=bd12aa558a65234332298e1d611da408ec45afb2d08ecd22078a600379525e75b2fa13149fb0&mpshare=1&scene=23&srcid=1116o1gBWoNf47Rv1E1ngYir#rd ####限制 1. binlog格式必须为row,且binlog_row_image=full 2. 仅支持5.6与5.7 3. 只能回滚DML(增、删、改) ####安装 cd /opt git clone https://github.com/Meituan-Dianping/MyFlash.git yum install libgnomeui

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

我怕爱的太早我们不能终老 提交于 2019-11-27 03:48:35
> 新搭建的个人博客,欢迎光临 < 为保证没有其他参数配置影响,重新安装配置了一台最小化安装的CentOS7虚拟机 1. 基础知识 安装mysql5.6数据库 https://my.oschina.net/sgmder/blog/1631045 Mysql binlog初步理解 https://my.oschina.net/sgmder/blog/1631432 2. 配置mysql,开启binlog、修改binlog模式为Row Level模式 vi /etc/my.cnf 修改mysql配置文件,在[mysqld]下增加以下内容 # 注释: 开启binlog 文件名以mysql-bin开头 log-bin = mysql-bin # 注释: 备份恢复模式不需要开启Row模式 闪回需要开启Row模式 binlog_format="ROW" 重启mysql数据库 binlog开启 生成文件/var/lib/mysql/mysql-bin.000001 service mysqld restart 登录数据库 然后创建测试数据库demo和测试表user mysql> create database demo; Query OK, 1 row affected (0.00 sec) mysql> use demo; Database changed mysql> CREATE

基于 MyFlash 的 MySQL 数据恢复

拟墨画扇 提交于 2019-11-27 03:28:41
以前mysql回复误删数据用的比较多的是基于原始binlog或binlog2sql,昨天又遇到一例开发误删的问题,这次用用美团开源的工具 MyFlash试试。用下来效果还是不错的,基于库 or 表的过滤可以有效的筛选出来目标sql。 #### 项目地址 https://github.com/Meituan-Dianping/MyFlash/ ####实现原理 https://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651747096&idx=1&sn=e561ce9254f69c3fcd04c73b44e56e69&chksm=bd12aa558a65234332298e1d611da408ec45afb2d08ecd22078a600379525e75b2fa13149fb0&mpshare=1&scene=23&srcid=1116o1gBWoNf47Rv1E1ngYir#rd ####限制 1. binlog格式必须为row,且binlog_row_image=full 2. 仅支持5.6与5.7 3. 只能回滚DML(增、删、改) ####安装 cd /opt git clone https://github.com/Meituan-Dianping/MyFlash.git yum install libgnomeui