Ich habe die Replikation auf Percona Server 5.5 , indem Sie laufen bekam diese Anleitung und fragte mich , ob ich noch hinzufügen sollte read-only=1
meiner Sklaven , my.cnf
um es nur zu lesen zu machen?
In diesem Handbuch wird die Replikation für die MySQL-Tabelle eingerichtet, damit Benutzer repliziert werden. Ich verwende jedoch hauptsächlich den Slave, um MySQL-Speicherauszüge zu erstellen. Im Notfall wird er so konfiguriert, dass er Master ist es ständig?
Antworten:
Wenn ein Slave schreibgeschützt ist , ist er nicht zu 100% von der Welt abgeschirmt.
Laut MySQL-Dokumentation auf
read-only
Somit kann jeder mit SUPER-Privileg nach Belieben zu einem solchen Slave lesen und schreiben ...
Stellen Sie sicher, dass alle nicht privilegierten Benutzer nicht über das SUPER-Privileg verfügen.
Wenn Sie alle SUPER-Berechtigungen auf einmal widerrufen möchten, führen Sie dies auf Master und Slave aus:
In Bezug auf den Slave behält sich SUPER das Recht vor, nur
root
Schreibvorgänge auszuführen, für die ansonsten Einschränkungen bestehen würden, und verhindert, dass Nicht-Privilegierte Schreibvorgänge ausführen.UPDATE 2015-08-28 17:39 EDT
Ich habe kürzlich erfahren, dass MySQL 5.7 super_read_only einführt .
Dadurch werden SUPER- Benutzer in ihren Tracks gestoppt, da in den 5.7-Dokumenten angegeben ist
quelle
Ja, Sie sollten Slave-Server mit verfügbaren R / O- Modi ausführen . Zuvor privilegierte Benutzer konnten die Daten eines solchen Slaves sowieso ändern, aber später bekamen sie auch ihren R / O-Beschränkungsknopf.
Warum es wichtig ist - Fehlschlagen beim Schreiben ist besser als Bedauern bei falschen Schreibvorgängen, die dazu führen könnten, dass der Slave aufgrund einfacher Datenprobleme oder aufgrund von Schlüsselkonflikten, die die Replikation unterbrechen würden, unbrauchbar wird (kein tatsächlicher Slave mehr).
Es gibt auch Software für die Orchestrierung / Lastverteilung, die den R / O-Status der Server in Pools berücksichtigt, die für die ordnungsgemäße Weiterleitung von Anforderungen zwischen diesen Servern konfiguriert wurden.
Das ist Sicherheit. Benutze es.
quelle
Das Problem hier, einschließlich MySQL 8.0, ist, dass MySQL Sie nicht zwingt, Einstellungen
read_only = ON
vorzunehmen , wenn Sie denstart slave
Befehl ausführen . Warum ist ein Problem? Da fast alle MySQL-Datenbankadministratoren ihre Slaves in RO verwenden, um eine Beschädigung der Daten zu verhindern, gibt es immer einen Datenbankadministrator, der versehentlich eine SQL-Anweisung falsch ausführt, mit der Daten auf einem Slave geändert werden, oder eine App, die seine Konfiguration nicht ändert. Wenn ich auf Slaves schreiben möchte, weil es mehrere Schemata hat und ich Schreibvorgänge für dieses Schemaread_only
ausführen muss, muss der Befehl intelligenter sein, und wir müssen einen Befehl ausführenread_only for schema
. Dies kann bei Multi-Master-Servern und Slaves, die aReplicate_Ignore_DB
. Im Moment müssen Sie die Steuerung also manuell vornehmen und sehr vorsichtig sein.Genießen.
quelle