このトピックでは、PolarDB クラスタのバイナリロギング機能を有効にする方法について説明します。
背景情報
PolarDB は MySQL と互換性のあるクラウドネイティブデータベースです。デフォルトでは、PolarDB はバイナリログよりも高度な REDO ログを使用します。ただし、PolarDB では、MySQL エコシステムとの互換性を向上させるために、バイナリロギング機能を有効にすることができます。バイナリロギング機能を有効にすると、Elasticsearch や AnalyticDB などのデータプロダクトにデータベースを接続して、データクエリと分析を容易にすることができます。また、PolarDB for MySQL クラスタから ApsaraDB RDS for MySQL インスタンスへ、ApsaraDB RDS for MySQL インスタンスから PolarDB for MySQL クラスタへ、または PolarDB for MySQL クラスタ間で データを同期することもできます。
制限事項
2019年4月5日以降に作成された PolarDB クラスタの場合は、バイナリロギング機能を直接有効にすることができます。 2019年4月5日より前に作成された PolarDB クラスタの場合は、バイナリロギング機能を有効にする前に、クラスタのマイナーバージョンを最新バージョンに更新してください。マイナーバージョンの更新方法については、「マイナーバージョンの更新」をご参照ください。
課金
バイナリログはクラスタのストレージ容量を消費します。使用したストレージリソースに対して課金されます。バイナリログファイルが占有するストレージ容量を調整するには、バイナリログの保持期間を設定します。
例
サブスクリプション
クラスタのストレージが サブスクリプション 課金方法を使用しており、ストレージ容量が十分な場合は、追加料金は発生しません。

従量課金
クラスタのストレージが 従量課金 課金方法を使用している場合は、実際のバイナリログデータ量によって使用されるストレージ容量に基づいて課金されます。

使用上の注意
デフォルトでは、バイナリロギング機能は無効になっています。バイナリロギング機能を有効にすると、クラスタは自動的に再起動します。ほとんどの場合、クラスタの再起動タスクは完了するまでに 5 分かかります。クラスタの再起動中は、サービスが約 40 秒間中断される場合があります。リカバリ時間は、データ量とテーブルの数によって異なります。この操作はオフピーク時に行い、アプリケーションがデータベースサービスに自動的に再接続できることを確認することをお勧めします。
バイナリロギング機能を有効にすると、クラスタの書き込みパフォーマンスに悪影響を及ぼします。ただし、読み取りパフォーマンスには影響しません。ほとんどの場合、パフォーマンスへの影響は 10% 以内ですが、極端なワークロードでは 40% まで増加する可能性があります。詳細については、このトピックの「FAQ」セクションをご参照ください。
Data Transmission Service(DTS)などのサービスを使用してバイナリログをプル、サブスクライブ、またはレプリケートする場合は、プライマリ エンドポイントPolarDB クラスタの プライマリ エンドポイントクラスターのエンドポイントを管理する を使用することをお勧めします。プライマリエンドポイントはバイナリログを生成するプライマリノードを指しているため、これにより互換性と安定性が確保されます。 のクエリ方法については、「」トピックの「エンドポイントとポートを表示する」セクションをご参照ください。
バイナリロギング機能を有効にした後、大規模なトランザクションをコミットすると、他のトランザクションのコミットがブロックされ、クラスタの再起動と構成変更の時間が影響を受ける可能性があります。
このトピックで説明されている loose_polar_log_bin パラメーターはグローバルパラメーターです。セッションレベルのバイナリロギング機能を有効にするには、sql_log_bin パラメーターを設定します。
説明sql_log_bin パラメーターを使用して、セッションレベルのバイナリロギング機能を有効または無効にすることができます。デフォルトでは、この機能は無効になっています。この機能を有効にするには、クォータセンター にアクセスし、[polardb SQL _log_bin パラメーター権限] クォータ名を見つけて、[操作] 列の [適用] をクリックします。
DTS を使用して ApsaraDB RDS インスタンスから PolarDB クラスタにデータを移行する場合、バイナリロギング機能は自動的に有効になります。
バイナリロギングを有効にする
クラスタの作成時にバイナリロギング機能を有効にする
クラスタの作成時にバイナリロギング機能を有効にするには、[バイナリロギングの有効化] セクションで [有効にする] を選択します。詳細については、「カスタム購入」および「サブスクリプションクラスタを購入する」をご参照ください。
既存のクラスタのバイナリロギング機能を有効にする
クラスタのバイナリロギング機能を有効にすると、クラスタは自動的に再起動します。ほとんどの場合、クラスタの再起動タスクは完了するまでに 5 分かかります。クラスタの再起動中は、サービスが約 40 秒間中断される場合があります。リカバリ時間は、データ量とテーブルの数によって異なります。この操作はオフピーク時に行い、アプリケーションがクラスタに自動的に再接続できることを確認することをお勧めします。
PolarDB コンソール にログオンします。 左側のナビゲーションペインで [クラスタ] をクリックします。 左上隅でリージョンを選択し、リスト内のクラスタの ID をクリックして [基本情報] ページに移動します。
次のいずれかの方法でバイナリロギング機能を有効にします。
方法 1
クラスタの左側のナビゲーションウィンドウで、バイナリログ をクリックします。

今すぐ有効にする をクリックします。
[バイナリログを有効にする] ダイアログボックスで、有効モード パラメーターを [今すぐ] または [スケジュール済み] に設定します。
[スケジュール済み] を選択した場合は、バイナリロギング機能を有効にする日時を指定します。

[OK] をクリックします。
方法 2:loose_polar_log_bin パラメーターを設定してバイナリロギングを有効にします。
クラスタの左側のナビゲーションウィンドウで、 を選択します。
loose_polar_log_bin パラメーターを見つけて、パラメーター値を変更します。詳細については、「クラスタとノードのパラメーターを設定する」トピックの「パラメーターを変更する」セクションをご参照ください。
説明MySQL 5.6 を実行する PolarDB for MySQL クラスタの場合は、パラメーター値を ON_WITH_GTID に変更します。
MySQL 5.7 または MySQL 8.0 を実行する PolarDB for MySQL クラスタの場合は、パラメーター値を ON に変更します。
バイナリロギングを無効にする
PolarDB コンソール にログオンします。 左側のナビゲーションウィンドウで [クラスタ] をクリックします。 左上隅でリージョンを選択し、リスト内のクラスタの ID をクリックして [基本情報] ページに移動します。
次のいずれかの方法でバイナリロギング機能を無効にします。
方法 1:
クラスタの左側のナビゲーションウィンドウで、バイナリログ をクリックします。

[バイナリロギングを無効にする] をクリックします。
[バイナリログの無効化] ダイアログボックスで、[有効モード] パラメーターを [今すぐ] または [スケジュール] に設定します。
[スケジュール] を選択した場合は、バイナリロギング機能を無効にする日時を指定します。
必要に応じて、[ローカルバイナリログのクリア] を選択します。

[OK] をクリックします。
方法 2:loose_polar_log_bin パラメーターを設定してバイナリロギングを無効にします。
クラスタの左側のナビゲーションウィンドウで、 を選択します。
loose_polar_log_bin パラメーターを見つけて、パラメーター値を変更します。詳細については、「パラメーターを変更する」をご参照ください。
説明MySQL 5.6 を実行する PolarDB for MySQL クラスタの場合は、パラメーター値を OFF_WITH_GTID に変更します。
MySQL 5.7 または MySQL 8.0 を実行する PolarDB for MySQL クラスタの場合は、パラメーター値を OFF に変更します。
既存のバイナリログファイルは、機能が無効になった後も永続的に保持されます。バイナリログの保持期間を短縮し、バイナリログファイルが自動的に削除されるまで待ってから、機能を無効にすることができます。
バイナリログファイルを保持する
保持ポリシー
バイナリログファイルには、次の保持ポリシーがサポートされています。
バイナリロギング機能が有効になっている場合、バイナリログファイルはデフォルトで 3 日間保持されます。保持期間が 3 日を超えたバイナリログファイルは自動的に削除されます。
説明2023年11月23日より前に購入された PolarDB for MySQL クラスタの場合、バイナリログファイルはデフォルトで 2 週間(14 日間)保持されます。
2024年1月17日より前に購入された PolarDB for MySQL クラスタの場合、バイナリログファイルはデフォルトで 1 週間(7 日間)保持されます。
バイナリロギング機能が無効になっている場合、既存のバイナリログファイルは永続的に保持されます。
保持期間を変更する
バイナリログファイルの保持期間を変更しても、接続が中断されたり、クラスタの再起動が必要になったりすることはありません。
ただし、保持期間の変更により、10 TB などの大量のバイナリログファイルをパージする必要がある場合、書き込み操作中に一時的な例外が発生する可能性があります。大量のバイナリログが存在する場合は、オフピーク時に保持期間を変更することをお勧めします。保持期間を徐々に短縮することもできます。こうすることで、毎回クリアされるバイナリログは一部のみになります。これにより、ビジネス運用への影響が軽減されます。
削除されたバイナリログファイルは復元できません。
クラスタのバイナリロギング機能が有効になっている場合は、次の操作を実行してバイナリログの保持期間を変更します。
PolarDB for MySQL V5.6 クラスタ:loose_expire_logs_hours パラメーターの値を変更します。このパラメーターの有効な値:0 ~ 2376。単位:時間。デフォルト値:72。値 0 は、バイナリログファイルが自動的に削除されないことを指定します。詳細については、「クラスタとノードのパラメーターを設定する」をご参照ください。
PolarDB for MySQL 5.7 または 8.0 クラスタ:binlog_expire_logs_seconds パラメーターの値を変更します。このパラメーターの有効な値:0 ~ 4294967295。単位:秒。デフォルト値:259200。値 0 は、バイナリログファイルが自動的に削除されないことを指定します。詳細については、「クラスタとノードのパラメーターを設定する」をご参照ください。
重要これら 2 つのパラメーターの値を変更した後、クラスタ内の履歴バイナリログはすぐにクリアされません。次のいずれかの方法を使用して、即時パージをトリガーできます。
バイナリログファイルのローテーションを待ちます。アクティブなバイナリログファイルが
max_binlog_sizeで設定された最大サイズに達すると、新しいバイナリログファイルが作成され、すべての履歴バイナリログファイルが自動的に削除されます。特権アカウントを使用して、flush binary logs コマンドを実行します。
クラスタを再起動します。履歴バイナリログファイルは、クラスタの再起動後にクリアされます。
クラスタのバイナリロギング機能が無効になっていて、バイナリログファイルを削除する場合は、次の手順を実行します。クラスタのバイナリロギング機能を有効にします。詳細については、「バイナリロギングを有効にする」をご参照ください。loose_expire_logs_hours または binlog_expire_logs_seconds パラメーターを小さい値に設定し、バイナリログの有効期限が切れて自動的にパージされるまで待ちます。次に、バイナリロギング機能を無効にします。
バイナリログを取得して表示する
mysqlbinlog ツールを使用して、バイナリログを表示および解析できます。詳細については、「PolarDB for MySQL クラスタのバイナリログファイルをリモートで取得して解析する」をご参照ください。
FAQ
バイナリログファイルはどのくらいの期間保持されますか?
クラスタのバイナリロギング機能を有効にすると、バイナリログファイルはデフォルトで 3 日間保持されます。保持期間が 3 日を超えたバイナリログファイルは、自動的に削除されます。
説明2023年11月23日より前に購入された PolarDB for MySQL クラスタの場合、バイナリログファイルはデフォルトで 2 週間(14 日間)保持されます。
2024年1月17日より前に購入された PolarDB for MySQL クラスタの場合、バイナリログファイルはデフォルトで 1 週間(7 日間)保持されます。
クラスタのバイナリロギング機能を無効にすると、既存のバイナリログファイルは永続的に保持されます。
説明パラメーターを変更して、クラスタのバイナリログファイルの保持期間を変更できます。バイナリログファイルの保持期間の変更方法については、このトピックの「バイナリログの保持」セクションをご参照ください。
エラーメッセージ
Could not find first log file name in binary log index fileが報告されるのはなぜですか?エラーメッセージ
Could not find first log file name in binary log index fileは、バイナリログファイルが削除されたことを示しています。削除されたバイナリログファイルは復元できません。バイナリロギング機能を無効にすることはできますか?
はい、バイナリロギング機能を無効にすることができます。loose_polar_log_bin パラメーターを OFF に設定して、機能を無効にします。
説明バイナリロギング機能を無効にした後、既存のバイナリログファイルは永続的に保持されます。この機能を無効にする前に、バイナリログの保持期間を短縮することをお勧めします。こうすることで、不要になったバイナリログがクリアされます。
バイナリログが占有するストレージ容量を削減するにはどうすればよいですか?
loose_expire_logs_hours または binlog_expire_logs_seconds パラメーターを小さい値に設定して、バイナリログが占有するストレージ容量を削減できます。
バイナリロギング機能を有効にした後、クラスタのパフォーマンスはどのように影響を受けますか?
バイナリロギング機能を有効にした後、INSERT、UPDATE、DELETE などの書き込み操作のパフォーマンスのみが影響を受けます。SELECT 文のパフォーマンスは影響を受けません。ほとんどの場合、バイナリロギング機能のパフォーマンスへの影響は 10% 以内ですが、極端なワークロードでは 40% まで増加する可能性があります。
バイナリロギング機能が有効になると、クラスタは自動的に再起動します。再起動プロセスは完了するまでにどのくらい時間がかかりますか?
ほとんどの場合、再起動タスクは完了するまでに 5 分かかります。クラスタの再起動中は、サービスが約 40 秒間中断される場合があります。リカバリ時間は、データ量とテーブルの数によって異なります。この操作はオフピーク時に行い、アプリケーションがデータベースサービスに自動的に再接続できることを確認することをお勧めします。
バイナリログをリモートで取得して表示するにはどうすればよいですか?
詳細については、「PolarDB for MySQL クラスタのバイナリログファイルをリモートで取得して解析する」をご参照ください。
DMS を使用してインデックスを追加するなど、テーブルスキーマを変更するために ロックフリー DDL 操作を実行できないのはなぜですか?
テーブルをロックせずに DMS を使用してテーブルスキーマを変更するには、まずバイナリロギング機能を有効にする必要があります。デフォルトでは、この機能は無効になっています。 バイナリロギング機能を有効にしたくない場合は、オンライン DDL を使用してテーブルスキーマを変更できます。
バイナリロギング機能を有効にした後、Canal を使用して PolarDB for MySQL クラスタに加えられた変更をキャプチャできますか?
はい、バイナリロギング機能を有効にした後、Canal を使用して PolarDB for MySQL クラスタに加えられた変更をキャプチャできます。
SHOW BINARY LOGS文を実行してバイナリログファイルサイズをクエリすると、クラスタのパフォーマンスに影響しますか?いいえ。
SHOW BINARY LOGS文は、クラスタのパフォーマンスへの影響が最小限のデータベース管理操作です。この文を実行した後にデータベースにデータが書き込まれることはありません。したがって、INSERT、UPDATE、DELETE 文などのデータ書き込み操作のように、データベースの読み取りおよび書き込みパフォーマンスは影響を受けません。PolarDB for MySQL でバイナリログファイルの最終書き込み時間を確認するにはどうすればよいですか?
show full binary logs文を実行して、すべてのバイナリログファイルの名前、サイズ、最終書き込み時間を表示します。説明この機能は、次のエンジンバージョンを実行する PolarDB for MySQL クラスタでサポートされています。
リビジョンバージョンが 8.0.2.2.0 以降の MySQL 8.0.2。
リビジョンバージョンが 8.0.1.1.14 以降の MySQL 8.0.1。
リビジョンバージョンが 5.7.1.0.27 以降の MySQL 5.7。
リビジョンバージョンが 5.6.1.0.38 以降の MySQL 5.6。
特定の時点で生成された PolarDB for MySQL クラスタのバイナリログを確認するにはどうすればよいですか?
以前の時点にデータを復元してから、バイナリログを解析してコンテンツを表示します。詳細については、「データベースとテーブルの復元:以前の時点へのデータの復元」をご参照ください。