El procedimiento para usar tablas FEDERATED
es muy simple. Normalmente, tiene dos servidores en ejecución,
en la misma máquina o en distintas. (También es posible para
una tabla FEDERATED
usar otra tabla
administrada por el mismo servidor, aunque no tiene mucho
sentido.)
Primero, tiene que tener una tabla en el servidor remoto que
quiera acceder con la tabla FEDERATED
.
Suponga que la tabla remota está en la base de datos
federated
y se define así:
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), KEY name (name), KEY other_key (other) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
La opción de tabla ENGINE
puede nombrar
cualquier motor de almacenamiento; la tabla no tiene porqué ser
MyISAM
.
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 default '', other int(20) NOT NULL default '0', PRIMARY KEY (id), KEY name (name), KEY other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 COMMENT='mysql://root@remote_host:9306/federated/test_table';
La estructura de esta tabla debe ser exactamente la misma que la
de la tabla remota, excepto que la opción de tabla
ENGINE
debe ser FEDERATED
y la opción de tabla COMMENT
es una cadena
de conexión que indica al motor FEDERATED
cómo conectar al servidor remoto.
El motor FEDERATED
crea sólo el fichero
test_table.frm
en la base de datos
federated
.
La información del equipo remoto indica el servidor remoto al
que se conecta el servidor local, y la información de base de
datos y tabla indica la tabla remota a usar como fichero de
datos. En este ejemplo, el servidor remoto está indicado para
ser remote_host
corriendo en el puerto 9306,
así que puede arrancar ese servidor para que escuche en el
puerto 9306.
La forma general de la cadena de conexión en la opción
COMMENT
es la siguiente:
scheme
://user_name
[:password
]@host_name
[:port_num
]/db_name
/tbl_name
Sólo se soporta mysql
como
scheme
en este punto; la contraseña
y el número de puerto son opcionales.
Aquí hay algunas cadenas de conexión de ejemplo:
COMMENT='mysql://username:password@hostname:port/database/tablename' COMMENT='mysql://username@hostname/database/tablename' COMMENT='mysql://username:password@hostname/database/tablename'
El uso de COMMENT
para especificar la cadena
de conexión no es óptima y posiblemente cambiará en MySQL
5.1. Téngalo en cuenta al usar tablas
FEDERATED
, ya que significa que habrá que
hacer modificaciones cuando ocurra.
Como cualquier contraseña usada se almacena en la cadena de
conexión como texto plano, puede ser leído por cualquier
usuario que pueda usar SHOW CREATE TABLE
o
SHOW TABLE STATUS
para la tabla
FEDERATED
, o consultar la tabla
TABLES
en la base de datos
INFORMATION_SCHEMA
.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.