2017-04-07 2 views
3

Wir verwenden Percona 5.7.16-10 Server. Ich möchte die aktuelle Lösung mit XtraDB-Cluster erweitern. Währenddessen habe ich andere Maschinen erstellt und Cluster gestartet (läuft auf Percona XtraDB Cluster Version 5.7.17-11-57) und habe dort ein paar Tests gemacht (alles scheint gut zu funktionieren). Jetzt möchte ich die aktuelle Datenbank vom laufenden Server ausgeben und in den Cluster einfügen. Es gibt kein Problem den Cluster zu stoppen (da es zum Testen ist). Aber wenn ich mysqldump so erzeuge, wie ich es gewohnt bin, kann ich es wegen pcx_strict_mode (info here) nicht in den Cluster einfügen - mit der Erzwingung Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK with pxc_strict_mode = ENFORCING, weil mysqldump ein Skript erzeugt, das eine verbotene Tabellensperre enthält. Also habe ich einige weitere Optionen getestet, wie MASTER, die diese Regel nicht überprüfen sollten, aber es hat nicht geholfen, weil die Einfügeabfrage vom Dump hängen bleibt und nichts passiert.Wiederherstellen der Datenbank in den neuen Cluster

Gibt es irgendeine mysqldump-Option, um Tabellensperrabfragen zu vermeiden, oder muss ich sie irgendwie über XtraBackup wiederherstellen und XtraBackup für den aktuellen laufenden Server verwenden?

Ich habe mehrere Themen here gelesen, aber niemandem mit dem gleichen Problem übereinstimmen. Jeder löst, wie man Cluster von einigen Fehlern wiederherstellt, nicht von Grund auf neu.

Ich werde mich freuen für jeden Vorschlag für mysqldump oder was ist der richtige Weg, "alte" Datenbank in Cluster "einzufügen".

Antwort

2

Wenn Sie Ihre aktuelle Maschine herunternehmen können, und wenn Sie den Cluster von Grund auf neu bauen, dann ich diese (auf mysqldump) würde denken, dass strict_mode, und möglicherweise einige andere Schluckauf vermeiden:

--skip_add_locks --skip-lock-tables 

Und nicht verwendet

--single-transaction --lock-all-tables 

Es könnte auch sinnvoll sein, den ersten Knoten im Cluster mit den Daten geladen zu bekommen, dann auf dem anderen Knoten hinzuzufügen, l Wenn Sie sie einstellen, verwenden Sie SST, um sich selbst zu laden.

Wenn Sie den aktuellen Server am Leben erhalten möchten, müssen wir darüber diskutieren, dass es ein Master und ein Knoten des neuen Clusters ein Slave sein soll. Plus XtraBackup wäre wahrscheinlich besser geeignet. Aber jetzt wären die Sperren und Einzeltransaktionen notwendig. Die Einstellung von strict_mode auf DISABLED scheint also richtig zu sein, seit der Cluster gebaut wurde und noch nicht existiert.

(Caveat:. Ich habe keine Erfahrung Ihre Aufgabe ausführt, wenn jemand anderes eine überzeugende Antwort liefert, mit ihnen gehen)

+0

Thank you! Ich bin mir nicht sicher, was bei meinem letzten Versuch passiert ist, aber wie du vermutest, um strict_mode auf DISABLED zu setzen, habe ich für den zweiten Versuch gearbeitet (ich muss vorher einen Fehler gemacht haben). Für einige zukünftige Leser habe ich den regulären Dump mit --single-transaction on gemacht, starte dann den Cluster mit dem DISABLED-Modus neu und stelle die DB wieder her (st on only, weil ich ein paar Live-Daten zum Testen gezogen habe). Sobald es verfügbar sein wird, werde ich Ihnen Kopfgeld geben, danke! – Radim

Verwandte Themen