2016-03-29 36 views
1

Beim Erstellen einer Tabelle oder Einfügen von Daten in einen Knoten des MySQL-Clusters mithilfe der NDB-Engine wird sie immer an die anderen Knoten im Cluster weitergegeben. Wenn ich jedoch eine gespeicherte Prozedur hinzufüge, muss ich sie manuell erstellen es in allen Knoten.Gespeicherte MySQL-NDB-Prozedur

Kann ich etwas tun, damit die gespeicherte Prozedur auf alle Knoten im Cluster übertragen wird, wenn sie nur in einem erstellt wird?

Antwort

1

Die Antwort ist nein:

http://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html

gespeicherten Routinen und Triggern in MySQL Cluster.

Gespeicherte Prozeduren, gespeicherte Funktionen und Trigger werden alle von Tabellen unterstützt, die die NDB-Speicher-Engine verwenden; Beachten Sie jedoch, dass sie sich nicht automatisch zwischen MySQL-Servern verbreiten, die als Cluster SQL-Knoten agieren. Dies ist aufgrund der folgenden:

Gespeicherte Routinedefinitionen werden in Tabellen in der Mysql-System -Datenbank mit der MyISAM-Speicher-Engine gehalten, und so nicht in Clustering teilnehmen.

Die .TRN- und .TRG-Dateien, die Triggerdefinitionen enthalten, werden von der NDB-Speicher-Engine nicht gelesen und nicht zwischen Cluster-Knoten kopiert.

Alle gespeicherten Routinen oder Trigger, mit MySQL Cluster Tabellen interagiert muß, indem Sie die entsprechende CREATE PROCEDURE neu erstellt werden, CREATE FUNCTION oder TRIGGER-Anweisungen auf jedem MySQL-Server erstellen, die partizipieren im Cluster, wo Sie wollen Verwenden Sie die gespeicherte Routine oder triggern Sie. Ebenso müssen alle Änderungen an vorhandenen gespeicherten Routinen oder Trigger explizit auf allen Cluster SQL-Knoten mit den entsprechenden ALTER oder DROP-Anweisungen auf jedem MySQL Server Zugriff auf den Cluster ausgeführt werden.