No es Federated tables en MySQL:
El motor de almacenamiento FEDERATED le permite acceder a los datos de una base de datos remota MySQL sin utilizar la replicación o la tecnología de clúster. Al consultar una tabla FEDERATED local , se extraen automáticamente los datos de las tablas (federadas) remotas. No se almacenan datos en las tablas locales.
Primero, debe tener una tabla en el servidor remoto al que desea acceder utilizando una tabla FEDERATED. Supongamos que la tabla remota está en la base de datos Sakila y se define así:
CREATE TABLE test_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
PRIMARY KEY (id)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;
A continuación, cree una tabla FEDERATED en el servidor local para acceder a la tabla remota:
CREATE TABLE federated_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
PRIMARY KEY (id)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user:[email protected]:3306/sakila/test_table';
cadenas de conexión de la muestra:
CONNECTION='mysql://username:[email protected]:port/database/tablename'
CONNECTION='mysql://[email protected]/database/tablename'
CONNECTION='mysql://username:[email protected]/database/tablename'
la estructura básica de esta tabla debe coincidir con el de la tabla remota, excepto que la opción ENGINE debe estar federados.
ejecutar:
show variables like '%federated%';
para comprobar si el motor de almacenamiento FEDERATED está disponible en el servidor local.
La tabla federated_table
en localhost se convierte en la tabla virtual de test_table
en el servidor remoto.
Ahora puede usar el JOIN entre las tablas en una base de datos en el servidor localhost. Si hay una tabla llamada test
en su servidor localhost, y que desea unirse con el anterior sakila.test_table que está en el servidor remoto, escribir una consulta como la que se muestra a continuación:
SELECT * FROM `federated_table` JOIN `test`;
El federated_table
en el la consulta se referirá realmente a test_table en el servidor remoto.
En permitiendo motor de almacenamiento FEDERATED
El motor de almacenamiento FEDERATED no está activado por defecto en el servidor que ejecuta; para habilitar FEDERATED, debe iniciar el binario del servidor MySQL usando la opción --federated
.
NOTA:
motores de almacenamiento opcionales requieren privilegios y no se cargará cuando se especifica --skip-grant-tables
.
El resultado de todo el PP no se cargará y el siguiente error aparecerá en los registros:
110318 21:37:23 [ERROR] /usr/local/libexec/mysqld: unknown option '--federated'
Esto a su vez significa que una actualización de 5.x que hay que hacer en dos pasos si tener tablas federadas Una vez con --skip-grant-tables
y sin --federated
, la vez sin --skip-grant-tables
y con --federated
.
Fuente: The FEDERATED Storage Engine
gracias, especialmente por el tutorial rápido. desafortunadamente, tengo problemas para hacerlo funcionar. mostrar variables como '% federated%'; devuelve el conjunto vacío. Encontré # Desactivar federado de forma predeterminada skip-federated en my.ini, he comentado la línea de omisión y reinicié los servicios, también agregué federado a la sección [mysqld] en este archivo y reinicié los servicios. –
¿Qué versión de MySQL está usando? – Jacob
no, está bien ... parece que está funcionando ahora, aunque el conjunto vacío regrese. gracias:) –