gh-ost
est une solution de migration de schéma en ligne déclenchée pour MySQL. Il est testable et offre une pause, un contrôle / reconfiguration dynamique, un audit et de nombreux avantages opérationnels.
gh-ost
produit une charge de travail légère sur le maître tout au long de la migration, découplée à partir de la charge de travail existante sur la table migrée.
Il a été conçu sur la base d'années d'expérience avec les solutions existantes et modifie le paradigme des migrations de table.
Tous les outils de changement de schéma en ligne existants fonctionnent de manière similaire: ils créent une table fantôme à la ressemblance de votre table d'origine, migrent ce tableau tout en étant vide, copié lentement et progressivement (Tout INSERT
, DELETE
, UPDATE
appliqué à votre table) à la table fantôme . Enfin, au bon moment, ils remplacent votre table d'origine par la table fantôme .
gh-ost
utilise le même modèle. Cependant, il diffère de tous les outils existants en n'utilisant pas les déclencheurs. Nous avons reconnu que les déclencheurs sont la source de nombreuses limites et risques.
Au lieu de cela, gh-ost
utilise le flux de journal binaire pour capturer les changements de table et les applique de manière asynchrone sur la table fantôme . gh-ost
prend sur lui-même certaines tâches que d'autres outils laissent à la base de données. En conséquence, gh-ost
a un plus grand contrôle sur le processus de migration; peut vraiment le suspendre; peut vraiment découpler la charge d'écriture de la migration à partir de la charge de travail du maître.
De plus, il offre de nombreux avantages opérationnels qui le rendent plus sûr, digne de confiance et amusant à utiliser.
gh-ost
en le testant sur des répliques. gh-ost
émettra le même flux que sur le maître, pour migrer une table sur une réplique, sans remplacer réellement le tableau d'origine, laissant la réplique avec deux tables que vous pouvez ensuite comparer et vous satisfaire que l'outil fonctionne correctement. C'est ainsi que nous testons continuellement gh-ost
dans la production.gh-ost
Throttles, il cesse vraiment des écritures sur Master: Pas de copies en ligne et pas de traitement en cours sur les événements. Par étranglement, vous renvoyez votre maître à sa charge de travail d'originegh-ost
, même si la migration s'exécute toujours. Vous pouvez initier de force la limitation.gh-ost
pour le statut. gh-ost
écoute sur Unix Socket ou TCP.gh-ost
peut être invité à reporter ce qui est probablement l'étape la plus critique: l'échange de tables, jusqu'à ce que vous soyez confortablement disponible. Pas besoin de s'inquiéter de la question de l'ETA en dehors des heures de bureau.gh-ost
avec votre environnement particulier.Veuillez vous référer aux documents pour plus d'informations. Non, vraiment, lisez les documents.
La feuille de triche a tout. Vous pourriez être intéressé à invoquer gh-ost
dans divers modes:
gh-ost
détermine les identités des serveurs impliqués. Mode requis si votre maître utilise la réplication basée sur la déclaration)gh-ost
préfère le premier)gh-ost
.Nos conseils:
--test-on-replica
les premières fois. Mieux encore, rendez-le continu. Nous avons plusieurs répliques où nous atténuons l'ensemble de notre flotte de tableaux de production, les migrant une par une, vérifiant les résultats, la vérification de la migration est bonne.--execute
.Plus de conseils:
--exact-rowcount
pour une indication de progrès précise--postpone-cut-over-flag-file
pour prendre le contrôle du timing de coupeVoir également:
gh-ost
sur AWS RDSgh-ost
sur la base de données Azure pour MySQL À l'origine, cela a été nommé gh-osc
: GiTHub Online Schema Change, comme Facebook Online Schema Change et Pt-Online-Schema-Change.
Mais alors une rare mutation génétique s'est produite, et le c
s'est transformé en t
. Et cela nous a fait passer le chemin d'essayer de comprendre un nouvel acronyme. gh-ost
(prononcer: fantôme ), représente le schéma en ligne de Github transmogrifier / traducteur / transformateur / transfigurateur
gh-ost
est autorisé sous la licence du MIT
gh-ost
utilise des bibliothèques tierces, chacune avec sa propre licence. Ceux-ci se trouvent ici.
gh-ost
est libéré dans un état stable, mais avec un kilométrage à faire. Nous sommes ouverts pour tirer les demandes. Veuillez d'abord discuter de vos intentions via des problèmes.
Nous développons gh-ost
chez Github et pour la communauté. Nous pouvons avoir des priorités différentes de celles des autres. De temps à autre, nous pouvons suggérer une contribution qui ne figure pas sur notre feuille de route immédiate mais qui peut plaire aux autres.
Veuillez consulter le codage de GH-OST pour un guide pour commencer le développement avec GH-OST.
gh-ost
est maintenant GA et stable.
gh-ost
est disponible en format binaire pour Linux et Mac OS / X
Télécharger la dernière version ici
gh-ost
est un projet Go; Il est construit avec GO 1.15
et plus. Pour construire par vous-même, utilisez soit:
./bin/gh-ost
Binary.tar.gz
dans /tmp/gh-ost-release
De manière générale, master
Branch est stable, mais seules les versions doivent être utilisées dans la production.
gh-ost
est conçu, rédigé, examiné et testé par l'équipe d'infrastructure de base de données chez GitHub: