La replicación en MySQL funciona para tablas
InnoDB
del mismo modo que lo hace para tablas
MyISAM
. Es posible usar replicación en una
forma en que el tipo de tabla en el servidor esclavo no es igual
a la tabla original en el servidor maestro. Por ejemplo, se
pueden replicar modificaciones de una tabla
InnoDB
en el servidor maestro sobre una tabla
MyISAM
en el servidor esclavo.
Para configurar un nuevo esclavo para un servidor maestro, se
debe realizar una copia del espacio de tablas
InnoDB
y de los ficheros de registro, así
como de los ficheros .frm
de las tablas
InnoDB
, y mover las copias al servidor
esclavo. El procedimiento adecuado para esto se encuenta en
Sección 15.9, “Trasladar una base de datos InnoDB
a otra máquina”.
Si se puede detener el servidor maestro o un esclavo existente,
se puede tomar un backup en frío del espacio de tablas
InnoDB
y de los ficheros de registro y
utilizarlos para configurar un servidor esclavo. Para crear un
nuevo esclavo sin detener ningún servidor, se puede utilizar la
herramienta comercial
InnoDB
Hot Backup
tool.
Una limitación menor en la replicación
InnoDB
es que LOAD TABLE FROM
MASTER
no funciona con tablas de tipo
InnoDB
. Hay dos posibles soluciones:
Hacer un volcado de la tabla en el maestro e importarlo dentro del esclavo.
Utilizar ALTER TABLE
en el maestro antes de realizar la
replicación con nombre_tabla
TYPE=MyISAMLOAD TABLE
, y luego emplear nombre_tabla
FROM
MASTERALTER
TABLE
para convertir la tabla en el maestro
nuevamente a InnoDB
.
Las transacciones que fallen en el maestro no afectan en absoluto la replicación. La replicación en MySQL se basa en el registro (log) binario donde MySQL registra las sentencias SQL que modifican datos. Un esclavo lee el registro binario del maestro y ejecuta las mismas sentencias SQL. Sin embargo, las sentencias emitidas dentro de una transacción no se graban en el registro binario hasta que se confirma la transacción, en ese momento todas las sentencias son grabadas de una vez. Si una sentencia falla, por ejemplo por infringir una clave foránea, o si se cancela una transacción, ninguna sentencia se guarda en el registro binario y la transacción no se ejecuta en absoluto en el servidor esclavo.
É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.