A mysql / mariadb event emitter.
For now it will only tell you *that* something changed - not what changed.
It is tested against mariadb 10.1.31
.
npm install mysql-event-emitter
Enable binary log replication in /etc/mysql/my.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin
log_bin_index = /var/log/mysql/mysql-bin.index
binlog-format = row
Give your user the rights to read binary logs
GRANT REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO '[USER]'@'[HOST]'
const MyEmitter = require('mysql-event-emitter');
var mye = MyEmitter({
"mysql": {
"user": "[USER]",
"password": "[PWD]"
}
});
mye.on('change', function(db, table, event){
console.log('An ' + event + ' occured in ' + db + '.' + table);
}):
mye.on('insert', function(db, table){
console.log('An insert occured in ' + db + '.' + table);
}):
// Vanilla Events
mye.on('MyDB.MyTable.insert', function(){
console.log('An insert occured in MyDB.MyTable');
}):
mye.on('MyDB.MyTable', function(event){
console.log('An ' + event + ' occured in MyDB.MyTable');
}):
mye.on('MyDB', function(table, event){
console.log('An ' + event + ' occured in MyDB.' + table);
}):
mye.start(function(err){
if (err) throw err;
console.log('started');
});
- For a single instance no binlog option is needed
- Any mysql connection and pool option is supported.
Defaults
{
// mysql pool options
"mysql": {
"[socket]": "[SOCKET]",
"[host]": "127.0.0.1",
"user": "[USER]",
"password": "[PWD]",
"[database]": null // (is not required)
}
// binlog options
"binlog": {
"slaveId": 1, // Needs to be counted up, if more than one instance is running
"recoverTimeout": 240, // Time in ms between reconnection attempts. (Eg. on a mysql server restart)
}
}
Event | Data | . |
---|---|---|
change | DB, Table, Event | Any of the following events |
insert | DB, Table | |
update | DB, Table | |
delete | DB, Table | |
truncate | DB, Table | |
connected | ||
disconnected | ||
reconnecting | ||
recovering | ||
error | Error |
For your individual db's and tables, vanilla events can be defined: mye.on('MyDB.MyTable.insert')
.
Event | Data |
---|---|
[TABLE] | Event |
[TABLE].[EVENT] | |
[DATABASE] | Table, Event |
[DATABASE].[TABLE] | Event |
[DATABASE].[TABLE].[EVENT] |