Harness(ハーネス)は、Percona Toolkit for MySQLを同社のDatabase DevOpsスキーマ管理ワークフローに統合することを発表した。これにより、Liquibaseの変更ログは、ネイティブのALTER TABLE操作ではなく、pt-online-schema-changeを介して、対象となるMySQL DDLを実行できるようになる。
このアップデートは、負荷の高いMySQLテーブルで長時間テーブルロックが発生するリスクを軽減することを目的としている。従来のALTER TABLE操作では、変更中は書き込みがブロックされ、書き込みのキューイング、アプリケーションのタイムアウト、レプリケーション遅延の増加、インシデント対応の長期化などが発生する可能性がある。Perconaベースのパスでは、異なるアプローチを採用している。新しいスキーマでシャドーテーブルを作成し、データを小さなチャンクに分割してコピーし、トリガーによって元のテーブルとシャドーテーブルを同期させ、アトミックスワップによってロック時間を最小限に抑える。これにより、多くのスキーマ変更を夜間のメンテナンス時間ではなく、通常の業務時間中に実行できるようになる。
この機能の有効化は、Harness Database DevOps内のスキーマごとに処理される。データベーススキーマを作成する際、ユーザーはMySQLの接続情報を指定し、スキーマ構成にLiquibaseを選択し、「Percona Toolkitを使う」オプションを有効にしてから、通常のワークフローに進む。この設定はデフォルトでオフになっている。チェックを外すとLiquibaseのネイティブなMySQL DDL動作が維持され、チェックを入れると対象となる変更ログがpt-online-schema-changeを介してルーティングされる。
特定のDDLパターンはオンラインツールでは安全ではない。外部キーの追加または削除はテーブルの交換中に失敗する可能性があり、主キーまたは一意インデックスのないテーブルは決定論的なデータ チャンキングが必要なため安全に移行できない。また、主キーの削除、複雑な列の並べ替え、一部のストレージエンジンの変更など、少数の操作はサポートされる変更セットの範囲外だ。データベース ユーザーの権限も調整する必要がある。対象テーブルに対するALTER、SELECT、INSERT、UPDATEに加え、シャドーテーブルを管理するためのデータベースに対するCREATEおよびDROPが必要だ。
Harnessは、Percona Toolkitを本番環境に移行する前に、まず重要度の低い環境で有効化し、実際のワークロード条件下での動作を確認することを推奨している。また、Harness Database DevOpsを既に利用しているチームは、次回のスキーマ作成時にこの機能を試すことができ、まだプラットフォームを利用していない組織は、Harnessのエキスパートに相談して、ダウンタイムゼロのスキーマ移行オプションを検討できるとしている。
出典:Harness
この製品の詳細については、Harness製品ページをご覧ください。