このトピックでは、PolarDB のコールドデータアーカイブに関するよくある質問に回答します。
"[Data Lifecycle Management] DLM storage engine is not support. The value of polar_dlm_storage_mode is OFF." エラーの対処方法
PolarDBコンソールでコールドデータアーカイブ機能を有効にする必要があります。 詳細については、「コールドデータアーカイブを有効にする」をご参照ください。
データアーカイブ (コールドデータ) メニューが表示されない
コールドデータアーカイブ機能を有効にした後、短い遅延が発生することがあります。数分後にページを更新すると、データアーカイブ (コールドデータ) メニューが表示されます。
コールドデータでサポートされるファイル形式
サポートされる形式は、CSVおよび ORC です。
アーカイブの成功を確認する方法
アーカイブプロセスが完了した後、次のいずれかの方法を使用してアーカイブのステータスを確認できます。
-
SHOW CREATE TABLE table_name;コマンドを実行してテーブル定義を表示し、アーカイブのステータスを確認します。-
通常のテーブルの場合、出力に
STORAGE OSSまたはCONNECTION='default_oss_server'が含まれていれば、操作は成功です。 -
パーティションテーブルの場合、パーティション定義に
ENGINE=CSV/ORCが表示されていれば、操作は成功です。
-
-
コンソールでステータスを確認します。
PolarDB コンソールにログインします。対象クラスターの左側のナビゲーションウィンドウで、を選択します。コールドデータのアーカイブ (コールドデータ) タブで、リストにテーブル名が表示されている場合、データは OSS にアーカイブされています。
"[Data Lifecycle Management] errmsg: Not allowed to archive the archived table." エラーの対処方法
このエラーは、テーブルがすでにアーカイブされているために発生します。指定したテーブルがアーカイブ済みテーブルでないことを確認してください。
アーカイブされたデータのサイズを確認する方法
アーカイブされたコールドデータのサイズは、コンソールで確認するか、クラスター上でアーカイブ済みテーブルに直接クエリを実行して確認できます。詳細については、「コールドデータアーカイブ情報の表示」をご参照ください。
アーカイブされたコールドデータをクエリする方法
通常のテーブルおよびパーティションテーブルからデータをアーカイブした後、次の方法を使用してアーカイブされたデータをクエリできます。
-
通常のテーブルの場合、ホットデータと同じようにアーカイブされたデータをクエリできます。アクセス方法の変更は不要です。
-
パーティションテーブルの場合、データをクエリする方法については、「ハイブリッドパーティションのクエリ」をご参照ください。
アーカイブされたコールドデータを変更する方法
OSS にアーカイブされた CSV または ORC 形式のコールドデータを直接変更することはできません。ALTER TABLE table_name ENGINE=InnoDB 構文を使用して、テーブルデータを OSS から PolarStore にインポートできます。データを変更した後、ALTER TABLE table_name ENGINE = CSV STORAGE OSS; スクリプトを使用して、テーブルデータを OSS にアーカイブします。詳細については、「OSSからPolarStoreへのデータのインポート」をご参照ください。
アーカイブされたコールドデータを削除する方法
アーカイブ済みテーブルを削除するには、特権アカウントを使用してください。
まず、DROP TABLE を使用してアーカイブ済みテーブルを削除します。次に、CALL dbms_oss.delete_table_file('database_name', 'table_name'); を使用してアーカイブされたコールドデータを削除します。
自動データアーカイブはどのようにトリガーされますか
自動データアーカイブはイベントによってトリガーされます。詳細については、「ホットデータとコールドデータの管理」をご参照ください。
自動データアーカイブのログ
自動的にアーカイブされたデータのログは、mysql.dlm_progress テーブルに記録されます。mysql データベースの権限を持つアカウントを使用して、これらのログを表示できます。詳細については、「mysql.dlm_progress テーブル」をご参照ください。
自動アーカイブポリシーを確認する方法
データを自動的にアーカイブするためのポリシーは、mysql.dlm_policies テーブルに記録されます。mysql データベースの権限を持つアカウントを使用して、これらのポリシーを表示できます。詳細については、「mysql.dlm_policies テーブル」をご参照ください。
カスタムOSSバケットへのデータのアーカイブ
現在、独自の OSS ストレージエンジンにデータをアーカイブすることはできません。select into ossoutfile を使用して、データを OSS ストレージエンジンにエクスポートできます。詳細については、「ローカルテーブルからOSSストレージエンジンへのデータのシリアルエクスポート」をご参照ください。
データアーカイブ後の元のテーブル
いいえ。 データがアーカイブされると、PolarDB はテーブルのメタデータのみを保存します。 実際のデータは OSS に保存され、クラスターのストレージ容量を消費しなくなります。
OSS error: error message: The OSS Access Key Id you provided does not exist in our records. エラーの対処方法
OSS error: で始まるエラーメッセージは、OSS によって返されます。原因の詳細については、「OSS エラーコード」をご参照ください。これらのエラーの原因と解決策は次のとおりです。
-
原因:一時的なアクセス認証情報の有効期限が切れています。
-
解決策:AccessKey ペアを使用して、アプリケーションサーバーから新しい一時的なアクセス認証情報をリクエストします。詳細については、「一時的なアクセス認証情報の取得」をご参照ください。
コンソールでアーカイブされた空のテーブル
これは想定内の動作です。空のテーブルをアーカイブすると、PolarDB は OSS に対応するファイルを作成しません。そのため、コンソールにはテーブルに関する情報が表示されません。
アーカイブ済みテーブルの名前変更
OSS にアーカイブされたテーブルの名前を変更すると、OSS 上のファイル情報が変更されます。この操作は約 100 MB/s で実行されるため、データ量に基づいて合計時間を見積もることができます。
ERROR 8185: "Change partition not support..." エラー
パーティションテーブルの個々のパーティションを OSS にアーカイブする機能は、現在ベータ版です。有効にするには、クォータセンター にアクセスしてください。クォータID polardb_mysql_hybrid_partition を使用してクォータ名を検索し、[操作] 列の 申請 をクリックします。
アーカイブ後のデータサイズの変化
アーカイブ後のデータサイズは、データ形式の変換により変化する可能性があります。サイズの増減は、元のストレージエンジンによって異なります。
-
元のテーブルが InnoDB ストレージエンジンを使用している場合、アーカイブされたデータサイズは減少する可能性があります。
-
元のテーブルが X-Engine を使用している場合、アーカイブされたデータサイズは増加する可能性があります。
CSV 形式でアーカイブされたデータは、一般的に ORC 形式でアーカイブされたデータよりも多くの領域を占有します。
OSSバケット内のアーカイブされたデータの表示
PolarDB は、お客様自身の Alibaba Cloud アカウント内のバケットではなく、システム管理の OSS バケットにコールドデータを保存します。そのため、ファイルは OSS コンソールでは表示できず、アーカイブデータの表示と管理には PolarDB コンソールを使用する必要があります。
"Statement violates GTID consistency" エラー
このエラーは、CSV または ORC 形式のアーカイブ済みテーブルがトランザクションをサポートしていないために発生します。グローバルトランザクション識別子 (GTID) では、トランザクション内のすべてのテーブルがトランザクションに対応している必要があります。ストアドプロシージャが書き込み操作を実行しない場合でも、それを呼び出すと、トランザクションに非対応のアーカイブ済みテーブルと互換性のないトランザクションコンテキストが作成されます。これを解決するには、テーブルのストレージエンジンを X-Engine に変更します。X-Engine はトランザクションをサポートし、ストレージコストも削減できます。
"The last packet successfully received" タイムアウトエラー
このエラーは、データ復元プロセス中にクライアント接続がタイムアウトしたことを示します。これは大規模なデータセットの場合に発生することがあります。これを解決するには、お使いの PolarDB for MySQL クラスターの最小 PCU 仕様を引き上げ、操作を再試行してください。
PolarDB for MySQL 旧バージョンでのコールドデータアーカイブの有効化
お使いの PolarDB for MySQL クラスターを、この機能をサポートするバージョンにアップグレードする必要があります。詳細については、「バージョン管理」をご参照ください。
PolarDB for MySQL のアーカイブがテーブルサイズに与える影響
PolarDB for MySQL のテーブルのサイズは、データが OSS にアーカイブされると変化します。この変化の度合いは、いくつかの要因によって決まります。
-
インデックスのない InnoDB テーブルの場合、アーカイブされたデータは圧縮され、通常は元のテーブルよりも小さくなります。
-
インデックスのある InnoDB テーブルの場合、アーカイブ中にインデックスが削除されるため、最終的なデータサイズがさらに削減されます。
-
X-Engine テーブルの場合、アーカイブされたデータサイズは元のテーブルよりも大きくなる可能性があります。これは、X-Engine がすでにローカルで高い圧縮率を実現しており、アーカイブ時に使用される圧縮よりも効率的である可能性があるためです。
-
PolarDB は、CSV および ORC 形式でのデータのアーカイブをサポートしています。ORC 形式はより高い圧縮率を実現するため、CSV 形式と比較して OSS 内のファイルが小さくなります。詳細については、「CSVまたはORC形式でのデータのアーカイブ」をご参照ください。