最近老友线上一个不太重要的数据库被自己误删了,于是找到小猪本猪我恢复数据,早已把"经验大于一切"思想贯彻全身的小猪肯定是不会放过这次机会滴,滴,滴,滴,滴.

开始枯燥的恢复环节

恢复方案选择

老友平时备份都是手动备份,这样子好像也只能选择旧备份数据+binlog来恢复了.

保护现场

关闭服务器,禁止数据继续写入

因为我要使用的是binlog方法恢复,所以要在数据库执行一段flush logs

表示开启新的一段binlog

本地数据库版本

老友服务器上的mysql版本是5.6

我本地5.7重新安装数据库太麻烦了,docker安装也麻烦.然后开始找有5.6版本的一键环境...

PhpStudy没

WampServer太粉(通过截图看好像也没有5.6)

APMServ没

phpenv有

....找啊找啊终于找到一个说的清清楚楚支持mysql5.6一键环境,然后就是下载安装巴拉巴拉的5.6环境搭建好了.

本地mysql版本开启binlog

可以看到我本地未开启binlog, no:开启 off:未开启

打开my.ini

# mysqld配置下增加以下内容

# binlog文件前缀,配置好这个就表示开启了bin

log-bin = mysql-bin

或者

log_bin=ON

log_bin_basename=/var/lib/mysql/mysql-bin

log_bin_index=/var/lib/mysql/mysql-bin.index

### 以下配置看你需要,不过只恢复数据的话下面不用管

# 前缀

log_bin_basename

# 设置此参数是指定二进制索引文件的路径与名称

log_bin_index

# 此参数表示只记录指定数据库的二进制日志

# 这个参数的使用方法有点坑.不是通过,分隔的哦具体百度一下

binlog_do_db

# 此参数表示不记录指定的数据库的二进制日志.不是通过,分隔的哦具体百度一下

binlog_ignore_db

# 此参数表示binlog使用的内存最大的尺寸

max_binlog_cache_size

# 此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试。

binlog_cache_size

# 使用二进制日志缓存的事务数量

binlog_cache_use

# 使用二进制日志缓存但超过

binlog_cache_disk_use

# 值并使用临时文件来保存事务中的语句的事务数量

binlog_cache_size

# 最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束

max_binlog_sizeBinlog

使用mysqlbinlog.exe恢复

#目录切换到mysql/bin下面

# 执行

.\mysqlbinlog.exe --database test(要恢复的数据库) -s ../data/mysql-bin.000707 > sqls-x\000707-all.txt

# 以上命令的意思是

# 提取mysql-bin.000707文件中的test数据库的语句(只显示日志中包含的语句,不显示其它信息。)

恢复了几个文件之后发现太大啦!!!

于是想着先恢复几个较为重要的表数据,发现mysql提供的工具并不支持恢复到某个表或语句,然后各种搜索引擎发现了几个开源项目binlog2sql、mysqlbinlog_flashback

使用binlog2sql恢复

binlog2sql

这二款工具里就它star最多,毫无疑问就是它了.

安装

# 克隆项目

git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql

# 安装依赖

pip install -r requirements.txt

环境安装和mysql配置

安装python2.7,3.4+ python的安装教程网上有非常多

修改本地mysql配置

server_id = 1

# 这个的值不一定非要一样

log_bin = /var/log/mysql/mysql-bin.log

max_binlog_size = 1G

binlog_format = row

binlog_row_image = full

设置mysql权限

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'127.0.0.1';

使用

# 切换到项目目录

1. cd 项目目录/binlog2sql/

2. 执行命令 python binlog2sql.py -h127.0.0.1 -P3306 -uroot -proot -dtest -t wp_userinfo wp_balance --sql-type INSERT DELETE --start-file=mysql-bin.000715 --stop-file=mysql-bin.000726 > C:\phpEnv\server\mysql\mysql-5.6\bin\sqls-x\all.sql

3. 等待执行完毕即可

4. 将这些语句导入到数据库就ok啦

-h127.0.0.1(数据库链接)

-P3306(数据库端口)

-uroot(数据库账号)

-proot(数据库密码)

-dtest(要恢复的数据库)

-t wp_userinfo wp_balance(导出的指定表)

--sql-type INSERT DELETE(要导出的指定语句)\

--start-file=mysql-bin.000715 --stop-file=mysql-bin.000726(开始binlog到结束binlog)

C:\phpEnv\server\mysql\mysql-5.6\bin\sqls-x\all.sql(将打印内容输出大指定文件)

成果

使用过程中遇到的问题

编码问题

出现编码问题的地方会有很多,具体还是要看报错.

导致的问题

报错直接停止恢复

解决方法

忽略该编码(self.schema_length - 1).decode("utf-8", "ignore")

建议

1.线上一定要记着开启binlog

2.再不济也要配置一下任务计划备份哦

3.有条件的伙伴可以使用XtraBackup进行备份

mysql log all sql_记录一次mysqlbinlog恢复过程相关推荐

  1. mysql 记录binlog过程_记录一次mysqlbinlog恢复过程

    最近老友线上一个不太重要的数据库被自己误删了,于是找到小猪本猪我恢复数据,早已把"经验大于一切"思想贯彻全身的小猪肯定是不会放过这次机会滴,滴,滴,滴,滴. 开始枯燥的恢复环节 恢 ...

  2. linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志

    mysql有以下几种日志: 错误日志:     -log-err 查询日志:     -log 慢查询日志:   -log-slow-queries 更新日志:     -log-update 二进制 ...

  3. mysql bin_超级有用的15个mysqlbinlog命令

    在MySQL或MariaDB中,任意时间对数据库所做的修改,都会被记录到日志文件中.例如,当你添加了一个新的表,或者更新了一条数据,这些事件都会被存储到二进制日志文件中.二进制日志文件在MySQL主从 ...

  4. centos mysql压缩文件直接恢复_CentOS下利用mysqlbinlog恢复MySQL数据库

    如果不小心对数据库进行误操作,而又没有及时备份怎么办?这恐怕是广大的coder经常遇到的一类问题. 我今天就因为不小心删除了某个数据库,但最后的备份是1个礼拜前的,唯一能解决的办法就是通过mysqlb ...

  5. 怎么在mysql查看运行日志_如何查看mysql运行、访问记录等日志

    如何查看mysql运行.访问记录等日志 1.首先确认你日志是否启用了 mysql>show variables like 'log_bin'; mysql>show variables l ...

  6. MySQL的操作日志记录

    如何配置mysql数据库的操作日志及如何查看mysql的操作日志记录 MySQL的几种操作日志 1.错误日志 log_error (主要是记录启动.运行.停止mysql时出现的致命问题,系统级别的错误 ...

  7. 如何配置mysql数据库的操作日志及如何查看mysql的操作日志记录

    MySQL的几种操作日志 1.错误日志 log_error (主要是记录启动.运行.停止mysql时出现的致命问题,系统级别的错误记录) 2.查询日志 log (主要记录数据库建立的客户端连接和执行的 ...

  8. php mysql log文件怎么打开_如何查看mysql的日志文件

    首先,介绍一下mysql日志的种类.一般来说,日志有五种,分别为: (推荐学习:mysql教程)错误日志:-log-err (记录启动,运行,停止mysql时出现的信息) 二进制日志:-log-bin ...

  9. php mysql log文件,mysql log文件【读书笔记1】_MySQL

    bitsCN.com mysql log文件[读书笔记1] 一,错误日志文件:Error.log 记录Mysql Server运行过程所有较为严重的警告或错误信息,以及Mysql Server启动和关 ...

最新文章

  1. CentOS7 php7.0 升级到php7.3
  2. Python---内置函数
  3. HDU1899 Sum the K-th's(树状数组)
  4. 一起学nRF51xx 0 - 环境搭建
  5. ES关于文档的基本操作
  6. img = img1*mask + img2*(1-mask) How do that ?
  7. python中isort的使用
  8. linux 用户管理 指令,Linux 用户管理常用命令
  9. python里的class_Python中的Class的讨论
  10. IE、Chrome、Firefox下的按钮文字居中
  11. 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
  12. SQL基础语句汇总-学习
  13. h5网页小游戏php源码,H5 组词小游戏源代码
  14. nes模拟器java版_JAVA版手机FC/Nes模拟器vN
  15. 计算机桌面有阴影,电脑桌面图标有蓝色阴影 怎么去除桌面图标阴影
  16. 盘点2017 CES展会所有亮眼黑科技 (下)
  17. mongodb安装及操作
  18. 按键,触摸屏流程分析
  19. 正态性/方差齐性检验及stata实现
  20. 关键词优化外包陷阱,你中招了吗?

热门文章

  1. Sun Oracle服务器做磁盘raid
  2. centos8搭建nsis交叉编译环境
  3. Raft -【go一致性算法】
  4. linux httpd 开机启动脚本,httpd服务如何开机启动
  5. JVM优化之系统CPU飙高和GC频繁
  6. Java类型推断将不再支持可变性规范
  7. 暴力/图论 hihoCoder 1179 永恒游戏
  8. DPM灾难切换应用场景
  9. 算法高级(12)-分布式系统常见负载均衡算法
  10. idea中使用git直接提交本地写好的代码