mysql通过binlog恢复数据

如果mysql不小心操作失误导致数据错误或者丢失这时候binlog起到了很大的作用

恢复有几种方式

1.按时间恢复--start-datetime

如果确定了时间点,那么按时间恢复是一个再好不过的事,一般是通过日常的定期备份+差异备份(日志)

如果日常备份在4点,出错的时间在12:00点,12:30发现的,首先我们要确认12点出了什么错,12点以后的数据还能不能继续使用,如果不影响,那么我们只需跳过12:00执行的数据即可

首先,恢复4点的备份

然后,通过binlog获取4点到11:59的数据,获取的数据可以直接作用到数据库中,避免二次污染,最好先生成sql文件

mysqlbinlog --start-datetime="2014-11-07 04:01:00"  --stop-datetime="2014-11-07 11:59:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql

在获取12:01-12:30的数据

mysqlbinlog --start-datetime="2014-11-07 12:01:00"  --stop-datetime="2014-11-07 12:30:00" /data/mysql/data/mysql-bin.000020 >>/home/madong/aa.sql

最后通过mysql命令行

source   /home/madong/aa.sql

如果12点以后的数据还不能继续使用

那么我们只需要恢复到12点,12:00-12:30的数据就不需要恢复

2.通过--start-position节点

思路和上面的一样,首先要确定节点的id,在恢复

例:

描述:2014-11-07 13:50 游戏数据库数据全部清空

故障发现时间:13:50

故障发生时间:13:40左右

故障结束时间:15:55

恢复过程:

故障触发,游戏马上关服,进行维护,故障原因已知(数据没了)

1.首先确认恢复时间点

恢复带2014-11-07 13:30

2.因为刚开服不久,所以准备从最原始开始恢复,不从4点的完整备份节点恢复

准备不直接操作,先生成sql,

mysqlbinlog --start-datetime="2014-11-06 09:50:00"  --stop-datetime="2014-11-07 13:30:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql

(aa.sql 500M左右)

3.因数据库重置之后又有玩家注册,如果导入数据会出现主键冲突,所以再次清空数据库(保留基表数据)

4.导入sql

进入mysql命令行,并切换数据库(use DBNAME)

source /home/madong/aa.sql

执行开始时间14:57

结束时间15:54  大约一个小时

时间: 2024-11-05 17:20:23

mysql通过binlog恢复数据的相关文章

【转】【MySQL】mysql 通过bin-log恢复数据方法详解

mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这个指令来完成的 /mysql/bin/mysqlbinlog --database=fox --start-date="2013-01-22 5:00:00" --stop-date="2013-01-22 9:00:00" /mysql/data/mysql-bin.

利用mysql的binlog恢复数据

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与master同步. 1.开启binary log功能 需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可      eg:      [mysqld]            

Linux下面的mysql的bin-log恢复数据

转自:http://blog.sina.com.cn/s/blog_13dd6daa80102wbht.html 一.开启binlog日志: 编辑打开mysql配置文件my.cnf,在[mysqld]区块设置/添加 log-bin=mysql-bin  确认是打开状态(值 mysql-bin 是日志的基本名或前缀名),重启mysqld服务使配置生效.日志刷新命令:mysql> flush logs. 二.也可登录mysql服务器,通过mysql的变量配置表,查看二进制日志是否已开启 mysql>

mysql从binlog恢复数据

首先, 要有一个可用的mysql, 安装步骤在这里不表了, 之前文章里有一篇介绍安装的. 1. 开启binlog. 为了可以从binlog里恢复, 首先要开启记录binlog: cat /etc/my.cnf 添加如下几行: log-bin=mysql-bin #表示开启binlog, 且binlog物理文件在/var/lib/mysql/mysql-bin.000000x, 同一目录下还有一个mysql-bin.index文件 sync_binlog=1 #每次事物提交都把binlog写入到磁

mysql利用bin-log恢复误删除数据.

模拟备份数据库mysqldump db1 > db1.sql 启用新的bin-log文件mysql>flush logs; mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

mysql二进制日志恢复数据

1.开启mysql的二进制日志 在mysql的配置文件my.ini中添加: log-bin=mysql-bin(这个名称可以随便取,英文,不知道中文可不可以,没试过) 2.重启mysql 重启后,假如在mysql的存储数据的目录中出现一下文件,则已经二进制日志已经开启 mysql-bin.000001是mysql的二进制日志文件,不可以直接查看,可以通过导出数据查看,导出数据的语句为 解释一下:红色下划线的是mysql二进制mysql-bin.000001文件所在的目录,要进入这里执行后面的语句

MySql binlog恢复数据

1. 直接导入数据库 mysqlbinlog --database=testdb mysql-bin.000001 | mysql -uroot -f 2. 导出成SQL文 (1) 从binlog输出为SQL mysqlbinlog -vv --database=testdb --base64-output=decode-rows mysql-bin.000001 > 0001.sql grep "###" 0001.sql > 0001_#.sql 导出的SQL文如下格式

MySQL利用binlog恢复误操作数据

在人工手动进行一些数据库写操作的时候(比方说数据订正),尤其是一些不可控的批量更新或删除,通常都建议备份后操作.不过不怕万一,就怕一万,有备无患总是好的.在线上或者测试环境误操作导致数据被删除或者更新后,想要恢复,一般有两种方法. 方法一.利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时.方法二.如果binlog的格式为row,那么就可以将binlog解析出来生成反向的原始SQL 以下是利用方法二写的一个python脚本b

mysql 二进制日志恢复数据实验

一:binlog基础知识 1.mysqlbinlog常见选项: --start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间 --stop--datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间  取值和上述一样 --start-position:从二进制日志中读取指定position事件位置作为起始 --stop-position:从二进制日志中读取指定position事件位置作为事件截止 2.binlog最重要的使用场景 mysql主从复制