mysql_binlog恢复

mysqlbinlog是mysql自带的回滚数据的机制,默认是不开启的需要手动开启。 
手动开启mysql-binlog日志 
1,在mysql配置文件my.cnf加上如下配置 
[mysqld] 
log-bin=mysql-bin 
重启mysql 

2,

查看是否已经开启了binlog命令 
show variables like ‘log_bin’ 
这里写图片描述

3,查看标准的sql语句(按照时间)

mysqlbinlog  --start-datetime="2018-07-03 11:20:02" --stop-datetime="2018-07-03 11:20:12" --base64-output=DECODE-ROWS -v /data/mysql-bin.000007 > sql__log.sql

 通过查看sql语句并根据需要筛选需要恢复的数据

例:cat sql__sql.sql |sed -n /###/p| sed 's/###//g;s/@.*/&,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;'| sed -r 's/(@17.*),/\1;/g'|sed -r 's/@[0-9][0-9]?=/ /g' ^C

cat delete.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@2.*),/\1;/g' | sed 's/@[1-9]=//g' >insert.sql^C

mysql -u root -p *** -d 库 < sql__sql.sql

 

 

    1、直接进行恢复 
mysqlbinlog /usr/local/mysql/data/binlog.123456 | mysql -u root -p

2、按位置进行恢复 主要参数[–stop-position –start-position] 
mysqlbinlog –stop-position=368312 –start-position=368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p 

这里的位置可以通过读取binlog文件进行查看,不过这个也必须自己知道进行了那些操作。后面说如果看到的文件都是乱码或者看不到真正sql的问题 

转载于:https://www.cnblogs.com/MR-HAIBO/p/9264276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GTID(Global Transaction ID)是MySQL 5.6版本引入的一种全局事务标识机制,用于在主从复制和数据恢复等场景下精确追踪事务的执行情况。在GTID模式下,每个事务都会分配一个全局唯一的ID,由GTID组成,用于标识该事务的唯一性。 在MySQL中,有两种类型的GTID:基于二进制日志的GTID(gtid_binlog)和基于事务的GTID(gtid_current_pos)。其中,基于二进制日志的GTID是默认启用的。它由两部分组成:server_uuid和transaction_id。其中,server_uuid是MySQL实例的唯一标识符,transaction_id是一个递增的整数,用于标识每个事务。 基于GTID的数据恢复可以通过以下步骤实现: 1. 确认目标数据库的GTID模式,以及需要恢复的数据起始和结束的GTID范围。 2. 在备份服务器上创建一个与目标数据库相同的空数据库。 3. 将备份服务器上的二进制日志文件和索引文件拷贝到目标服务器上,并将它们放置在与备份服务器相同的目录下。 4. 在目标服务器上使用mysqlbinlog命令解析备份服务器上的二进制日志文件,并过滤出需要恢复的数据,生成一个SQL文件。 5. 在目标服务器上执行步骤4生成的SQL文件,恢复数据。 在执行步骤4时,可以使用mysqlbinlog命令的--start-position和--stop-position参数指定需要恢复的二进制日志文件的起始和结束位置,也可以使用--start-datetime和--stop-datetime参数指定需要恢复的时间范围。 需要注意的是,在基于GTID的数据恢复中,必须确保目标服务器和备份服务器的server_uuid相同,否则会导致GTID不一致,无法进行数据恢复

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值