J'ai une question concernant la sauvegarde logique des bases de données MySQL qui utilisent à la fois MyISAM et InnoDB.
L' mysqldump
utilitaire prend en charge ces deux options:
--single-transaction - Crée un instantané cohérent en vidant toutes les tables dans une seule transaction. Fonctionne UNIQUEMENT pour les tables stockées dans des moteurs de stockage qui prennent en charge le multiversionnement (actuellement seul InnoDB le fait) [...] L'option désactive automatiquement --lock-tables.
-x, --lock-all-tables - Verrouille toutes les tables dans toutes les bases de données. Ceci est réalisé en prenant un verrou de lecture global pendant toute la durée du vidage. Désactive automatiquement --single-transaction et --lock-tables.
Pour InnoDB, nous avons besoin
--single-transaction
pour MyISAM, nous avons besoin de - lock-tables ou lock-all-tables (au cas où nous aurions besoin d'une cohérence entre bases de données).
Alors, comment une base de données hybride (une base de données qui utilise à la fois les moteurs MyISAM et InnoDB) est-elle censée être sauvegardée?
Éditer:
Juste pour clarifier, la question pourrait être reformulée comme ceci:
Les options lock- [all-] tables garantissent-elles une sauvegarde cohérente des tables InnoDB?
--lock-all-tables
alors la sauvegarde sera cohérente, non? Et il suffit d'exécuter mysqldump une seule fois: ce sera sûr pour InnoDB et MyISAM en même temps, non?Comme idée supplémentaire pour votre situation, il est peut-être utile de réfléchir à la configuration d'une configuration maître-esclave, où votre sauvegarde est effectuée à partir de l'esclave.
Une base de données MySQL avec un mélange d'InnoDB et MyISAM verrouillera toujours (pour autant que je sache dans chaque configuration et avec chaque outil de sauvegarde) les tables MyISAM pour la phase de sauvegarde MyISAM.
Pour éviter ce verrouillage, utilisez cette configuration:
Toutes les écritures et lectures vont au serveur A (maître). Le serveur B (esclave) n'est utilisé que pour la sauvegarde. Sur l'esclave, vous installez un outil de sauvegarde ou un script de votre choix, par exemple l'administrateur MySQL.
Configurez votre sauvegarde, par exemple quotidiennement pendant la nuit. Les verrous sont sur l'esclave, ce qui entraîne un décalage pendant que l'esclave se verrouille, mais ce décalage est rattrapé dès que la sauvegarde est terminée et que le verrou est ouvert.
la source