首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Node.js或PHP实时监听MySQL数据库更改

如何使用Node.js或PHP实时监听MySQL数据库更改
EN

Stack Overflow用户
提问于 2017-05-05 23:13:25
回答 1查看 4.4K关注 0票数 1

我需要创建一个具有多个数据库的系统,其中一个是主数据库,该数据库只需要将结构更改复制到其他数据库,例如:

当我在系统中注册一个新用户时,系统会自动创建主数据库的结构副本,但此数据库不会将插入的注册或更新发送到主数据库,只有主数据库在更新时才会将所有结构更改发送到从数据库,因此我需要创建一个脚本或实现工具来捕获数据库更新,以便在所有从数据库上实时执行更新。

我向AWS支持发送了一个问题,他们建议我实现一个phyton脚本或集成另一个库,这些库允许执行binlog流以将这些更改复制到从数据库中。

AWS支持答案:

你可以遵循这个指南here1,你可以跳过Kinesis (亚马逊网络服务)部分,让你的代码直接编写,而不是把它放在Kinesis流中。您需要在DB集群上启用binlog并侦听日志。根据您可以在逻辑中添加的事件,在子数据库上执行DB更新。为了复制您的主数据库模式,我建议在任何子数据库需要提供和导入该模式之前,使用mysqldump CLI工具导出您的主数据库的模式。然后,根据您编写的逻辑,使用binlog脚本将更改推送到子数据库。

1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-07 02:18:14

Zongji仓库:https://github.com/nevill/zongji

代码语言:javascript
复制
var ZongJi = require('zongji');
var mysql = require('mysql');

var query;

var connection = mysql.createConnection({
  host: '192.168.1.18',
  port: '3310',
  user: 'root',
  password: 'admin'
});

var zongji = new ZongJi({
  host: '192.168.1.18',
  port: '3310',
  user: 'root',
  password: 'admin'
});

zongji.on('binlog', function(evt) {

  if (evt.query != 'BEGIN') {

    query = evt.query

    query = query.replace(/`tuadmin`/g, '`demo`');

    connection.query(query, function(error, results, fields) {

    });

    console.log(query);
  }
});

zongji.start({
  includeEvents: ['query']
});

process.on('SIGINT', function() {
  console.log('Got SIGINT.');
  zongji.stop();
  process.exit();
});

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43808441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档