gh-ost
ist eine auslöslose Online-Schema-Migrationslösung für MySQL. Es ist prüfbar und bietet Pensabilität, dynamische Steuerung/Rekonfiguration, Prüfung und viele operative Vorteile.
gh-ost
erstellt während der Migration eine leichte Arbeitsbelastung für den Master, entkoppelt aus der vorhandenen Arbeitsbelastung in der migrierten Tabelle.
Es wurde auf der Grundlage jahrelanger Erfahrung mit vorhandenen Lösungen entwickelt und verändert das Paradigma der Tabellenmigrationen.
Alle vorhandenen Online-Schema-Change-Tools funktionieren in ähnlicher Weise: Sie erstellen eine Geistertabelle in der Ähnlichkeit Ihrer ursprünglichen Tabelle, migrieren Sie diese Tabelle, während Sie leer, langsam und inkrementell Daten aus Ihrer ursprünglichen Tabelle in die Ghost -Tabelle kopieren, und verbreiten Sie die laufenden Änderungen in der Zwischen (Jeder INSERT
, DELETE
, UPDATE
auf Ihre Tabelle) in die Geistertabelle . Zum richtigen Zeitpunkt ersetzen sie Ihre ursprüngliche Tabelle durch die Geistertabelle .
gh-ost
verwendet das gleiche Muster. Es unterscheidet sich jedoch von allen vorhandenen Tools, indem keine Trigger verwendet werden. Wir haben die Auslöser als Quelle vieler Einschränkungen und Risiken erkannt.
Stattdessen verwendet gh-ost
den binären Protokollstrom, um Tabellenänderungen zu erfassen, und wendet sie asynchron auf die Ghost -Tabelle an. gh-ost
übernimmt einige Aufgaben, die andere Tools für die Datenbank lassen. Infolgedessen hat gh-ost
eine höhere Kontrolle über den Migrationsprozess. kann es wirklich suspendieren; Kann die Schreibbelastung der Migration aus der Arbeitsbelastung des Meisters wirklich entkoppeln.
Darüber hinaus bietet es viele operative Vorteile, die es sicherer, vertrauenswürdiger und unterhaltsamer Nutzung machen.
gh-ost
auf, indem Sie es auf Repliken testen. gh-ost
wird den gleichen Fluss wie das Master ausstellen, um eine Tabelle auf einer Replik zu migrieren, ohne die ursprüngliche Tabelle tatsächlich zu ersetzen, und die Replik mit zwei Tabellen, die Sie dann vergleichen können, und sich selbst zufrieden stellen können, dass das Tool korrekt funktioniert. So testen wir gh-ost
in der Produktion kontinuierlich.gh-ost
Drosseln wirklich aufhört, schreibt schreibt über Master: Keine Zeilenkopien und keine laufenden Ereignisverarbeitung. Durch Droseln bringen Sie Ihren Meister in die ursprüngliche Arbeitsbelastung zurückgh-ost
interaktiv neu konfigurieren, auch wenn die Migration noch ausgeführt wird. Sie können das Drossel gewaltsam einleiten.gh-ost
nach Status abfragen. gh-ost
hört auf UNIX Socket oder TCP zu.gh-ost
kann angewiesen werden, den wahrscheinlich kritischsten Schritt zu verschieben: Der Tausch von Tischen, bis Sie bequem verfügbar sind. Sie müssen sich keine Sorgen machen, dass ETA außerhalb der Bürozeiten liegt.gh-ost
mit Ihrer speziellen Umgebung koppeln.Weitere Informationen finden Sie in den DOCs. Nein, wirklich, lesen Sie die Dokumente.
Das Cheatsheet hat alles. Möglicherweise interessieren Sie sich in verschiedenen Modi: gh-ost
:
gh-ost
Identität der beteiligten Server. Erforderlicher Modus Wenn Ihr Master Anweisungsbasierte Replikation verwendet)gh-ost
bevorzugt erstere)gh-ost
Betrieb aufzubauen.Unsere Tipps:
--test-on-replica
. Besser noch, machen Sie es kontinuierlich. Wir haben mehrere Repliken, bei denen wir unsere gesamte Flotte von Produktionstabellen iterieren, sie nacheinander migrieren, die Ergebnisse überprüfen und die Migration überprüfen, ist gut.--execute
aus.Weitere Tipps:
--exact-rowcount
für eine genaue Fortschrittsanzeige--postpone-cut-over-flag-file
Auch siehe:
gh-ost
auf AWS RDSgh-ost
in der Azure-Datenbank für MySQL Ursprünglich wurde dies als gh-osc
: GitHub Online-Schema-Änderung genannt, bei denen wie Facebook Online-Schema-Änderung und PT-Online-Schema-Change.
Aber dann trat eine seltene genetische Mutation auf, und das c
verwandelte sich in t
. Und das hat uns den Weg geschickt, ein neues Akronym herauszufinden. gh-ost
(Aussprechen: Ghost ) steht für Githubs Online-Schema Transmogrifier/Übersetzer/Transformator/Transfigurator
gh-ost
ist unter der MIT-Lizenz lizenziert
gh-ost
verwendet Bibliotheken von Drittanbietern, die jeweils ihre eigene Lizenz haben. Diese werden hier gefunden.
gh-ost
wird in einem stabilen Zustand veröffentlicht, aber mit Kilometerstand zu gehen. Wir sind offen, um Anfragen zu ziehen. Bitte besprechen Sie Ihre Absichten zuerst über Themen.
Wir entwickeln gh-ost
bei Github und für die Gemeinschaft. Wir können unterschiedliche Prioritäten haben als andere. Von Zeit zu Zeit können wir einen Beitrag vorschlagen, der nicht auf unserer unmittelbaren Roadmap liegt, sondern auf andere ansprechen kann.
Weitere Informationen finden Sie in der Codierung von GH-ost, um sich mit GH-OST zu entwickeln.
gh-ost
ist jetzt GA und stabil.
gh-ost
ist im binären Format für Linux und Mac OS/X erhältlich
Laden Sie hier die neueste Version herunter
gh-ost
ist ein GO-Projekt; Es ist mit GO 1.15
und höher gebaut. Verwenden Sie entweder:
./bin/gh-ost
binär.tar.gz
Artefakten in /tmp/gh-ost-release
Im Allgemeinen ist master
Branch stabil, aber nur Veröffentlichungen sind in der Produktion zu verwenden.
gh-ost
wurde vom Datenbankinfrastruktur-Team bei GitHub entworfen, verfasst, überprüft und getestet: