2008-12-10 6 views
6

In MySQL gehe ich davon aus, dass jede SQL-Anweisung auf dem Slave genau wie auf dem Master ausgeführt wird. Allerdings, wenn ich die Anweisung ausführen:Wie funktioniert 'LOAD DATA INFILE' bei der statementbasierten Replikation?

LOAD DATA INFILE 'filename' INTO SomeTable; 

Ich bin nicht sicher, ob die Datei auf dem Slave die gleiche Art und Weise vorhanden sein muss es auf dem Master tut. Kann mich jemand auf die Dokumentation dieses Features hinweisen?

Antwort

5

Es scheint, dass die Datei, die Sie mit LOAD DATA INFILE auf dem Master laden, automatisch über das Replikationsprotokoll vom Master zum Slave übertragen wird. Der Slave lädt diese Dateien, wenn er in der auf Anweisungen basierenden Replikationswarteschlange an die Nummer LOAD DATA INFILE gelangt.

Ich Folgern dies von einigen Aussagen in der Dokumentation:

16.1: Backing Up Replication Slaves

Wenn Ihr MySQL-Server ein Slave Replikationsserver ist, dann unabhängig von die Sicherungsmethode Wählen Sie, Sie sollten auch die master.info und relay-log.info Dateien sichern, wenn Sie Daten Ihres Sklaven zurück. Diese Dateien werden immer benötigt, um die Replikation fortzusetzen, nachdem Sie die Daten des Slaves wiederherstellen. Wenn dein Sklave zu replizieren LOAD DATA INFILE Befehle unterliegt, sollten Sie auch alle SQL_LOAD- * Dateien, die im Verzeichnis existieren durch die --slave-Last-tmpdir Option angegeben.

16.1.2.3: Replication Slave Options and Variables

Wenn der Slave-SQL-Thread eine LOAD DATA INFILE-Anweisung repliziert, es die Datei extrahiert, um aus den Relay-Log in temporäre Dateien geladen werden, und dann lädt diese in die Tabelle. Wenn die auf dem Master geladene Datei riesig ist, sind die temporären Dateien auf dem Slave ebenfalls riesig. Daher könnte es ratsam sein, diese Option zu verwenden, um dem Slave zu sagen, temporäre Dateien in einem -Verzeichnis in einem Dateisystem Verzeichnis, das viel verfügbaren Speicherplatz hat. In diesem Fall sind die Relaisprotokolle so groß wie gut, so dass Sie auch die Option --relay-log verwenden möchten, um die Relay-Protokolle in diesem Dateisystem zu platzieren.

Verwandte Themen