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

ApsaraDB RDS:Binlog in Redo

最終更新日:Nov 09, 2025

Binlog in Redo 機能を使用すると、トランザクションがコミットされるときに、システムがバイナリログを redo ログファイルに同期的に書き込むことができます。これにより、同期のためにディスク上で実行される I/O 操作が削減され、データベースのパフォーマンスが向上します。

前提条件

  • RDS インスタンスで MySQL 8.0 が実行されていること。

  • RDS インスタンスのマイナーエンジンバージョンが 20200430 以降であること。インスタンスのマイナーエンジンバージョンを更新する方法の詳細については、「マイナーカーネルバージョンのアップグレード」をご参照ください。

  • RDS インスタンスの sync_binlog パラメーターが 1 に設定され、binlog_order_commits パラメーターが OFF に設定されていること。詳細については、「インスタンスパラメーターの設定」をご参照ください。

  • インスタンスのデータレプリケーションモードが非同期に設定されていること。詳細については、「データレプリケーションモードのクエリと変更」をご参照ください。

背景情報

重要な MySQL ビジネスシナリオでデータのセキュリティを確保するために、トランザクションがコミットされると、システムはバイナリログと redo ログの両方を同期的に保存します。この場合、次のパラメーター設定を構成する必要があります:

sync_binlog = 1;
innodb_flush_log_at_trx_commit = 1;

トランザクションがコミットされるたびに、システムは 2 つの I/O 操作を実行します。1 つはバイナリログをディスクに書き込むことで、もう 1 つは redo ログをディスクに書き込むことです。バイナリログに対してグループコミットが有効になっていても、システムは 2 つの I/O 操作が完了するのを待つ必要があります。これは、特にクラウドディスクが使用される場合に、トランザクション処理の効率に影響します。I/O マージのパフォーマンスは、コミットされる同時トランザクションの数によって異なります。同時トランザクションの数が少ない場合、パフォーマンスは低くなります。たとえば、少数の書き込みトランザクションがコミットされると、システムの応答が遅くなります。

トランザクションコミットの効率を向上させるために、AliSQL は Binlog in Redo 機能を提供します。この機能は、persist_binlog_to_redo パラメーターを on に設定することで有効にできます。トランザクションがコミットされると、システムはバイナリログを redo ログファイルに同期的に書き込み、redo ログファイルのみをディスクに保存します。これにより、I/O 消費が削減されます。バイナリログファイルは、定期的な間隔で別のスレッドを使用して非同期でディスクに保存されます。例外発生時に再起動操作がトリガーされた場合、システムは redo ログファイル内のバイナリログを使用してバイナリログファイルを補完します。これにより、データベースのパフォーマンスが向上し、システムの応答が速くなります。さらに、バイナリログファイルが保存される回数が減ります。これにより、ファイルシステムへの負荷が大幅に軽減され、パフォーマンスが向上します。この負荷は、リアルタイムのファイル更新によってトリガーされる fsync 関数の呼び出しに起因します。

Binlog in Redo 機能は、バイナリログのフォーマットを変更しません。レプリケーションやバイナリログを必要とするサードパーティツールは影響を受けません。

使用上の注意

プレミアムローカル SSD を使用する RDS インスタンスで Binlog in Redo 機能を有効にし、物理バックアップファイルを使用して RDS インスタンスのデータを自己管理データベースに復元する場合は、ApsaraDB RDS が提供する XtraBackup ツールを使用する必要があります。詳細については、「ツールの準備」をご参照ください。

パラメーター

  • persist_binlog_to_redo

    このパラメーターは、Binlog in Redo 機能を有効にするかどうかを指定します。このパラメーターはグローバルシステム変数です。有効な値: on および off。このパラメーターの値を変更すると、変更はすぐに有効になります。RDS インスタンスを再起動する必要はありません。

    説明

    Binlog in Redo 機能を有効にするには、persist_binlog_to_redo パラメーターを on に設定し、binlog_order_commits パラメーターを off に設定し、データレプリケーションモードを非同期レプリケーションに設定する必要があります。

    Binlog in Redo 機能は、インスタンスの sync_binlog パラメーターが 1 に設定されている場合にのみ有効にできます。それ以外の場合、上記の設定が構成されていても、この機能は有効になりません。この場合、Binlog Parallel Flush 機能を使用してインスタンスのパフォーマンスを最適化することをお勧めします。この機能の詳細については、「Binlog Parallel Flush 機能の使用」をご参照ください。

  • sync_binlog_interval

    バイナリログが非同期で保存される間隔。このパラメーターはグローバルシステム変数です。persist_binlog_to_redo パラメーターが on に設定されている場合にのみ有効になります。デフォルト値: 50。単位: ミリ秒 (ms)。ほとんどの場合、デフォルト値が推奨されます。このパラメーターの値を変更すると、変更はすぐに有効になります。RDS インスタンスを再起動する必要はありません。

ストレステスト

  • テスト環境

    • アプリケーションサーバー: Alibaba Cloud Elastic Compute Service (ECS) インスタンス

    • RDS インスタンスの仕様: 32 CPU コア、128 GB のメモリ、および拡張 SSD (ESSD)

    • RDS エディション: 非同期データレプリケーションを備えた RDS High-availability Edition

  • テストケース

    Sysbench は次のテストケースを提供します:

    • oltp_update_non_index

    • oltp_insert

    • oltp_write_only

  • テスト結果

    • oltp_update_non_index

      Binlog in Redo 機能を有効にすると、同時クエリ数が少ない場合に、1 秒あたりのクエリ数 (QPS) が大幅に増加し、レイテンシが低くなります。

      oltp_update_non_index-QPSoltp_update_non_index-laterncy

    • oltp_insert

      Binlog in Redo 機能を有効にすると、同時クエリ数が少ない場合に、QPS が大幅に増加し、レイテンシが低くなります。

      oltp_insert-QPSoltp_insert-latency

    • oltp_write_only

      Binlog in Redo 機能を有効にすると、同時クエリ数が少ない場合に、QPS がわずかに増加し、レイテンシが低くなります。

      oltp_write_only-QPSoltp_write_only-latency

    • バイナリログに対して fsync 関数が呼び出される回数

      Binlog in Redo 機能を有効にすると、呼び出し回数が大幅に削減されます。

      Binlog Fsync

テストの結論

  • oltp_update_non_index および oltp_insert テストケースは、単一ステートメントのトランザクションをテストし、トランザクションは頻繁にコミットされます。oltp_write_only テストケースは、複数ステートメントのトランザクションをテストし、トランザクションはあまり頻繁にコミットされません。このタイプのトランザクションには、2 つの UPDATE ステートメント、1 つの DELETE ステートメント、および 1 つの INSERT ステートメントが含まれます。oltp_update_non_index および oltp_insert テストケースでのパフォーマンスの向上は、oltp_write_only テストケースよりも顕著です。

  • 同時トランザクション数が 256 未満の場合、Binlog in Redo 機能はデータベースのパフォーマンスを大幅に向上させ、レイテンシを削減します。ほとんどのシナリオで、Binlog in Redo 機能は大きなメリットをもたらします。

  • Binlog in Redo 機能は、バイナリログに対して fsync 関数が呼び出される回数を大幅に削減します。これにより、ファイルシステムのパフォーマンスが向上します。