当前位置: 首页 > 工具软件 > binlog2sql > 使用案例 >

binlog2sql在windows中的使用细节

罗乐意
2023-12-01

在使用binlog2sql过程中发现在linux系统中还是很简单的,但是在windows中还是有不少问题让人非常困惑,这篇文章主要是为了做个总结。

一、执行命令如下:

1.进入数据库日志文件所在目录,使用如下命令查看需要回滚的sql语句。

D:\MySQL\MySQL Server 5.6\data>python D:\tool1\binlog2sql\binlog2sql\binlog2sql.py -h 127.0.0.1 -P 3306 -u root -p password -d schema -t tablename  
--start-file=mysql-bin.000452 --start-datetime="2022-06-16 08:15:31" --stop-datetime="2022-06-16 18:16:00"

2.使用如下命令生成回滚所需要的执行的语句,后面多了-B参数。

D:\MySQL\MySQL Server 5.6\data>python D:\tool1\binlog2sql\binlog2sql\binlog2sql.py -h 127.0.0.1 -P 3306 -u root -p password -d schema -t tablename  
--start-file=mysql-bin.000452 --start-datetime="2022-06-16 08:15:31" --stop-datetime="2022-06-16 18:16:00" -B

3.把sql语句导出到指定sql文件。

D:\MySQL\MySQL Server 5.6\data>python D:\tool1\binlog2sql\binlog2sql\binlog2sql.py -h 127.0.0.1 -P 3306 -u root -p password -d schema -t tablename
--start-file=mysql-bin.000452 --start-datetime="2022-06-16 08:15:31" --stop-datetime="2022-06-16 18:16:00" -B > d:\my.sql

4.执行my.sql中的语句即可回滚数据。

二、注意事项

1.注意在windows中--start-file 引号可有可无,--start-datetime和--stop-datetime一定要用双引号。

2.另外如果执行2或者3中语句出现编码报错请修改binglog2sql_util.py文件中

block = block.decode("utf-8")为block = block.decode("gbk") 效果如下:
def reversed_lines(fin):
    """Generate the lines of file in reverse order."""
    part = ''
    for block in reversed_blocks(fin):
        if PY3PLUS:
            block = block.decode("gbk")
        for c in reversed(block):
            if c == '\n' and part:
                yield part[::-1]
                part = ''
            part += c
    if part:
        yield part[::-1]

3.如果不是通过sql语句进行的操作,比如在DBeaver中直接对表进行操作,那么将无法生成回滚语句。

 类似资料: