2016-07-14 2 views
0

Я в среде, где для подключения к базе данных SQL мне сначала нужно создать туннель, который перенаправляет локальный порт на удаленную машину. Я подключаюсь к другому серверу db, в зависимости от номера порта в туннеле.Как я могу однозначно идентифицировать базу данных в MySql?

Другими словами: я всегда подключаюсь к MySql с теми же параметрами, что и для localhost. Тоннель, созданный заранее, определяет, к какому серверу я подключаюсь.

Существует несколько серверов MySql, имеющих одну и ту же схему (для целей тестирования), и я хочу знать, к какой фактической базе данных я подключен (мой скрипт не имеет доступа к параметрам туннеля, которые нужно знать).

Когда мы создаем новый db, есть ли GUID или что-то, что приписывается ему? Возможно, что-то, что я могу получить с запросом до information_schema

ответ

1

Нет, имя схемы является идентификатором.

Возможно, вы захотите установить server_id уникально на каждом из ваших экземпляров MySQL. Это целое число в диапазоне от 1 до 2 -1, которое вы настраиваете в файле my.cnf вашего экземпляра MySQL.

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

Обычно server_id используется помечать изменения в двоичном журнале, так что наборы реплики не переигрывать изменения, которые они уже видели.

Но вы можете прочитать server_id в любом SQL запросе:

SELECT @@server_id; 

И на основе его стоимости, вы будете знать, какой MySQL экземпляра вы находитесь, если вы установили каждый экземпляр server_id согласно некоторой конструкции так что вы будете знать.

+0

Удивительный, именно то, что мне нужно! –

Смежные вопросы