Ich habe ein System (von einer anderen Entwicklungsfirma geerbt) und kenne noch nicht alle Funktionen. Aufbau:
- Web Client / Anwendung (Symfony 1.4)
- DB - MySQL.
Das Projekt wird auf 2 Servern bereitgestellt:
1. Nginx-Server + PHP + DB-Master;
2. DB-Slave.
Wenn Daten vom Webclient am DB Master geändert werden, funktioniert DB Slave einwandfrei und die Daten haben einen normalen Replikationsprozess. Wenn Daten vom MySQL Management Client geändert werden, erhalte ich eine Benachrichtigung:
Anweisung kann nicht ausgeführt werden: Schreiben in das Binärprotokoll nicht möglich, da BINLOG_FORMAT = STATEMENT und mindestens eine Tabelle eine Speicher-Engine verwendet, die auf die zeilenbasierte Protokollierung beschränkt ist. InnoDB ist auf die Zeilenprotokollierung beschränkt, wenn die Transaktionsisolationsstufe READ COMMITTED oder READ UNCOMMITTED ist
Und dann fällt DB Slave aus und der Replikationsprozess bricht ab (Fehler einfügen ... doppelter Eintrag ...).
Die ähnliche Benachrichtigung erfolgt (in dieser Situation - Fehler) mit demselben Text, wenn ich versuche, Daten mit einer Java-Anwendung / einem Java-Modul einzufügen (es wird innerhalb der Transaktion ausgeführt), und nach einer Ausnahme wird die Transaktion zurückgesetzt und es werden keine Änderungen vorgenommen.
Wie kann ich dieses Problem lösen und das System funktionsfähig machen und es ermöglichen, dass Modifikatendaten auf DB Master und DB Slaves im normalen Modus funktionieren?