Вы можете определить таблицы FEDERATED
в вашей «облачной» базе данных: любые запросы в этих таблицах будут передаваться с «облачного» сервера на соответствующий сервер London / Dublin по клиентскому протоколу MySQL (обратите внимание, что данные , а не , скопированы на «облачный» сервер, поэтому он не предоставляет какой-либо службы резервного копирования):
CREATE SERVER london FOREIGN DATA WRAPPER mysql OPTIONS (
HOST 'london.mysql.example.com',
PORT 9306,
USER 'cloud_db_user',
PASSWORD '...',
DATABASE 'my_database'
);
CREATE SERVER dublin FOREIGN DATA WRAPPER mysql OPTIONS (
HOST 'dublin.mysql.example.com',
PORT 9306,
USER 'cloud_db_user',
PASSWORD '...',
DATABASE 'my_database'
);
CREATE TABLE london_table (
-- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='london/original_table';
CREATE TABLE dublin_table (
-- table definition as normal
)
ENGINE=FEDERATED
CONNECTION='dublin/original_table';
Затем вы можете определить VIEW
, который содержит UNION
этих объединенных таблиц. К сожалению, однако, представления UNION
не вставляются и не обновляются, поэтому, если вам необходимо зафиксировать какие-либо изменения в данных, которые вы должны были бы использовать в базовой (объединенной) таблице:
CREATE VIEW combined AS
SELECT * FROM london_table
UNION ALL
SELECT * FROM dublin_table;