0.0.3 • Published 4 months ago

@solashi/go-mysql-binlog-node v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

@solashi/go-mysql-binlog-node

A library wrapping the go-mysql package, providing a MySQL client connector and binlog parsing implementation.

This project is forked from go-mysql-js

Installation

npm i --save @solashi/go-mysql-binlog-node
  • Enable MySQL binlog in my.cnf, restart MySQL server after making the changes.

    binlog checksum is enabled by default. @solashi/go-mysql-binlog-node can work with it, but it doesn't really verify it.

    # Must be unique integer from 1-2^32
    server-id        = 1
    # Row format required
    binlog_format    = row
    # Directory must exist. This path works for Linux. Other OS may require
    #   different path.
    log_bin          = /var/log/mysql/mysql-bin.log
    
    binlog_do_db     = employees   # Optional, limit which databases to log
    expire_logs_days = 10          # Optional, purge old logs
    max_binlog_size  = 100M        # Optional, limit log size
  • Create an account with replication privileges, e.g. given privileges to account root (or any account that you use to read binary logs)

    GRANT REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'root'@'localhost'

Example

import MysqlBinlog from '@solashi/go-mysql-binlog-node';

async function main() {
    let syncer = await MysqlBinlog.create({
        hostname: "localhost",
        port: 3306,
        username: "root",
        password: "mypassword",
        tableRegexes: ['Users'],
    });
    syncer.on('event', (event) => {
        console.log('got row event', event);
    });
    syncer.on('error', (err) => {
        console.error('got error', err);
    });

    process.on('SIGINT', function() {
        console.log("Caught interrupt signal");
        syncer.close();
    });
}

main().catch(err => {
    console.error(err);
    process.exit(1);
});
0.0.3

4 months ago

0.0.2

5 months ago

0.0.1

5 months ago