MyFlash 安装

Tue 23 September 2025

MyFlash 安装 简介 MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。 该工具已经在美团点评内部使用。

安装 1. MyFlash官网 https://github.com/Meituan-Dianping/MyFlash

  1. 环境要求 binlog格式必须为row,且binlog_row_image=full 仅支持5.6与5.7版本 只能回滚DML(增、删、改)
  2. MyFlash安装
  3. 安装依赖 yum install gcc* pkg-config glib2 libgnomeui-devel -y
  4. 克隆源代码 git clone https://github.com/Meituan-Dianping/MyFlash.git
  5. 开始安装 cd MyFlash gcc -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback
  6. 配置环境变量 vim /etc/profile

在文件最后一行添加

alias flashback=/home/MyFlash/binary/flashback

生效环境配置

source /etc/profile 5. 检查安装成功 cd /home/MyFlash/binary ./flashback --help 4. MySQL配置 -- 查看MySQL版本 select version(); -- 查看是否开启biglog show variables like 'log_bin'; 1. 创建binlog目录

创建目录

mkdir logs

设置权限

chmod -R 777 /home/logs/ chown mysql:mysql /home/logs/ 2. 开启biglog vim /etc/my.cnf

[mysqld] log-bin = /home/logs/mysql-bin.log expire-logs-days = 5 max-binlog-size = 500M server-id = 1 binlog_format=ROW 3. 重启MySQL

重启

service mysqld restart

启动

service mysqld start

停止

service mysqld stop 5. 闪回操作

查看biglog日志

mysqlbinlog /home/logs/mysql-bin.000001 –base64-output=decode-rows -v 1. 生成回滚文件

进入MyFlash的bin目录

cd /home/MyFlash/binary

执行回滚文件 binlog_output_base.flashback

./flashback --binlogFileNames=/home/logs/mysql-bin.000001 --sqlTypes='INSERT' --databaseNames=test_db --tableNames=app_user --start-datetime='2020-04-28 16:00:00' 命令行选项

命令 描述 binlogFileNames binlog 文件所在目录位置; databaseNames 指定需要回滚的数据库名; tableNames 指定需要回滚的表名; start-datetime 指定回滚的开始时间,不指定则不限定时间,%Y-%m-%d %H:%M:%S; stop-datetime 指定回滚的结束时间,不指定则不限定时间,%Y-%m-%d %H:%M:%S; start-position 指定回滚开始的位置 stop-position 指定回滚结束的位置 sqlTypes 指定需要回滚的sql类型; 目前支持的过滤类型是INSERT, UPDATE ,DELETE;多个类型可以用“,”隔开;

  1. 执行回滚

在binlog_output_base.flashback所在目录下执行以下命令

mysqlbinlog binlog_output_base.flashback | mysql -h 127.0.0.1 -uroot -p

mysqlbinlog binlog_output_base.flashback | mysql -uroot -p

输入数据库密码

Category: 编程mysql


MySQL PREPARE STATEMENT

Tue 23 September 2025

MySQL PREPARE STATEMENT 预处理语句 PREPARE、EXECUTE、DEALLOCATE PREPARE

1.1 基本用法 CREATE PROCEDURE test() BEGIN SET @selectsql = 'select * from app_user'; -- 预定义SQL PREPARE stmt FROM @selectsql; -- 执行SQL EXECUTE stmt; -- 释放连接 DEALLOCATE PREPARE stmt; END; 1.2 …

Category: 编程mysql

Read More

MySQL 字符函数

Tue 23 September 2025

MySQL 字符函数 目录 1. CONCAT 2. CONCAT_WS 3. SUBSTR、MID、SUBSTRING 4. LEFT、RIGHT 5. SUBSTRING_INDEX 6. LOWER、LCASE 7. UPPER 8. LENGTH、OCTET_LENGTH 9. TRIM 10. LPAD、RPAD 11. REPEAT 12. INSTR 13. LOCATE 14. FIELD 15. FIND_IN_SET 16. REPLACE 17. REVERSE 18. CHAR_LENGTH、CHARACTER_LENGTH …

Category: 编程mysql

Read More

MySQL 实现Split

Tue 23 September 2025

MySQL 实现Split 1. SUBSTRING_INDEX

SUBSTRING_INDEX(待截取字符串,截取数据依据字符,截取字符的位置)

SELECT SUBSTRING_INDEX('0,1,626,691,692,',',',4);

输出 0,1,626,691

  1. REVERSE

REVERSE 函数反转字符 …

Category: 编程mysql

Read More

MySQL 触发器

Tue 23 September 2025

MySQL 触发器 触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来 …

Category: 编程mysql

Read More

字符串转行

Tue 23 September 2025

字符串转行 help_topic GROUP_CONCAT GROUP_CONCAT mysql.help_topic select GROUP_CONCAT(id) as ids from test

4488,4489,4490,4491,4492,4493,4494

SET @ids = '4488,4489,4490,4491,4492,4493,4494';

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@ids, ',', ht.help_topic_id + 1), ',', -1) as id FROM mysql.help_topic ht WHERE ht.help_topic_id …

Category: 编程mysql

Read More

推荐使用sharding-jdbc

Tue 23 September 2025

推荐使用sharding-jdbc sharding-jdbc Apache官网 https://shardingsphere.apache.org/index_zh.html

简介(Mycat官方文档太凌乱都是坑) Mycat是一个彻底开源的,面向企业应用开发的大数据库集群。从定义和分类来看,它是一个开源的分布式 …

Category: 编程mysql

Read More

时间函数

Tue 23 September 2025

时间函数 目录 1. 基础用法 1.1 NOW() 1.2 CURDATE() 1.3 CURTIME() 1.4 DATE() 1.5 EXTRACT() 1.6 DATE_ADD、DATE_SUB 1.7 ADDDATE、SUBDATE 1.8 DATEDIFF 1.9 TIMESTAMPDIFF 1.10 DATE_FORMAT 1.11 STR_TO_DATE 1.12 LAST_DAY 2 …

Category: 编程mysql

Read More

查询语句

Tue 23 September 2025

查询语句

SELECT column_name AS '字段名称', column_type AS '字段类型', column_comment AS '字段描述', IF(column_key='PRI','是','否') AS '是否主键唯一', IF(IS_NULLABLE='NO','是','否') AS '是否非空必填' FROM information_schema. COLUMNS …

Category: 编程mysql

Read More
Page 1 of 1