このトピックでは、PolarDB のコールドデータアーカイブ機能に関するよくある質問への回答を提供します。
"[データライフサイクル管理] DLM ストレージエンジンはサポートされていません。polar_dlm_storage_mode の値は OFF です。" というエラーメッセージが表示された場合はどうすればよいですか?
PolarDBコンソール でコールドデータアーカイブ機能を有効にする必要があります。詳細については、「コールドデータアーカイブを有効にする」をご参照ください。
PolarDB コンソールのナビゲーションバーに [コールドデータアーカイブ] メニューが表示されないのはなぜですか?
コールドデータアーカイブ機能を有効にしてから数分後にページを更新すると、[コールドデータアーカイブ] メニューが表示されます。
コールドデータファイルはどのような形式でアーカイブされますか?
コールドデータは CSV または ORC 形式でアーカイブされます。
テーブルまたはパーティションがアーカイブされているかどうかを確認するにはどうすればよいですか?
次のいずれかの方法を使用して、テーブルまたはパーティションがアーカイブされているかどうかを確認できます。
SHOW CREATE TABLE table_name;文を実行して、テーブルまたはパーティションがアーカイブされているかどうかを確認します。通常のテーブルの場合、STORAGE OSS または
CONNECTION='default_oss_server'が表示されている場合、データはアーカイブされています。パーティションテーブルの場合、テーブル内のパーティションに ENGINE=CSV/ORC が表示されている場合、データはアーカイブされています。
コンソールで、データがアーカイブされているかどうかを確認します。
PolarDB コンソール にログオンします。管理するクラスタを見つけ、クラスタの ID をクリックします。左側のナビゲーションウィンドウで、 > [コールドデータアーカイブ] を選択します。テーブル名が存在するかどうかを確認します。テーブル名が存在する場合、データは OSS にアーカイブされています。
データをアーカイブするための文を実行した後、 "[データライフサイクル管理] errmsg: アーカイブ済みテーブルのアーカイブは許可されていません。" というエラーメッセージが返されます。なぜですか?
既にアーカイブされているテーブルはアーカイブできません。文中のテーブルがアーカイブされていないことを確認してから、もう一度お試しください。
アーカイブされたコールドデータをダウンロードするにはどうすればよいですか?
アーカイブされたコールドデータを直接ダウンロードすることはできません。アーカイブされたコールドデータをダウンロードするには、クォータセンター にアクセスします。polardb_mysql_download_oss クォータ ID を入力して、クォータ名を見つけます。[アクション] 列で、[適用] をクリックします。
アーカイブされたコールドデータのサイズを確認するにはどうすればよいですか?
アーカイブされたコールドデータのサイズは、PolarDB コンソールで表示するか、クラスタ上のコールドデータテーブルを直接クエリすることで表示できます。詳細については、「OSS にアーカイブされたコールドデータに関する情報を表示する」をご参照ください。
アーカイブされたコールドデータをクエリするにはどうすればよいですか?
通常のテーブルとパーティションテーブルのコールドデータをアーカイブした後、次のいずれかの方法を使用して、アーカイブされたコールドデータをクエリできます。
通常のテーブル: ホットデータをクエリする場合と同じ方法を使用します。アクセスモードを変更する必要はありません。
パーティションテーブル: アーカイブされたコールドデータをクエリする方法の詳細については、「ハイブリッドパーティションテーブルのデータをクエリする」をご参照ください。
アーカイブされたコールドデータを変更するにはどうすればよいですか?
CSV または ORC 形式で OSS にアーカイブされたコールドデータを直接変更することはできません。アーカイブされたコールドデータを変更するには、ALTER TABLE table_name ENGINE=InnoDB 文を実行して、テーブルデータを OSS から PolarStore にインポートし、PolarStore 内のデータを変更します。データを変更した後、ALTER TABLE t ENGINE = CSV STORAGE OSS; 文を実行して、変更されたテーブルデータを OSS にアーカイブします。詳細については、「OSS テーブルから PolarStore にデータをインポートする」をご参照ください。
アーカイブされたコールドデータを削除するにはどうすればよいですか?
特権アカウントを使用して、アーカイブされたコールドデータを削除します。
DROP TABLE 文を実行してアーカイブ済みテーブルを削除し、次に CALL dbms_oss.delete_table_file('database_name', 'table_name'); を実行してアーカイブされたコールドデータを削除します。
自動データアーカイブはどのようにトリガーされますか?
自動データアーカイブはイベントによってトリガーされます。詳細については、「データライフサイクル管理 (DLM)」をご参照ください。
自動的にアーカイブされたデータのログは利用できますか?
自動的にアーカイブされたデータのログは、mysql.dlm_progress テーブルに保存されます。MySQL データベースに対する権限を持つアカウントを使用して、mysql.dlm_progress テーブルを表示できます。詳細については、「mysql.dlm_progress テーブル」をご参照ください。
自動データアーカイブの現在のポリシーを表示するにはどうすればよいですか?
自動データアーカイブのポリシーは、mysql.dlm_policies テーブルに保存されます。MySQL データベースに対する権限を持つアカウントを使用して、mysql.dlm_policies テーブルを表示できます。詳細については、「mysql.dlm_policies テーブル」をご参照ください。
独自の OSS エンジンにデータをアーカイブするにはどうすればよいですか?
独自の OSS エンジンにデータをアーカイブすることはできません。select into ossoutfile 文を実行して、データを OSS エンジンにエクスポートできます。詳細については、「ローカルテーブルを OSS にシリアルエクスポートする」をご参照ください。
コールドデータのアーカイブ後も、元のテーブルはデータベースに存在します。ストレージ容量を節約するために、テーブルを手動で削除する必要がありますか?
コールドデータをアーカイブした後、PolarDB はテーブルのメタデータのみを保存します。実際のデータは OSS に保存され、クラスタのストレージ容量は消費しません。
"OSS エラー: エラーメッセージ: 指定された OSS Access Key ID はレコードに存在しません" というエラーメッセージが表示された場合はどうすればよいですか?
OSS エラー: で始まるエラーメッセージは、OSS で発生したエラーを示します。OSS エラーコード を参照して、考えられる原因を特定できます。上記のエラーメッセージの原因と解決策を以下に示します。
原因: 一時アクセス認証情報の有効期限が切れると、AccessKey ペアが無効になります。
解決策: AccessKey ペアを使用して、アプリサーバーから新しい一時アクセス認証情報を申請します。詳細については、「STS によって提供される一時認証情報を使用して OSS にアクセスする」をご参照ください。
コールドデータをアーカイブした後、コンソールにアーカイブ済みテーブルの情報が表示されないのはなぜですか?
空のテーブルの場合、テーブルのアーカイブ後に OSS に CSV ファイルが生成されないため、コンソールにテーブルの情報は表示されません。
OSS にアーカイブされているテーブルの名前を変更するにはどれくらいの時間がかかりますか?
OSS にアーカイブされているテーブルの名前を変更すると、OSS 内のファイル情報は 約 100 Mbit/s の速度で変更されます。データの合計サイズに基づいて期間を推定できます。
"ERROR 8185 (HY000): Change partition not support archive to engine CSV" というエラーメッセージが表示された場合はどうすればよいですか?
パーティションテーブルのコールドデータアーカイブ機能はカナリアリリースされています。この機能を使用するには、クォータセンター にアクセスします。polardb_mysql_hybrid_partition クォータ ID を入力して、クォータ名を見つけます。[アクション] 列で、[適用] をクリックします。
アーカイブされたコールドデータのサイズは、元のテーブルよりも大きいですか、それとも小さいですか?
アーカイブされたコールドデータは元のデータとは形式が異なるため、占有スペースが変わります。次のような変更が発生する可能性があります。
元のテーブルが InnoDB エンジンを使用している場合、アーカイブされたコールドデータのサイズは小さくなる可能性があります。
元のテーブルが X-Engine を使用している場合、アーカイブされたコールドデータのサイズは大きくなる可能性があります。
CSV 形式のアーカイブされたコールドデータは、ORC 形式のアーカイブされたコールドデータよりもサイズが大きくなる可能性があります。
Alibaba Cloud アカウントの OSS でアーカイブされたコールドデータとオブジェクトを表示できないのはなぜですか?
PolarDB コールドデータは、独自の OSS ではなく、デフォルトの OSS に保存されます。そのため、独自の OSS でアーカイブされたコールドデータを表示することはできません。アーカイブされたコールドデータは、PolarDB コンソールでのみ表示できます。
ストアドプロシージャにアーカイブ済みテーブルが含まれている場合、"Statement violates GTID consistency: Updates to non-transactional tables can only be done in either autocommitted statements or single-statement transactions, and never in the same statement as updates to transactional tables." というエラーメッセージが表示されるのはなぜですか?
CSV または ORC 形式のアーカイブ済みテーブルはトランザクションをサポートしていません。ストアドプロシージャにアーカイブ済みテーブルが含まれている場合、実際の書き込み操作が実行されていない場合でも、グローバルトランザクション ID (GTID) の不整合が発生する可能性があります。この問題を解決するには、ストレージエンジンを X-Engine に変更してストレージコストを削減し、すべてのテーブルがトランザクションをサポートするようにします。
OSS からクラスタにデータを復元するときに、「サーバーから最後に正常に受信したパケットは 15,287 ミリ秒前です。サーバーに最後に正常に送信されたパケットは 15,287 ミリ秒前です。」というエラーメッセージが表示されるのはなぜですか?
このメッセージは、復元プロセスがクライアントのタイムアウトしきい値を超えたために表示されます。この問題を解決するには、PolarDB for MySQL クラスタの最小 PolarDB キャパシティユニット (PCU) 仕様を上げてから、復元タスクを実行します。
PolarDB for MySQL クラスタのバージョンがコールドデータアーカイブ機能に必要なバージョンよりも古い場合はどうすればよいですか?
PolarDB for MySQL クラスタを最新バージョンにアップグレードします。詳細については、「リビジョンバージョン管理」をご参照ください。
前提条件PolarDB for MySQL クラスタ内のテーブルのサイズは、テーブルが OSS にアーカイブされた後にどのように変化しますか?
PolarDB for MySQL クラスタ内のテーブルを OSS にアーカイブすると、テーブルのサイズが変わる場合があります。
インデックスのない InnoDB テーブルの場合、アーカイブプロセス中にデータが圧縮されます。そのため、OSS 内のアーカイブ済みテーブルのサイズは、元の InnoDB テーブルのサイズよりも小さくなります。
インデックスを持つ InnoDB テーブルの場合、アーカイブプロセス中にインデックスが削除されます。そのため、OSS 内のアーカイブ済みテーブルのサイズは、元の InnoDB テーブルのサイズと比べて大幅に小さくなります。
X-Engine テーブルの場合、OSS によって実現される圧縮効率は X-Engine によって既に適用されている高い圧縮率と一致しない可能性があるため、OSS 内のアーカイブ済みテーブルのサイズは元の X-Engine テーブルのサイズよりも大きくなる場合があります。
PolarDB for MySQL は、CSV または ORC 形式でのデータのアーカイブをサポートしています。ORC ファイルは CSV ファイルよりも高い圧縮率を提供します。そのため、CSV 形式のアーカイブ済みデータのサイズは比較的大きくなる可能性があります。詳細については、「CSV 形式でコールドデータを手動でアーカイブする」をご参照ください。