Skip to content

Instantly share code, notes, and snippets.

@DevWellington
Created July 7, 2014 21:36
Show Gist options
  • Save DevWellington/71c172541c7a3179e9f2 to your computer and use it in GitHub Desktop.
Save DevWellington/71c172541c7a3179e9f2 to your computer and use it in GitHub Desktop.
FEDERATED MySQL
O FEDERATED é um Storage Engine, ou seja, um motor de armazenamento que surgiu juntamente com o MySQL 5 e que permite ao administrador de bancos de dados ou quem quer que esteja pilotando o MySQL, criar tabelas locais mas que utilizam dados remotos, localizados em outros servidores de bancos de dados localizados em outra posição geográfica ou IP diferente - podendo ser utilizado também em tabelas de um mesmo banco de dados.
Para saber se este motor esta habilitado em seus servidores de bancos de dados, entre com o comando show engines, dentro do mysql client:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | YES | Federated MySQL storage engine | NULL | NULL | NULL |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0,05 sec)
Um exemplo de criação de tabelas:
CREATE TABLE db1.t1 (
ID int,
name char(60)
) ENGINE = MyISAM COMMENT 'Criamos uma tabela que realmente armazena os dados...';
###
-- para tabelas FEDERATED, utilizamos a connection string, informada na declaração COMMENT
-- que é mysql://user_name[:password]@host_name[:port]/db_name/table_name
--
-- onde:
--
-- mysql é o protocolo
-- user_name é o usuário de conexão com o servidor MySQL remoto
-- password é a senha - opcional, por isso entre colchetes
-- host_name é o nome do host ou IP
-- db_name é o nome do banco de dados remoto
-- table_name é o nome da tabela do banco de dados remoto
###
CREATE TABLE db2.t1 (
ID int,
name char(60)
) ENGINE = FEDERATED COMMENT 'mysql://wagnerbianchi:12345@work.mysql.com/db1/t1';
Quando enviarmos um SELECT em db2.t1, os dados serão retornados de db1.t1 na verdade.
Imagem postada
Para que funcione corretamente e seguramente:
=> Tenha certeza que o usuário que você utiliza para realizar a conexão remota esteja com as devidas permissões para realizar tal conexão - restringindo um host específico ou mesmo de qualquer host (%);
=> Garanta que nenhum outro usuário que não seja um Administrador tenha acesso ao diretório de dados do MySQL, pois, ao abrir o arquivo .frm, você poderá ler o usuário, host e senha do servidor remoto - dando o queijo suíço ao rato de mãos beijadas.
Manual online: http://dev.mysql.com...age-engine.html
Espero ter ajudado, Happy MySQL'ing!! :natal_wink:
FONTE: http://forum.imasters.com.br/topic/377973-alguem-pode-me-explicar-o-federated-storage-engine/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment