2016-07-14 7 views
0

Ich bin in einer Umgebung, in der, um eine Verbindung mit der SQL-Datenbank herzustellen, ich zuerst einen Tunnel erstellen muss, der den lokalen Anschluss an einen Remote-Computer umleitet. Ich verbinde mich mit einem anderen Datenbankserver, abhängig von der Portnummer im Tunnel.Wie identifiziere ich eine Datenbank in MySql eindeutig?

Mit anderen Worten: Ich verbinde immer mit MySql mit den gleichen Parametern wie localhost. Der zuvor erstellte Tunnel definiert den Server, mit dem ich mich tatsächlich verbinde.

Es gibt mehrere MySql-Server, alle mit dem gleichen Schema (zu Testzwecken) und ich möchte wissen, mit welcher Datenbank ich verbunden bin (mein Skript hat keinen Zugriff auf die Tunnelparameter).

Wenn wir eine neue Datenbank erstellen, gibt es eine GUID oder etwas, das ihr zugeordnet wird? Vielleicht kann ich etwas mit einer Abfrage zu information_schema

Antwort

1

abrufen Nein, der Schemaname ist der Bezeichner.

Sie können server_id eindeutig für jede Ihrer MySQL-Instanzen festlegen. Dies ist eine Ganzzahl im Bereich 1 bis 2 -1, die Sie in der my.cnf Datei Ihrer MySQL-Instanz konfigurieren.

http://dev.mysql.com/doc/refman/5.7/en/replication-options.html#option_mysqld_server-id

Normalerweise server_id wird verwendet, um Änderungen im Binärlog zu markieren, so Replikatsätzen Wiedergabe nicht Veränderungen, die sie bereits gesehen haben.

Aber Sie können die server_id in einer SQL-Abfrage lesen:

SELECT @@server_id; 

Und basierend auf ihren Wert, werden Sie wissen, welche MySQL-Instanz du bist auf, vorausgesetzt, Sie jede Instanz server_id nach einigen Design gesetzt haben damit du es weißt.

+0

Awesome, genau das, was ich brauche! –

Verwandte Themen