データのインポートとエクスポートに関するベスト プラクティス

このページでは、Cloud SQL を使用してデータをインポートおよびエクスポートする際のベスト プラクティスについて説明します。Cloud SQL にデータをインポートする手順については、データのインポートをご覧ください。データが Cloud SQL にある場合も、お客様が管理しているインスタンスにある場合も、データをエクスポートするための手順については、データのエクスポートをご覧ください。

インポートとエクスポートのベスト プラクティス

データをインポートおよびエクスポートする際に考慮すべきベスト プラクティスは次のとおりです。

Cloud Storage リクエスト元による支払いバケットを使用しない

Cloud SQL からのインポートとエクスポートに、リクエスト元による支払いが有効になっている Cloud Storage バケットは使用できません。

SQL ダンプファイルの作成時に正しいフラグを使用する

コスト削減のためデータを圧縮する

Cloud SQL では、圧縮ファイルと非圧縮ファイルの両方のインポートとエクスポートがサポートされています。特に大きいインスタンスをエクスポートするときは、圧縮すると Cloud Storage のストレージ スペースを大幅に節約でき、ストレージ コストの削減にもなります。

BAK ファイルをエクスポートする場合は、.gz ファイル拡張子を使用してデータを圧縮します。ファイル拡張子 .gz のファイルは、インポートすると自動的に解凍されます。

長時間にわたるインポートおよびエクスポート プロセスの削減

インポート機能(Cloud Storage バケット経由)を使用した Cloud SQL へのインポートとエクスポートは、データベースのサイズによっては、完了するまでに時間がかかる場合があります。その結果、次の影響があります。

  • 長時間実行されている Cloud SQL インスタンス オペレーションを停止することはできません。
  • 各インスタンスに対して実行できるインポートまたはエクスポートのオペレーションは、一度に 1 つのみです。

Cloud SQL のインポートまたはエクスポート機能をバッチサイズのより小さいデータで使用して、各オペレーションの完了に要する時間を短縮できます。

インポートしたデータベースを確認する

インポートが完了したら、データベースに接続し、該当するデータベース コマンドを実行して内容が正しいことを確認します。たとえば接続して、データベース、テーブル、特定のエントリを一覧表示します。

既知の制限事項

Cloud Storage は、最大 5 テラバイトの単一オブジェクト サイズをサポートしています。5 TB を超えるデータベースがある場合は、Cloud Storage へのエクスポート オペレーションは失敗します。その場合は、エクスポート ファイルを小さなセグメントに分割する必要があります。

トラブルシューティング

表内のリンクをクリックすると、詳細が表示されます。

この問題については... 次のような問題が考えられます... 次のことを試します...
インポートに時間がかかりすぎる。 アクティブな接続が多すぎると、インポート オペレーションが妨げられる可能性があります。 未使用の接続を閉じるか、インポート オペレーションを開始する前に Cloud SQL インスタンスを再起動してください。
インポートに失敗した。 エクスポートされたファイルに、まだ存在しないデータベース ユーザーが含まれている可能性があります。 インポートを再試行する前に、失敗したデータベースをクリーンアップします。インポートを行う前に、データベース ユーザーを作成します。

インポートに時間がかかりすぎる

インポートに時間がかかりすぎるため、他のオペレーションをブロックしています。

次のような問題が考えられます

アクティブな接続が多すぎると、インポート オペレーションが妨げられる可能性があります。CPU とメモリが接続のために消費されると、使用可能なリソースが制限されます。

次の方法をお試しください

未使用のオペレーションを終了します。使用可能なリソースが十分にあるかどうか、CPU とメモリ使用量を確認します。インポート オペレーションに使用するリソースを最大限確保するために、オペレーションを開始する前にインスタンスを再起動することをおすすめします。再起動:

  • すべての接続を終了します。
  • リソースを消費している可能性のあるタスクをすべて終了します。


インポートに失敗した

エクスポートされた SQL ダンプファイルで参照されているユーザーが存在しない場合、インポートは失敗します。

次のような問題が考えられます

SQL ダンプをインポートする前に、オブジェクトを所有しているか、またはダンプされたデータベース内のオブジェクトに対する権限が付与されているデータベース ユーザーが存在する必要があります。 そうでない場合、復元で、元の所有権や権限でのオブジェクトの再作成に失敗します。

次の方法をお試しください

インポートを再試行する前に、失敗したデータベースをクリーンアップします。SQL ダンプをインポートする前に、データベース ユーザーを作成します。


表内のリンクをクリックすると、詳細が表示されます。

この問題については... 次のような問題が考えられます... 次のことを試します...
オペレーションのステータスを確認できない。 ユーザー インターフェースには成功または失敗のみが表示されます。 詳細については、これらのデータベース コマンドをご覧ください。
エクスポート オペレーション中に接続が切断しました。 クエリで最初の 7 分以内にデータを生成する必要があります。 クエリを手動でテストします。詳細については、こちらをご覧ください。
エクスポート中に不明なエラーが発生した。 帯域幅の問題である可能性があります。 インスタンスと Cloud Storage バケットの両方が同じリージョンに存在することを確認します
エクスポートを自動化する場合。 Cloud SQL には、エクスポートを自動化する方法がありません。 この機能を実行する独自のパイプラインを構築します。詳細については、こちらをご覧ください。

オペレーションのステータスを確認できない

進行中のオペレーションのステータスが表示されません。

次のような問題が考えられます

Google Cloud Console では、完了時に成功または失敗のみが表示され、警告は返されません。

次の方法をお試しください

データベースに接続し、SHOW WARNINGS を実行します。


エクスポート オペレーション中に接続が切断された

エクスポート オペレーション中に接続が切断しました。

次のような問題が考えられます

エクスポートが開始されてから最初の 7 分以内に、エクスポートで実行されているクエリでデータが生成されないため、Cloud Storage への接続がタイムアウトする可能性があります。

次の方法をお試しください

次のコマンドを使用して任意のクライアントから接続し、クエリの出力を標準出力に送信して、クエリを手動でテストします。

COPY (INSERT_YOUR_QUERY_HERE) TO STDOUT WITH ( FORMAT csv, DELIMITER ',', ENCODING 'UTF8', QUOTE '"', ESCAPE '"' )

これは、エクスポートが開始されるとすぐにクライアントからデータの送信が開始されるためです。データが送信されていない接続を維持すると、最終的に接続が切断されてエクスポートが失敗し、操作が不確定な状態になります。また、gcloud からのエラー メッセージは次のように表示されます。

operation is taking longer than expected


エクスポート中に不明なエラーが発生した

データベースを Cloud Storage バケットにエクスポートしようとすると、エラー メッセージ Unknown error が表示されます。

次のような問題が考えられます

帯域幅の問題が原因で転送が失敗する可能性があります。

次の方法をお試しください

Cloud SQL インスタンスが Cloud Storage バケットとは異なるリージョンに存在している可能性があります。ある大陸から別の大陸へのデータの読み取りと書き込みではネットワークの使用量が多く、このような断続的な問題を引き起こす可能性があります。インスタンスとバケットのリージョンを確認します。


エクスポートを自動化する

エクスポートを自動化する場合。

次のような問題が考えられます

Cloud SQL には、エクスポートを自動化する方法がありません。

次の方法をお試しください

Google Cloud プロダクト(Cloud Scheduler、Pub/Sub、Cloud Functions)を使用して、独自の自動エクスポート システムを構築できます。


ERROR_RDBMS システムエラーが発生した

エラー メッセージ [ERROR_RDBMS] system error occurred が表示されます。

次のような問題が考えられます

  • ユーザーが必要なすべての Cloud Storage 権限を持っていない可能性があります。
  • データベース テーブルが存在しない可能性があります。

次の方法をお試しください

  1. バケットに対して少なくとも WRITER 権限があり、エクスポート ファイルに対して READER 権限があることを確認してください。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。
  2. テーブルが存在していることを確認します。存在している場合は、バケットに対して正しい権限があることを確認します。

次のステップ