すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:DDL レプリケーション遅延の最適化

最終更新日:Aug 26, 2026

大規模なテーブルに対する ALTER TABLE のような長時間実行 DDL ステートメントは、プライマリが終了してコミットするのを待つ間、セカンダリデータベースを数百秒間停止させることがあります。バイナリログリアルタイムレプリケーション (BRR) は、コミットシグナルを待つのではなく、プライマリがセカンダリに DDL ステートメントを並行して実行開始するように通知することで、この遅延を解消します。8,000 万行、23 GB のテーブルでのベンチマークテストでは、BRR を使用しない場合にセカンダリで 277 秒のレプリケーション遅延が発生しましたが、BRR を有効にした場合は遅延はゼロでした。

仕組み

MySQL は論理レプリケーションを使用します。プライマリデータベースでトランザクションがコミットされると、その結果の binlog イベントがセカンダリに送信されてリプレイされます。DDL ステートメントの場合、binlog ペイロードは (1 つの Gtid_log_event と 1 つの Query_log_event で) 小さいため、転送時間はごくわずかです。ボトルネックは DDL 実行時間そのものです。プライマリがコミットするまでセカンダリは開始できません。

Standard DDL replication flow

BRR はこの問題を根本から解決します。プライマリが DDL ステートメントを開始すると、リアルタイム伝送を介して、Brr binlog イベント (この機能で導入された新しいイベントタイプ) を直ちにセカンダリに送信します。セカンダリは、標準の MySQL Worker スレッドとは独立した専用の Brr Worker スレッドを使用して、DDL を並列で実行し始めます。セカンダリが DDL 作業の大部分を完了すると、プライマリからの結果を待機します:

  • プライマリが成功した場合、セカンダリにコミットするよう通知します。

  • プライマリが失敗した場合、セカンダリにロールバックするよう通知します。

レプリケーション遅延の合計は、セカンダリデータベースへのネットワーク伝送 1 回分と DDL のコミット時間にまで削減されます。通常は数十ミリ秒です。

BRR parallel DDL replication flow
Brr binlog イベントは binlog またはリレーログに書き込まれないため、バイナリログを消費するダウンストリームシステムには影響しません。

前提条件

BRR を有効化する前に、次を確認してください:

サポートされる DDL ステートメント

BRR が対象とする DDL ステートメントは、マイナーエンジンバージョンによって異なります:

マイナーエンジンバージョン サポートされるステートメント
20250731 以降 ALTER TABLE
20251031 以降 ALTER TABLE および OPTIMIZE TABLE

BRR の有効化

インスタンスパラメーターを設定して、プライマリデータベースとセカンダリデータベースの両方で次のパラメーターを設定してください。変更は即時に反映され、インスタンスの再起動は不要です。

プライマリデータベース

パラメーター 説明 デフォルト
loose_binlog_realtime_apply_ddl_source_enabled ONプライマリで BRR を有効化するには、 に設定します。 —
loose_binlog_realtime_ddl_time_limit BRR は、実行時間がこのしきい値 (ミリ秒) を超える DDL ステートメントにのみ適用されます。N は 0 以上の整数です。 1000

セカンダリデータベース

パラメーター 説明 デフォルト
loose_binlog_realtime_apply_workers セカンダリ上の Brr Worker スレッド数です。1 以上の整数である必要があります。 —

ベンチマーク結果

次のテストでは、80,000,000 レコード (23 GB) を持つ単一のテーブルを使用し、ALTER TABLE sbtest1 ENGINE=InnoDB を実行して再構築しました。 プライマリは 16:21:35 に DDL を実行し、16:32:50 に再度実行しました。 テストインスタンスでは、マイナーエンジンバージョン 20251031 を使用しました。

BRR 有効化 セカンダリのレプリケーション遅延
いいえ 277 秒
はい 0 秒
Benchmark results showing replication delay with and without BRR