Open6

Datastream で CloudSQLのPostgreSQLとBigQueryを同期する際の注意

bibidevbibidev

CloudSQL側にフラグの設定が必要

cloudsql.logical_decoding

DBが再起動するので注意

bibidevbibidev

パブリケーションを作成

alter user postgres with replication;
create publication "mypublication" for all tables;
bibidevbibidev

レプリケーションスロットを作成

select PG_CREATE_LOGICAL_REPLICATION_SLOT('myslot', 'pgoutput');
bibidevbibidev

Datastream側に接続プロファイル作成

Postgres側

外部IPを指定する場合は、CloudSQLのデータベースインスタンスの接続設定からパブリックIPの承認ネットワークを追加する必要あり。
IPは、接続プロファイルのウィザードを進むと表示されます

BigQuery側

bibidevbibidev

CloudSQLとDatastreamをプライベートネットワークに繋ぐ

Datastreamのプライベート接続を使うが、直接繋ぐことはできない。

リバースプロキシ(CloudSQL Auth Proxy) を経由する必要がある。
結果ComputeEngineのコストかかるんかい~

https://cloud.google.com/datastream/docs/private-connectivity?hl=ja

CloudSQLのプライベート接続はCloudSQL内のVPC(Google側管理)と、自分が設定したVPCは別であり、VPCピアリング接続をしている。
Datastreamもおなじ構成で、自分が設定したVPCは別で、VPCピアリング接続をしている。
VPCピアリングを複数使い接続を行うこと(推移的に接続すること)は制約できない。

bibidevbibidev

パブリック接続の注意点

暗号化されない
SSHトンネル使うとコストかかる
Cloud SQLを、SSL接続にして、クライアント証明書は使わないなら最低限は暗号化される?