
MyFlash初体验
https://github.com/Meituan-Dianping/MyFlash
安装
`yum install libgnomeui-develgcc -w -g `pkg-config --cflags glib-2.0` source/binlogParseGlib.c -o binary/flashback usr/lib64/libglib-2.0.a -lrt yum install install glib2*`
测试环境准备
https://github.com/Meituan-Dianping/MyFlash/blob/master/doc/TestCase.mdCREATE TABLE `tb_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nameBlob` longblob, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
回滚命令生成
`./MyFlash/binary/flashback --binlogFileNames=/alidata/mysql/mybinlog.000022 --outBinlogFileNameBase=22delete.flashback`
扩展
阿里云RDS实例,用户没有Super权限,导入带有set @@信息,会提示ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPERprivilege(s) for this operation报错。
本地5.7版本,测试去除set @@GTID_NEXT,当GTID模式开启状态,导入实例会提示报错:
ERROR 1782 (HY000) at line 19: @@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON.
只有将 GTID模式关闭,才可以正常导入
https://bugs.mysql.com/bug.php?id=85480
5.6版本没有以上问题
`mysqlbinlog -v -v --skip-gtids 22delete.flashback | sed 's@\/\*.*\*\/@@' |mysql -uroot -proot`
初步结论
解决方案
验证binlog2sql 是否支持blob转换
--w_blob.py 写入blobimport sysimport pymysqlimport ospath = "./"fp = open("/alidata/PG01.jpg", 'rb')img = fp.read()fp.close()database = pymysql.connect(host="localhost", user="root", passwd="root", db="qinxi")cursor = database.cursor()sql = "INSERT INTO tb_test (nameBlob) VALUES (%s);"args = (img)cursor.execute(sql, args)database.commit()cursor.close()database.close()print("============")print("Done! ")--r_blob.py 读取blobimport pymysql as mdbimport sysconn = mdb.connect(host='localhost',user='root',passwd='root',db='qinxi')cursor = conn.cursor()cursor.execute("SELECT nameBlob FROM tb_test LIMIT 1")fout = open('PG333.jpg','wb')fout.write(cursor.fetchone()[0])fout.close()cursor.close()conn.close()python binlog2sql.py -uroot -h10.200.6.53 -proot -B --start-file=mybinlog.000033 > 33.sql


本文分享内容是我自己的一些见解,欢迎大家一起来评论留言探讨,我会不定期更新内容,大家可以关注我哟~,也可以在今日头条搜索“青雨果果”关注我!~



文章转载自青雨果果,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




