Contraintes de clés étrangères FOREIGN KEY
<<<
InnoDB et la réplication MySQL Espaces de tables multiples : chaque table InnoDB a son fichier @filename{.ibd}
>>>

16.7 Créer des tables InnoDB
16 Tables InnoDB
 Manuel de Référence MySQL 4.1 : Version Française

Comment utiliser les transactions de InnoDB avec différentes API
Convertir des tables MyISAM vers InnoDB
Comment les colonnes AUTO_INCREMENT fonctionnent avec InnoDB
Contraintes de clés étrangères FOREIGN KEY
->InnoDB et la réplication MySQL
Espaces de tables multiples : chaque table InnoDB a son fichier @filename{.ibd}

16.7.5 InnoDB et la réplication MySQL

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 Transporter 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'éxé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 escalve lit le log binaire du maître, et éxé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 éxécutée sur le serveur.

<< InnoDB et la réplication MySQL >>
Contraintes de clés étrangères FOREIGN KEY Créer des tables InnoDB Espaces de tables multiples : chaque table InnoDB a son fichier @filename{.ibd}