Как перезапустить на указанной позиции c binlog? - PullRequest
1 голос
/ 24 марта 2020

Я использую nodejs mysql -events для анализа mysql db обновлений. Чтобы избежать синтаксического анализа всех журналов каждый раз, когда я перезапускаю свой сценарий, я хочу использовать binlogName и nextPosition как прочитанное из документации

строка имени файла Начать чтение событий из этого binlog файл. Если указано вместе с позицией, будет иметь приоритет над startAtEnd.

целое число позиции Начать чтение событий с этой позиции. Должен быть включен в имя файла.

Приведенный ниже код работает как символ:

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
});

Должен ли я указать что-то еще?

...