2017-12-19 1 views
2

Ich versuche zu hören mysql Ereignis in meiner App mit mysql-Event-Modul ändern. Dafür habe ich das wissen müssen, ich muss sicherstellen, ob Zongji-Modul gut funktioniert.hören mysql ändern Ereignis mit Zongji-Modul funktioniert nicht

So, hier ist das, was ich bisher versucht:

--Mein server.js

      var ZongJi = require('zongji'); 

          var zongji = new ZongJi({ 
          host  : 'db_host', 
          user  : 'root', 
          password : 'kakaun', 
          insecureAuth: true, 
          debug: true 
          }); 
          zongji.start({ 
          includeEvents: ['tablemap', 'writerows', 'updaterows', 'deleterows'] 
          }); 
          zongji.on('binlog', function(evt) { 
          console.log("+++++Inside binlog event++++"); 
          evt.dump(); 
          }); 
          process.on('SIGINT', function() { 
          console.log('Got SIGINT.'); 
          zongji.stop(); 
          process.exit(); 
          }); 

(Beispiel aus https://github.com/nevill/zongji/blob/master/example.js)

Ich habe perfekt die binlog für MySQL konfiguriert und es erstellt auch das Protokoll.

Ich kann jedoch nichts für die obige Konsole für ein Änderungsereignis in meiner Knoten-App protokollieren.

Wenn ich auf Debug schaltet = true Option, das kann ich in Datenbankprotokoll für jede Änderung sehen, die ich diesen Debug-Protokoll erhalten:

<-- BinlogHeader 
BinlogHeader {} 

<-- BinlogHeader 
BinlogHeader {} 

<-- BinlogHeader 
BinlogHeader {} 

Also, das heißt meine app succeffully der Lage ist, kontaktieren binlog von mysql, aber woher weiß ich, welche Zeile hat sich geändert oder was hat sich geändert? Weil zongzi.on ('binlog', [Function]) nichts druckt.

Antwort

1

So nach vielen Debugging, fand ich das Problem. Also hier ist etwas, was ich übersehen und falsch gemacht habe. Ich möchte meinen Fehler posten, damit andere Benutzer dies vermeiden können.

Wenn Sie binlog für mysql aktivieren, wird standardmäßig die ereignisbasierte Protokollierung verwendet, die das zongji-Modul nicht versteht. https://dev.mysql.com/doc/internals/en/binary-log-overview.html

Daher müssen Sie die zeilenbasierte Protokollierung aktivieren, um nützliche Informationen zu erhalten (um zu wissen, was sich geändert hat).

basierte Protokollierung Reihe kann mit dieser zusätzlichen Anweisung in my.cnf von MySQL-Konfigurationsdatei aktiviert werden:

binlog_format = row 

Danach Hinzufügen und Starten des MySQL-Server, alles begann in Ordnung arbeiten.