![](/img/trans.png)
[英]Using python Django and Mysql. Data won't inserted into MySQL due to Binlog
[英]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.