繁体   English   中英

mysql-python-replicator binlog为特定模式启动pos

[英]mysql-python-replicator binlog start pos for specific schema

我正在使用mysql-python-replicator从mysql转储特定数据库的数据,所以我可以使用参数only-schema创建一个BinglogStream:

stream = BinLogStreamReader(connection_settings=mysql_settings,
                            server_id=1,only_schemas='tpch',
                            log_file='mysql-bin.000001',log_pos=1
                            )

我有参数log_file='mysql-bin.000001'log_pos=1 ,因为我不知道事件位置在哪里开始,所以有什么想法在mysql-binlog中找到数据库的start事件位置?

猜测第一个binlog位置是行不通的。 此文件和位置可能不存在于服务器上,因为Mysql会根据其配置自动轮换这些日志。

库内部知道如何从头开始。 只需省略恢复所需的3个参数(或将它们设置为False / None):

if binlog_filename is None or binlog_position is None:
    # Connecting to MySQL binlog (from beginning)...
    binlog_stream = BinLogStreamReader(
        connection_settings=mysql_settings,
        server_id=1,
        blocking=True
    )
else:
    # Continuing from binlog_filename and binlog_position
    binlog_stream = BinLogStreamReader(
        connection_settings=mysql_settings,
        server_id=1,
        resume_stream=True,
        blocking=True,
        log_file=binlog_filename,
        log_pos=binlog_position
    )

首先你可以使用resume_stream=False,log_file=None,log_pos=None,blocking=False启动它,这可能会从头开始读取binLogEvents。 在后续迭代中,您应该以某种方式(在db或内存中)记录最新的log_file和log_pos,您可以从BinLogStreamReader对象中读取它。 由于blocking参数设置为False因此binlog文件将在事件发生时关闭或由您手动关闭,并且您可以重新创建它,但现在使用您从录制位置读取的不同参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM