Un problema bastante habitual suele ser mantener dos bases de datos sincronizadas en distintos servidores.
Dentro del abanico de posibilidades para hacer esta tarea que se ofrecen para MySQL, la que más rápido y mejor soluciona el problema, es el uso del motor de almacenamiento FEDERATED, diponible a partir de la versión MySQL 5.0.3, que accede a tablas remotas en lugar de locales.
Las tablas FEDERATED deben mantener la misma estructura que la tabla remota, con la diferencia del motor usado que pasará de MyISAM o InnoDB a FEDERATED.
Supongamos un ejemplo práctico: La estructura de la tabla remota podrÃa ser la siguiente:
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;
Para el servidor local deberÃamos crear la siguiente estructura para darle acceso a la tabla remota anterior:
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://usuario_db:contraseña_db@servidor_remoto
:3306/federated/test_table';
A pesar de que también se puede hacer esto mismo mediante programación, esta puede ser una buena solución para mantener dos bases de datos sincronizadas. En el manual de MySQL teneis más información sobre el motor de almacenamiento FEDERATED.