|
||||
|
2.6.2. Как использовать таблицы FEDERATED Процедура для использования таблиц FEDERATED очень проста. Обычно Вы имеете два выполняемых сервера. В принципе возможно использовать другую таблицу, которая управляется тем же самым сервером, хотя имеются некоторые хитрости при этом. Сначала Вы должны иметь таблицу на удаленном сервере, к которой Вы хотите обращаться, используя таблицу FEDERATED. Предположите, что удаленная таблица находится в базе данных federated и определена подобно этому: CREATE TABLE test_table (id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', PRIMARY KEY(id), INDEX name (name), INDEX other_key (other)) ENGINE=MyISAM DEFAULT CHARSET=latin1; Пример использует таблицу MyISAM, но таблица могла бы использовать любой тип памяти. Затем создайте таблицу FEDERATED на локальном сервере для доступа к удаленной таблице: CREATE TABLE federated_table (id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', otherINT(20) NOT NULL DEFAULT '0', PRIMARY KEY(id), INDEX name (name), INDEX other_key (other)) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://root@remote_host:9306/federated/test_table'; Обратите внимание: CONNECTION заменяет COMMENT, используемый в некоторых предыдущих версиях MySQL. Структура этой таблицы должна быть точно такая же, как у удаленной таблицы, за исключением того, что опция ENGINE таблицы должна быть FEDERATED, а опция таблицы CONNECTION задает строку подключения, которая указывает для драйвера FEDERATED, как соединиться с удаленным сервером. Тип памяти FEDERATED создает только файл test_table.frm в базе данных federated. Удаленная информация хоста указывает удаленный сервер, с которым Ваш локальный соединяется, а база данных и информация таблицы указывают, которую удаленную таблицу использовать как источник данных. В этом примере удаленный сервер обозначен как remote_host (порт 9306), так что на удаленной системе должен быть сервер MySQL, слушающий порт 9306. Общая форма строки подключения в опции CONNECTION такова: scheme://user_name[:password]@host_name [:port_num]/db_name/tbl_name Только mysql обеспечивается как значение scheme в этот момент, пароль и номер порта факультативны. Имеются некоторые примеры строк подключения: CONNECTION='mysql://username:password@hostname:port/database/tablename' CONNECTION='mysql://username@hostname/database/tablename' CONNECTION='mysql://username:password@hostname/database/tablename' Использование CONNECTION для определения строки подключения не оптимально и, вероятно, измениться в будущем. Потому что любой пароль, заданный в строке подключения, сохранен как простой текст, он может быть замечен любым пользователем, который может применить SHOW CREATE TABLE или SHOW TABLE STATUS для таблицы FEDERATED или сделать запрос таблицы TABLES в базе данных INFORMATION_SCHEMA. |
|
||
Главная | Контакты | Нашёл ошибку | Прислать материал | Добавить в избранное |
||||
|