gh-ost
MySQLのトリガーレスオンラインスキーマ移行ソリューションです。テスト可能であり、一時停止性、動的制御/再構成、監査、および多くの運用特典を提供します。
gh-ost
移行全体でマスターに軽いワークロードを生成し、移動したテーブルの既存のワークロードから切り離されています。
既存のソリューションでの長年の経験に基づいて設計されており、テーブル移行のパラダイムを変更します。
既存のすべてのオンラインスキーマ変化ツールは同様の方法で動作します。元のテーブルに似たゴーストテーブルを作成し、そのテーブルを空に、ゆっくり、ゆっくり、そして徐々にゴーストテーブルにコピーし、その間に進行中の変更を伝播します(テーブルにINSERT
、 DELETE
、更新、 UPDATE
)ゴーストテーブルに。最後に、適切なタイミングで、元のテーブルをゴーストテーブルに置き換えます。
gh-ost
同じパターンを使用します。ただし、トリガーを使用しないことにより、既存のすべてのツールとは異なります。トリガーが多くの制限とリスクの原因であることを認識しています。
代わりに、 gh-ost
バイナリログストリームを使用してテーブルの変更をキャプチャし、それらを非同期にゴーストテーブルに適用します。 gh-ost
他のツールがデータベースを実行するために残すいくつかのタスクを引き受けます。その結果、 gh-ost
移行プロセスをより強く制御できます。本当にそれを一時停止することができます。マスターのワークロードからの移行の書き込み負荷を本当に切り離すことができます。
さらに、より安全で、信頼できる、楽しいものにする多くの運用上の特典を提供します。
gh-ost
で信頼を築きます。 gh-ost
、マスターと同じフローを発行し、実際に元のテーブルを交換することなくレプリカにテーブルを移行し、レプリカに2つのテーブルを残してから、ツールが正しく動作することを比較して満足させることができます。これが、生産でgh-ost
継続的にテストする方法です。gh-ost
strottlesの場合、Masterに真に停止します。列のコピーはなく、進行中のイベント処理はありません。スロットリングすることで、マスターを元のワークロードに戻しますgh-ost
インタラクティブに再構成できます。強制的にスロットリングを開始することができます。gh-ost
照会できます。 gh-ost
UnixソケットまたはTCPに耳を傾けます。gh-ost
おそらく最も重要なステップであるものを延期するように指示することができます。テーブルの交換は、快適に利用できるようになるまでです。 ETAが営業時間外にいることを心配する必要はありません。gh-ost
と特定の環境を結合できます。詳細については、ドキュメントを参照してください。いいえ、本当に、ドキュメントを読んでください。
チートシートにはすべてがあります。さまざまなモードでgh-ost
呼び出すことに興味があるかもしれません。
gh-ost
関連するサーバーのアイデンティティを把握します。gh-ost
前者を好む)gh-ost
の操作で信頼を築く方法。私たちのヒント:
--test-on-replica
最初に数回試してみてください。さらに良いことに、継続的にしてください。私たちは複数のレプリカを持っています。そこでは、生産テーブルの艦隊全体を繰り返し、それらを1つずつ移行し、結果をチェックサムし、移行が良いことを確認します。--execute
経由で本物を発行します。その他のヒント:
--exact-rowcount
使用します--postpone-cut-over-flag-file
使用して、カットオーバータイミングを制御します参照してください:
gh-ost
使用しますgh-ost
使用しますもともとは、Facebookオンラインスキーマの変更やPT-Online-Schema-Changeなど、 gh-osc
Online Schema Changeと名付けられました。
しかし、その後、まれな遺伝的変異が起こり、 c
t
に変換されました。そして、それは私たちを新しい頭字語を把握しようとする道を送りました。 gh-ost
(発音: Ghost )は、GitHubのオンラインスキーマトランスモグリファイヤー/翻訳者/トランス/トランスフィギュレーターの略です
gh-ost
、MITライセンスに基づいてライセンスされています
gh-ost
、それぞれ独自のライセンスを備えたサードパーティライブラリを使用します。これらはここにあります。
gh-ost
安定した状態でリリースされますが、走行距離があります。私たちはリクエストをプルすることができます。まず問題を介してあなたの意図について話し合ってください。
Githubとコミュニティのためにgh-ost
開発します。他の優先事項とは異なる場合があります。時々、私たちの即時のロードマップにはないが、他の人にアピールするかもしれない貢献を提案するかもしれません。
GH-OSTで開発を開始するためのガイドについては、Coding GH-ostをご覧ください。
gh-ost
現在GAで安定しています。
gh-ost
、LinuxおよびMac OS/Xのバイナリ形式で利用できます
最新リリースはこちらからダウンロードしてください
gh-ost
GOプロジェクトです。 Go 1.15
以上で構築されています。自分で構築するには、次のいずれかを使用してください。
./bin/gh-ost
バイナリです。/tmp/gh-ost-release
の建物tar.gz
アーティファクトのbuild.sh一般的に言えば、 master
ブランチは安定していますが、リリースのみが生産に使用されます。
gh-ost
は、GitHubのデータベースインフラストラクチャチームによって設計、執筆、レビュー、テストされています。