La réplication MySQL fonctionne pour les tables
InnoDB
comme pour les tables
MyISAM
. Il est aussi possible d'utiliser la
réplication pour que les tables de l'esclave ne soient pas les
mêmes que les tables du maître. Par exemple, vous pouvez
répliquer les modifications d'une table
InnoDB
sur le maître dans une table
MyISAM
sur l'esclave.
Pour configurer un nouvel esclave sur le maître, vous devez
faire une copie de l'espace de table InnoDB
,
des fichiers de log, ainsi que les fichiers
.frm
des tables InnoDB
,
et les placer sur l'esclave. Pour une procédure à suivre pour
réaliser cela, voyez Section 15.10, « Transférer une base de données InnoDB
vers une
autre machine ».
Si vous pouvez arrêter le maître ou l'esclave, faîtes une
sauvegarde à l'arrêt de l'espace de table
InnoDB
et des fichiers de logs, puis utilisez
les pour redémarrer l'esclave. Pour faire un nouvel esclave
sans arrêter le serveur, utilisez le logiciel commercial
InnoDB
Hot Backup
tool.
Il y a des limitations mineures à la réplication
InnoDB
:
LOAD TABLE FROM MASTER
ne fonctionne pas
pour les tables InnoDB
. Il y a des
palliatifs : 1) exportez la table du maître, et envoyez la
sur l'esclave, ou, 2) utilisez ALTER TABLE tbl_name
TYPE=MyISAM
sur le maître avant de configurer la
réplication avec LOAD TABLE tbl_name FROM
MASTER
, et ensuite, ALTER TABLE
pour remettre les tables en mode InnoDB
après cela.
Avant MySQL 4.0.6, SLAVE STOP
ne
respectait la limite de transaction. Une transaction
incomplète était annulée, et la prochaine commande
SLAVE START
n'exécutait que le reste de
la transaction, ce qui conduisait à un échec.
Avant MySQL 4.0.6, un crash de l'esclave au milieu de d'une
transaction multi-commande causait le même problème que
SLAVE STOP
.
Avant MySQL 4.0.11, la réplication de la commande
SET FOREIGN_KEY_CHECKS=0
ne fonctionnait
pas correctement.
La plupart de ces limitations peuvent être levées en utilisant un serveur récent, pour lequel les limitations n'existent pas.
Les transactions qui échouent sur le serveur n'affectent pas la réplication. La réplication MySQL est basée sur le log binaire où MySQL écrit les requêtes SQL qui modifient des données. Un esclave lit le log binaire du maître, et exécute les mêmes commandes SQLO. Cependant, les commandes d'une transaction ne sont pas écrite avant la fin de la transaction, où toutes les commandes sont écrites d'un coup. Si une transaction échoue, par exemple, à cause d'une clé étrangère, ou si la transaction est annulée, aucune requête ne sera écrite dans le log binaire, et la transaction ne sera pas du tout exécutée sur le serveur.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.