Online Schema Migration
大規模な MySQL のスキーマ変更を無停止で実行する
大規模な MySQL の ALTER が本番に当たると何が起きるか
ALTER がテーブルを再構築のためにロックする
大きな InnoDB テーブルでは、エンジンがインプレースで実行できない ALTER がテーブル全体を再構築し、メタデータロックを保持します。再構築にかかる時間だけ書き込みが止まり、それが本番で初めて判明します。
MySQL が黙って COPY にダウングレードする
INSTANT と INPLACE が扱えない操作では、MySQL は何も告げずにロックを伴う COPY にフォールバックします。空のテーブルでテストした変更は、10 億行に対しては全く別物の挙動になります。
gh-ost はもう 1 つの運用システム
標準的な答え — gh-ost や pt-online-schema-change — は、変更ごとに手作業で組み立て、設定し、スロットリングし、見守るべき別のツールを意味します。
Bytebase が MySQL のマイグレーションをオンラインで実行する方法
変更に応じて Online DDL か gh-ost を選択
Bytebase はテーブルサイズと操作を見て、最も安価で安全な方法でマイグレーションを実行します。エンジンがインプレースで実行できるときはネイティブの Online DDL、できないときは gh-ost です。
安全なときは Online DDL
MySQL がインプレース(INSTANT または INPLACE)で実行できる変更は、Bytebase がネイティブに実行します。管理すべきシャドウテーブルはありません。
COPY が高くつくときは gh-ost
MySQL がロックを伴う COPY にフォールバックする場合、Bytebase は変更を gh-ost に振り分けます。binlog からシャドウテーブルを構築し、アトミックにカットオーバーします。
レプリカを意識したスロットリング
gh-ost はレプリカ遅延に応じてスロットリングするため、10 億行のマイグレーションが本番の背後にいるフォロワーを停滞させません。
実行前にレビューとシーケンス
すべてのマイグレーションが SQL レビューを通過し、環境をまたいで順番にロールアウトされるため、ロックを伴うステートメントが本番に届く前に検出されます。
ロックを意識した SQL レビュー
100 以上のルールが、ロックを伴う DDL、アルゴリズム指定の欠落、後方互換性のない操作を、マイグレーションがマージされる前に検出します。
順序付けられたロールアウト
変更は dev → staging → production の順にデプロイされるため、同じマイグレーションが本番に触れる前に下位環境で検証されます。
ロールバックを標準装備
すべての変更は差分と生成されたロールバック計画を伴うため、マイグレーションを元に戻すのは手作業の再構築ではなくワンクリックです。
手作業のスクリプトではなく、エンドツーエンドで統制
gh-ost の実行は、他のすべてと同じ変更ワークフローの中に収まります。本番マシンで手作業で操作するツールではなく、承認・監査・アクセス制御の中で動きます。
リスク階層に応じた承認
大規模または破壊的なマイグレーションは人間へ振り分け、安全で影響範囲の限定された変更は自動的にデプロイされます。
本番への直接アクセスなし
本番の認証情報を一切持たずに本番マイグレーションを実行できます。Bytebase がすべての変更を仲介し記録します。
完全な変更履歴と監査
すべてのマイグレーションは、作成者・差分・アルゴリズム・タイムスタンプとともに記録されます。手作業で組み立てない監査証跡です。
1 つの MySQL マイグレーションワークフロー、すべてのチームに行き届く統制
モダンなエンタープライズ環境全体に組み込まれる設計
Bytebase はデータベース、開発ツール、コラボレーションプラットフォームと連携し、複雑でマルチツールなエンタープライズ環境にも自然に溶け込みます。