MySQL-Binlog

基于 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-12-02 07:54:30
mysq 正确清理binlog日志 前言: MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。 【方法一】手动清理binlog 清理前的准备: ① 查看主库和从库正在使用的binlog是哪个文件 ? 1 2 show master status\G show slave status\G ② 在删除binlog日志之前,首先对binlog日志备份,以防万一 开始动手删除binlog: ? 1 purge master logs before '2016-09-01 17:20:00' ; //删除指定日期以前的日志索引中binlog日志文件 或 ? 1 purge master logs to 'mysql-bin.000022' ; //删除指定日志文件的日志索引中binlog日志文件 注意: 时间和文件名一定不可以写错,尤其是时间中的年和文件名中的序号,以防不小心将正在使用的binlog删除!!! 切勿删除正在使用的binlog!!! 使用该语法,会将对应的文件和mysql-bin.index中的对应路径删除。 【方法二】通过设置binlog过期的时间,使系统自动删除binlog文件 ? 1 2 3 4 5 6 7

mysql binlog 恢复

萝らか妹 提交于 2019-12-01 04:02:28
开始先执行每天自动备份的数据库 show master status; 再使用binlog恢复 binlog直接恢复数据库,不建议直接使用 mysqlbinlog --start-datetime="2018-8-11 02:00:00" C:\Users\donald\Desktop\mysql.000243 | mysql -uroot -p sakila 优先使用下面的,把binlog导出sql文件,看下没有问题再重新导入 mysqlbinlog --start-datetime="2018-8-11 02:00:00" --database=sakila C:\Users\donald\Desktop\mysql.000243 >C:\Users\donald\Desktop\binlog.sql 恢复的数据不包含视图,视图需要另外使用工具导出导入 mysqldump -E -R -u ursername-ppassword --databases db> C:\Users\Administrator\Desktop\db.dump 使用mysqldump ,系统不会区分视图和表,因此有视图的时候dump一定会报错 另外恢复的数据库,某些视图或者function是使用非root 账号创建的,对应的数据也要有同样的账号,否则会有 execute command denied

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

Mysql binlog 基础知识

不打扰是莪最后的温柔 提交于 2019-11-26 16:46:15
> 新搭建的个人博客,欢迎光临 < 一. Binlog格式介绍 模式1 Row :日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。 优点: row level模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row level的日志内容会非常清楚的记录下每一行数据修改的细节。且不会出现某些特定情况下的存储过程,或function,以及 trigger的调用和触发无法被正确复制的问题。 缺点: row level模式下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:update product set owner_member_id = ‘b’ where owner_member_id = ‘a’,执行之后,日志中记录的不是这条update语句所对应额事件(MySQL以事件的形式来记录bin-log日志),而是这条语句所更新的每一条记录的变化情况,这样就记录成很多条记录被更新的很多个事件。自然,bin-log日志的量就会很大。尤其是当执行alter table之类的语句的时候,产生的日志量是惊人的。因为MySQL对于alter table之类的表结构变更语句的处理方式是整个表的每一条记录都需要变动