- 市川諒
- 約 1,700 文字
- 2,100 View
はじめに
こんにちは。TIG 市川です。GCP連載2021の2日目です。
本番運用しているデータをサクッと引っこ抜いてCSV錬金したり、DWHなどに連携していないデータを元にDataStudioでコネコネしたり・・・(負荷を気にせず)気軽にやりたいなぁ・・・というアナタに贈る記事になります。
おことわり
- 実際のシステムにおける本番データは正しく取り扱いましょう。運用ポリシー・セキュリティポリシーに従い、機密情報などを気軽に引っこ抜いてはいけません
サーバレスエクスポートとは?
https://cloud.google.com/blog/products/databases/introducing-cloud-sql-serverless-exports より引用
データベースからデータをエクスポートすることは運用上起こりえるタスクではありますが、その実、エクスポートの仕方を誤ると本番のワークロードに影響を及ぼす可能性があります。
しかし、データのすべてはデータベースに入っていて、欲しい、今すぐ分析したい・・・という時もあると思います。
我々エンジニアは可能な限り手間は省きたい生き物です。
- 別途データベースを建てたくない
- わざわざGCEやローカルPCからSQLクエリ打ちたくない
- データをGCSに持って行くのも面倒
- 本番ワークロード影響はあってはならない
などなどのワガママに対応したのが、このサーバレスエクスポートです。CloudSQLではデータベースからのエクスポートは対応していましたが、2020年9月にサーバレスエクスポートに対応しました!
サーバレスエクスポートではエクスポート専用の一時的なインスタンスを建て、そこからデータを抜くことで本番ワークロードに一切の影響を与えず、GCSにファイルをアップロードしてくれる優れものです。その上、SQL形式とCSV形式に対応し、カスタムSQLで狙ったデータだけ抜くこともできるかゆいところに手が届くサービスになっています。
事前準備
今回のケースでは特に準備することはありません。グローバルIPを持ったCloudSQLを建てたのみです。あとはエクスポート先のGCSバケットさえあればよいのです。
データベースはMySQLとPostgreSQLでサポートしています(今回はPostgreSQLで試しました)
今回、データはPostgreSQLのサンプルデータベースを利用します。CloudShellなどで接続し、pg_restoreを使ってサクッとインポートしましょう。
DB作成 |
クエリの作成
さて、では2007年03月の担当者別売上げ(っぽい)クエリを作ってみます。
今回は分析用にこのデータがすごく欲しいと仮定します。
WITH staff_detail as ( |
データのサーバレスエクスポート実践!
CLIからももちろん可能ですが、今回は画面からエクスポートを行ってみます。
SQLクエリ部分に先ほど記載したSQLをおもむろに貼り付けます。
一時インスタンスへのエクスポートをオフロードするにチェックを入れます。
エクスポートが開始されると概要画面に戻りぐるぐる回ります。
が、WITH句には対応していませんでした・・・
気を取り直してサブクエリ版のSQLを作成します。
SELECT |
そして改めてエクスポートを行い、GCSを確認すると・・・
エクスポートされていますね!
サーバレスエクスポートでは一時インスタンスを建てるため、最低でも5分程度時間を要します。後はデータ量によってエクスポートまでの時間がかかります。今回はきっかり5分程度で終わりました。
この間、本番サーバではSQLの呼び出しなどは行われず、一切の影響なしにデータが抜けました!
なんてお手軽!
作成されたCSVはヘッダなしのカンマ区切りで作成されます。
file -i Cloud_SQL_Export_2021-03-09-14-07-39.csv |
まとめ
非常に簡単に本番影響を出さないデータエクスポートができました!
もちろん無料というわけにはいきませんが、ちょっとしたデータ集計や検証の為に利用価値が高いのではないでしょうか。
本番データを見たいけど、影響が。。。という方、是非試してみてください。
明日は澁川さんの20210311_PythonでCloud_Operationsの機能を使ってみるです。