1、环境准备(版本是我安装的版本,供参考):

Git
        Python 3.9.5
        Pip 22.0.4

2、下载binlog2sql源码:

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

3、安装工具需要的依赖:

cd binlog2sql  //进入下载的源码目录里

pip install -r requirements.txt

4、使用demo

binlog2sql一般是在mysql回滚的时候使用,本篇文章主要介绍该工具的安装和排错,如果想了解具体的回滚流程,可以参考这篇文章:https://blog.csdn.net/Interest1_wyt/article/details/115028429

生成回滚sql命令demo:

python E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'123456' -d test -t t1  --start-file E:\Program Files (x86)\mysql-8.0.23-winx64\data\binlog.000069 --start-position 1105 --stop-position 1343 -B

更多用法可以参考binlog2sql源码中的readme.md文件

5、安装使用中遇到的问题汇总

问题一:Access denied for user 'root'@'localhost' (using password:YES)

这个问题是因为我的root账户只能本地访问,所以这里需要修改下root账户可以远程访问:

update user set host = '%' where user = 'root';flush privileges;

注:如果使用其它账户,要确保使用的mysql账户信息要有SELECT, REPLICATION SLAVE, REPLICATION CLIENT等权限

问题二:python 连接 mysql 数据库出现 keyerror: 255

Traceback (most recent call last):
  File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py", line 145, in <module>
    binlog2sql = Binlog2sql(connection_settings=conn_setting, start_file=args.start_file, start_pos=args.start_pos,
  File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py", line 46, in __init__
    self.connection = pymysql.connect(**self.conn_setting)
  File "E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\connections.py", line 706, in __init__
    self.connect()
  File "E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\connections.py", line 931, in connect
    self._get_server_information()
  File "E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\connections.py", line 1269, in _get_server_information
    self.server_charset = charset_by_id(lang).name
  File "E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\charset.py", line 38, in by_id
    return self._by_id[id]
KeyError: 255

该问题主要原因是MySQL8.0更新了很多字符集,但是这些字符集长度超过255了,所以旧版的PyMySQL不支持长度超过255的字符。解决方法是更新该工具包:

pip install --upgrade PyMySQL

问题三:ModuleNotFoundError: No module named 'pymysql.util'

这是因为没有'pymysql ,这里我们防止本地有包冲突,所以先卸载再安装:

PS E:\Program Files (x86)\mysql-8.0.23-winx64\data> pip uninstall pymsql
WARNING: Skipping pymsql as it is not installed.
PS E:\Program Files (x86)\mysql-8.0.23-winx64\data> pip install pymysql==0.9.3
Collecting pymysql==0.9.3Downloading PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB)---------------------------------------- 47.7/47.7 KB 480.7 kB/s eta 0:00:00
Installing collected packages: pymysqlAttempting uninstall: pymysqlFound existing installation: PyMySQL 1.0.2Uninstalling PyMySQL-1.0.2:Successfully uninstalled PyMySQL-1.0.2
Successfully installed pymysql-0.9.3

问题四:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 39: invalid start byte

E:\Program Files\PYTHON3.9.5\lib\site-packages\pymysql\cursors.py:170: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 1")

result = self._query(query)

Traceback (most recent call last):

File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py", line 150, in <module>

binlog2sql.process_binlog()

File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py", line 121, in process_binlog

self.print_rollback_sql(filename=tmp_file)

File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql.py", line 129, in print_rollback_sql

for line in reversed_lines(f_tmp):

File "E:\IdeaProjects\binlog2sql\binlog2sql\binlog2sql_util.py", line 249, in reversed_lines

block = block.decode("utf-8")

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 39: invalid start byte

根据报错信息可以知道,这个跟binlog2sql工具里的binlog2sql.py代码有关,网上有好几种解决方案,这里贴一种我使用没问题的方案:即修改binlog2sql源码中的binlog2sql_util.py指定字符编码的代码(注意有好几行都涉及到编码,但是我们不用全修改,仔细对照下图,千万别改错了),修改的内容如下图:

参考链接:

https://blog.csdn.net/Evan_Hsu/article/details/80182679

https://blog.csdn.net/weixin_43288999/article/details/119104027

binlog2sql 工具安装使用及问题汇总相关推荐

  1. 磁盘测试工具FIO工具安装和使用方法

    一.FIO工具安装: 1.查看fio是否安装 rpm –qa|grep fio 2.源码安装(2.3.4任选一个,推荐方法:3.rpm 的二进制安装) 官网地址:http://freecode.com ...

  2. jar java classpath_win7中java编程工具安装 java环境变量设置

    win7中java编程工具安装 java环境变量设置 Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件 解决: 在[系统变量]里编辑java_home.cl ...

  3. VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装

    VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装 在阿里云开源镜像地址下载镜像 Index of /centos/7.2.1511/isos/x86_64/ http://mi ...

  4. yum工具安装Nginx

    2019独角兽企业重金招聘Python工程师标准>>> Nginx官网:nginx.org ,选择稳定的版下载安装,此处我选择下载1.14.2版本,以下是yum工具安装方式: yum ...

  5. 虚拟机在安装svn时 认证密码一直报错_研路同行|安装虚拟机到安装GAMIT教程步骤汇总...

    (一路遇见,一路再见) 全文共计2258字,图片共计1张 用心阅读控制在10分钟 --今日图文-- Gamit/gLOBK软件是一款高精度GNSS数据处理软件,目前支持GPS/BDS/GLONASS/ ...

  6. 【Java 虚拟机原理】垃圾回收算法( Java VisualVM 工具 | 安装 Visual GC 插件 | 使用 Java VisualVM 分析 GC 内存 )

    文章目录 一.Java VisualVM 工具安装 Visual GC 插件 二.使用 Java VisualVM 分析 GC 内存 一.Java VisualVM 工具安装 Visual GC 插件 ...

  7. Windows下MetaMap工具安装

    Windows下MetaMap工具安装 一.Main MetaMap安装 Prerequisties 12G磁盘空间 JAVA6 or newer JRE or SDK installed Downl ...

  8. arcgis超级工具安装教程_【软件安装管家】Autodesk卸载官方工具安装教程

    点击上面"蓝字"关注,获取更多资源!用心分享 一黑一白我不是灵魂导师一个分享软件/影视/音乐/网站/教程的公众号星标/置顶公众号?因公众号改版,不再按时间推送文章,为不错过最新资源 ...

  9. 【报表技术】IReport 图形化报表开发工具安装教程

    [报表技术]IReport 图形化报表开发工具安装教程 JasperReport简单介绍 JasperReport是一个强大.灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML, ...

最新文章

  1. device刷机包 适合的android_nexus6 刷 LineageOS 17.1 实战
  2. 软件测试2019:第七次作业—— 用户体验测试
  3. 实践1-qq邮箱主页
  4. 【最佳解法】剑指 Offer 32 - III. 从上到下打印二叉树 III
  5. java解析静态AIS原始数据
  6. soundbar未来发展_智能电视时代 Soundbar未来发展之路
  7. 2018/7/17-纪中某C组题【jzoj4024,jzoj4025,jzoj2136,jzoj2137】
  8. Oracle中对象权限与系统权限revoke
  9. springboot2 war页面放在那_亚马逊产品页面如何优化?这些技巧要知道
  10. 全球首发!惯性导航导论(剑桥大学)第六部分
  11. zabbix常见配置集合
  12. 认识 ARM、FPGA
  13. hdu Train Problem I 栈的基本应用
  14. 计算机无法识别psp usb设备,PSP降级导致USB连接电脑识别问题解决办法
  15. win7 x64怎么枚举所有快捷键呢
  16. 栈(Stack)——后进先出(LIFO)的数据结构(Data Structures)
  17. 国庆马上到了,用python实现国旗头像
  18. [TopCoder] SRM 587 DIV 2, 250p, 500p, 1000p, Solution
  19. 使用ArcMap 生成TPK和geodatabase包
  20. 开源运维管理平台(ows) damo版本源码发布

热门文章

  1. Linux常用命令整理—网络
  2. Eclipse下搭建struts、spring、hibernate开发环境
  3. KiCad 6 版本体验记录
  4. 软件测试是要学习什么技能?
  5. 阿里云IOT物联网终端设备代码简介
  6. 用matlab画双坐标图,怎么灵活改变坐标轴颜色,刻度,字体等
  7. python安装第三方库 找不到、匹配不到库的问题(多目标优化)
  8. 小程序改变性别的js详解直接上图
  9. 于丹 论语 心得和感悟
  10. DHCP协议理论解析与抓包实践