Skip to main content

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 レビュー

ロックを意識した SQL レビュー

100 以上のルールが、ロックを伴う DDL、アルゴリズム指定の欠落、後方互換性のない操作を、マイグレーションがマージされる前に検出します。

順序付けられたロールアウト

変更は dev → staging → production の順にデプロイされるため、同じマイグレーションが本番に触れる前に下位環境で検証されます。

ロールバックを標準装備

すべての変更は差分と生成されたロールバック計画を伴うため、マイグレーションを元に戻すのは手作業の再構築ではなくワンクリックです。

手作業のスクリプトではなく、エンドツーエンドで統制

gh-ost の実行は、他のすべてと同じ変更ワークフローの中に収まります。本番マシンで手作業で操作するツールではなく、承認・監査・アクセス制御の中で動きます。

リスク階層に応じた承認

大規模または破壊的なマイグレーションは人間へ振り分け、安全で影響範囲の限定された変更は自動的にデプロイされます。

本番への直接アクセスなし

本番の認証情報を一切持たずに本番マイグレーションを実行できます。Bytebase がすべての変更を仲介し記録します。

完全な変更履歴と監査

すべてのマイグレーションは、作成者・差分・アルゴリズム・タイムスタンプとともに記録されます。手作業で組み立てない監査証跡です。

1 つの MySQL マイグレーションワークフロー、すべてのチームに行き届く統制

そのまま使える CI/CD 連携

既存の GitHub、GitLab、Bitbucket パイプラインに MySQL マイグレーションを組み込めます。構築して見守る gh-ost ランナーは不要です。

ポリシー・アズ・コード

変更に gh-ost や人の判断が必要かを決めるルールをバージョン管理すれば、すべてのチームが同じガードレールを自動的に継承します。

セルフホスト、単一イメージ

1 つの Docker イメージとして自社インフラで実行できます。データと認証情報がネットワークの外に出ることはありません。

インテグレーション

モダンなエンタープライズ環境全体に組み込まれる設計

Bytebase はデータベース、開発ツール、コラボレーションプラットフォームと連携し、複雑でマルチツールなエンタープライズ環境にも自然に溶け込みます。

Integrations Shape
Bitbucket logo
GitHub logo
GitLab logo
MongoDB logo
MySQL logo
Oracle logo
PostgreSQL logo
Redis logo
Snowflake logo
SQL Server logo
Terraform logo
Bitbucket logo
GitHub logo
GitLab logo
MongoDB logo
MySQL logo
Oracle logo
PostgreSQL logo
Redis logo
Snowflake logo
SQL Server logo
Terraform logo
Bitbucket logo
GitHub logo
GitLab logo
MongoDB logo
MySQL logo
Oracle logo
PostgreSQL logo
Redis logo
Snowflake logo
SQL Server logo
Terraform logo
Bitbucket logo
GitHub logo
GitLab logo
MongoDB logo
MySQL logo
Oracle logo
PostgreSQL logo
Redis logo
Snowflake logo
SQL Server logo
Terraform logo

よくある質問

データベース開発のスタンダードを体験する