PolarDB for MySQLは、バイナリログよりも高度なリドゥログを使用します。バイナリログはデフォルトで無効になっています。Data Transmission Service (DTS) を介したデータレプリケーション、ElasticsearchまたはAnalyticDBへの変更ストリーミング、クラスター間のデータ同期など、MySQLエコシステムとの互換性が必要な場合に有効にしてください。
ユースケース
-
データレプリケーション: PolarDB for MySQLクラスターからApsaraDB RDS for MySQLインスタンスへ、ApsaraDB RDS for MySQLインスタンスからPolarDB for MySQLクラスターへ、またはPolarDB for MySQLクラスター間でデータを同期します。
-
エコシステム統合: 分析と検索のためにElasticsearchまたはAnalyticDBに接続します。
制限事項
2019年4月5日より前に作成されたクラスターは、バイナリログを有効にする前に最新のマイナーバージョンに更新する必要があります。詳細については、「リビジョンバージョン管理」をご参照ください。この日付以降に作成されたクラスターは、バイナリログを直接サポートします。
課金
バイナリログはクラスターのストレージ容量を消費し、クラスターのストレージ料金で課金されます。
| ストレージ課金方法 | 課金動作 |
|---|---|
| サブスクリプション | 合計ストレージが購入した容量内に収まっている限り、追加料金は発生しません。 |
| 従量課金 | バイナリログデータが実際に占有するストレージに基づいて課金されます。 |
パフォーマンスへの影響
バイナリログは書き込み操作 (INSERT、UPDATE、DELETE) のみに影響し、読み取りパフォーマンスには影響しません。通常、影響は10%以内ですが、極端なワークロードでは40%に達する可能性があります。
大規模なトランザクションコミットは、他のトランザクションをブロックし、再起動または構成変更の期間を延長する可能性があります。
バイナリログの有効化
クラスター作成時の有効化
クラスターの作成時に、[バイナリログの有効化] セクションで [有効化] を選択します。 詳細については、「カスタム購入」または「サブスクリプションクラスターの購入」をご参照ください。
既存クラスターでの有効化
バイナリログを有効にすると、自動クラスター再起動がトリガーされ、通常5~15分かかり、約40秒のサービス中断が発生します。復旧時間はデータ量とテーブル数によって異なります。この操作はオフピーク時間中に実行し、アプリケーションが自動再接続をサポートしていることを確認してください。
方法1: バイナリログページの使用
-
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。左上隅で、クラスターのリージョンを選択します。クラスターリストで目的のクラスターを見つけ、その ID をクリックして [基本情報] ページに移動します。
-
左側のナビゲーションウィンドウで、[バイナリログ] をクリックします。
-
[今すぐ有効化] をクリックします。
-
[バイナリログの有効化] ダイアログボックスで、有効モードパラメーターを[今すぐ] または [スケジュール済み] に設定します。スケジュール済みを選択した場合は、バイナリログを有効にするタイミングを指定します。
-
[OK] をクリックします。
方法2: loose_polar_log_bin パラメーターを設定する
-
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、[Clusters] をクリックします。左上隅でクラスターのリージョンを選択します。クラスターリストで目的のクラスターを見つけ、その ID をクリックして [Basic Information] ページに移動します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
loose_polar_log_bin パラメーターを見つけ、その値を変更します。詳細については、クラスターおよびノードパラメーターの設定 の「パラメーターの変更」セクションをご参照ください。
MySQLバージョン パラメーター値 MySQL 5.6 ON_WITH_GTID MySQL 5.7または8.0 ON
バイナリログの無効化
方法1: バイナリログページの使用
-
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。左上隅で、クラスターのリージョンを選択します。クラスターリストで目的のクラスターを見つけ、その ID をクリックして [基本情報] ページに移動します。
-
左側のナビゲーションウィンドウで、[バイナリログ] をクリックします。
-
[バイナリログの無効化] をクリックします。
-
[バイナリログの無効化] ダイアログボックスで、有効モード パラメーターを [今すぐ] または [予約] に設定します。 「予約」を選択した場合は、バイナリログを無効化するタイミングを指定します。 オプションで、[ローカルバイナリログのクリア] を選択します。
-
[OK] をクリックします。
方法 2: loose_polar_log_bin パラメーターの設定
-
PolarDB コンソールにログインします。PolarDB コンソール の左側のナビゲーションウィンドウで、[クラスター] をクリックします。左上隅で、クラスターのリージョンを選択します。クラスターリストで該当するクラスターを見つけ、その ID をクリックして、[基本情報] ページに移動します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
loose_polar_log_bin パラメーターを見つけ、その値を変更します。詳細については、「クラスターおよびノードのパラメーターを設定する」をご参照ください。
MySQLバージョン パラメーター値 MySQL 5.6 OFF_WITH_GTID MySQL 5.7または8.0 OFF
バイナリログを無効にした後も、既存のバイナリログファイルは永続的に保持されます。ストレージ容量を解放するには、機能を無効にする前に保持期間を短縮してください。古いログが自動的にパージされるのを待ってから、バイナリログを無効にしてください。
バイナリログの保持
保持ポリシー
| 条件 | デフォルトの保持期間 |
|---|---|
| バイナリログが有効 | 3日間 |
| バイナリログが無効 | 既存ファイルは永続的に保持されます |
保持期間が経過すると、バイナリログファイルは自動的に削除されます。
-
2023年11月23日より前に購入されたPolarDB for MySQLクラスターの場合、バイナリログファイルはデフォルトで2週間 (14日間) 保持されます。
-
2024年1月17日より前に購入されたPolarDB for MySQLクラスターの場合、バイナリログファイルはデフォルトで1週間 (7日間) 保持されます。
保持期間の変更
-
保持期間を変更しても、接続が中断されたり、クラスターの再起動が必要になったりすることはありません。
-
大量のバイナリログ (10 TBなど) をパージする必要がある場合、一時的な書き込み操作の例外が発生する可能性があります。この場合、オフピーク時間中に保持期間を変更してください。あるいは、一度に一部のログのみがクリアされるように、期間を段階的に短縮してください。
-
削除されたバイナリログファイルは復元できません。
MySQLバージョンに基づいて、次のいずれかのパラメーターを変更します。
| MySQLバージョン | パラメーター | 有効な値 | 単位 | デフォルト |
|---|---|---|---|---|
| 5.6 | loose_expire_logs_hours | 0-2376 | 時間 | 72 |
| 5.7または8.0 | binlog_expire_logs_seconds | 0-4294967295 | 秒 | 259200 (3日間) |
値 0 は、バイナリログファイルが自動的に削除されないことを意味します。
パラメーターの変更方法については、「クラスターとノードのパラメーター設定」をご参照ください。
即時パージのトリガー
保持パラメーターを変更しても、履歴ログはすぐにクリアされません。パージをトリガーするには、次のいずれかの方法を使用します。
-
アクティブなバイナリログファイルが、
max_binlog_sizeで設定されたサイズに達するまで待機します。ファイルが回転すると、期限切れのファイルはすべて自動的に削除されます。 -
特権アカウントで flush binary logs を実行します。
-
クラスターを再起動します。
バイナリログが無効な場合のバイナリログの削除
バイナリログが無効になっており、蓄積されたログファイルを削除したい場合は、次の手順を実行します。
-
バイナリログを再度有効化します。「バイナリログの有効化」をご参照ください。
-
loose_expire_logs_hours または binlog_expire_logs_seconds をより小さい値に設定します。
-
期限切れのログが自動的にパージされるのを待ちます。
-
バイナリログを再度無効化します。
バイナリログの表示と解析
mysqlbinlog ツールを使用して、バイナリログをリモートで取得および解析します。 詳細については、「PolarDB for MySQL クラスターのバイナリログファイルをリモートで取得および解析する」をご参照ください。
各バイナリログファイルの最終書き込み時刻を確認するには、次を実行します。
show full binary logs;
これにより、各バイナリログファイルのファイル名、サイズ、および最終書き込み時刻が返されます。
show full binary logs には、以下の最小リビジョンバージョンのいずれかが必要です。
-
MySQL 8.0.2: リビジョン8.0.2.2.0以降
-
MySQL 8.0.1: リビジョン8.0.1.1.14以降
-
MySQL 5.7: リビジョン5.7.1.0.27以降
-
MySQL 5.6: リビジョン5.6.1.0.38以降
注意事項
-
プライマリエンドポイントの使用: DTS またはその他のサービスを介してバイナリログを消費する場合、クラスターの プライマリエンドポイント に接続します。 このエンドポイントは、バイナリログを生成するプライマリノードを常に指します。 プライマリエンドポイントを見つけるには、「クラスターのエンドポイントの管理」の「エンドポイントとポートの表示」セクションをご参照ください。
-
グローバルレベルとセッションレベルのログ記録: loose_polar_log_bin パラメーターは、グローバルレベルでバイナリログ記録を制御します。セッションレベルでの制御には、sql_log_bin パラメーターを使用します(デフォルトでは無効)。sql_log_bin を有効にするには、クォータセンター に移動し、「[polardb SQL_log_bin Parameter Permissions]」クォータを見つけ、[Actions] 列の [Apply] をクリックします。
-
マイグレーション中の自動有効化: DTSは、ApsaraDB RDSインスタンスからPolarDBクラスターにデータを移行する際に、バイナリログを自動的に有効にします。
よくある質問
Could not find first log file name in binary log index file はどのような意味ですか?
バイナリログファイルは削除されています。削除されたファイルは復元できません。
Canalを使用して変更データキャプチャを行うことはできますか?
はい。バイナリログを有効にした後、CanalはPolarDB for MySQLクラスターからの変更をキャプチャできます。
DMSでロックフリーDDL操作を実行できないのはなぜですか?
Data Management Service (DMS) のロックフリーDDL操作には、バイナリログが有効になっている必要があります。有効にしたくない場合は、代わりにオンラインDDLを使用してください。
SHOW BINARY LOGS コマンドはクラスターのパフォーマンスに影響しますか?
いいえ。これはデータを書き込まないメタデータクエリです。読み取りまたは書き込みパフォーマンスに測定可能な影響はありません。
特定の時点に生成されたバイナリログを表示するにはどうすればよいですか?
その時点にデータを復元し、復元されたインスタンスからバイナリログを解析します。詳細については、「データベースとテーブルの復元: 以前の時点へのデータ復元」をご参照ください。