ApsaraDB RDS for MySQL は論理レプリケーションを使用します。プライマリインスタンスでトランザクションが実行されると、その binlog イベントがレプリカに送信され、レプリカで適用されることでデータ整合性が確保されます。しかし、このアーキテクチャでは、実行時間の長い大規模トランザクションによって、レプリカで大幅なレプリケーションレイテンシーが発生する可能性があります。この問題に対処するため、ApsaraDB RDS for MySQL は大規模トランザクションのリアルタイム適用機能を導入しました。この機能により、大規模トランザクションがプライマリインスタンスでまだ実行中であっても、レプリカでその実行を開始できます。プライマリインスタンスとレプリカの両方でトランザクションを同時に実行することで、この機能は結果として生じるレプリケーションレイテンシーをほぼ解消し、ご利用のインスタンスの高可用性を確保します。
仕組み

大規模トランザクションのレプリケーションレイテンシー (左図):MySQL では、大規模トランザクションがプライマリインスタンスでコミットされた後にのみ、レプリカでの適用が開始されます。これは、レプリカでのトランザクション実行時間がそのままレプリケーションレイテンシーになることを意味します。この期間中、プライマリインスタンスでコミットされた他のトランザクションはレプリカで適用できず、データ更新が遅延します。
大規模トランザクションのリアルタイム適用による最適化 (右図):最適化の核となるのは、大規模トランザクションをレプリカとプライマリインスタンスで同時に実行することです。大規模トランザクションがプライマリインスタンスでコミットされると、レプリカでもコミットされます。大規模トランザクションがプライマリインスタンスでロールバックされると、レプリカでもロールバックされます。
前提条件
大規模トランザクションのリアルタイム適用機能を使用するには、ご利用のインスタンスが次の要件を満たしている必要があります:
データベースエンジンバージョン:MySQL 8.0、かつマイナーエンジンバージョンが 20260228 以降。ご利用のインスタンスがこの要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードするか、データベースエンジンバージョンをアップグレードできます。
操作手順
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、対象の RDS インスタンスを見つけ、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
[編集可能なパラメーター] タブで、次のパラメーターを検索して設定します:
大規模トランザクションのリアルタイム適用機能を有効にする:
loose_binlog_realtime_apply_long_trx_enabledをONに設定します。loose_binlog_realtime_transmit_source_enabledをONに設定します。loose_binlog_realtime_transmit_replica_enabledをONに設定します。
その他の必須パラメーター:
パラメーター
説明
推奨値
loose_binlog_realtime_replica_long_transaction_limit_sizeトランザクションがリアルタイムレプリケーションをトリガーするためのサイズのしきい値を指定します。トランザクションによって生成された binlog イベントがこの値を超えると、この機能が自動的に有効になります。
64 MB
loose_binlog_realtime_enable_log_messagリアルタイムレプリケーションのログをエラーログに書き込むかどうかを指定します。このパラメーターを有効にすることを推奨します。
ONloose_binlog_realtime_apply_workers
リアルタイムレプリケーション用の Brr ワーカースレッドの数を制御します。
8
[OK] をクリックし、次に [パラメーターの送信] をクリックします。表示されるダイアログボックスで、変更を適用するタイミングを選択します。パラメーターの変更は、インスタンスを再起動することなく即時に有効になります。
最適化の結果
次の例は、プライマリインスタンスで 500 万行のデータをインポートするトランザクションに対するこの機能の効果を示しています:
最適化前:トランザクションはまずプライマリインスタンスで実行されます。コミットされた後、レプリカで適用されます。レプリケーションレイテンシーは、トランザクションの実行時間と等しくなります。
最適化後:トランザクションはプライマリインスタンスとレプリカで同時に実行され、レプリケーションレイテンシーが解消されます。
