如何在特定的binlog位置重启?

问题描述 投票:0回答:1

我正在使用nodejs mysql-events 来解析mysql 数据库更新。 为了避免每次重新启动脚本时解析所有日志,我想使用从

documentation
 中读取的 
binlogNamenextPosition

filename string 开始从此二进制日志文件读取事件。如果 与位置一起指定,将优先于 开始于结束。

位置整数 从该位置开始读取事件。必须是 包含在文件名中。

下面的代码就像一个魅力:

const mysql = require('mysql');
const MySQLEvents = require('@rodrigogs/mysql-events'); 

// Connect to mysql instance
const connection = mysql.createConnection({
    host: 'host',
    user: 'user',
    password: '*****'
});
const mysqlInstance = new MySQLEvents(connection, {
    startAtEnd: true
});

await mysqlInstance.start();

值有效并从 vscode 调试器复制。

mysql> show master status;
+------------+----------+--------------+------------------+-------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------+----------+--------------+------------------+-------------------+
| bin.000015 | 34837697 |              |                  |                   |
+------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

一旦我更改了 mysqlInstance 设置,它就会忽略它并从第一个日志开始。

const mysqlInstance = new MySQLEvents(connection, {
    binlogName: 'bin.000015',
    nextPosition: 18540004
});

我应该指定其他内容吗?

javascript mysql node.js events mysqlbinlog
1个回答
0
投票

这里的问题是你需要明确定义

startAtEnd: false(并指定位置和二进制日志文件名)

如果没有声明startAtEnd,默认会自动从末尾开始。

© www.soinside.com 2019 - 2024. All rights reserved.