Cloud SQLでPostgreSQLを使っていたのですが、諸事情でSpannerを検証する必要があるので、ざっくり構築して接続確認するまでのメモです。
Spanner構築
Terraformでざっくり作ります。マルチリージョン構成で、スペックは最低で作ります。 database_dialectをPOSTGRESQLにすることでPostgreSQLと互換が取れます。
########################################### # Service API ########################################### resource "google_project_service" "main" { for_each = { for service in [ "spanner.googleapis.com", ] : service => service } service = each.key disable_dependent_services = true disable_on_destroy = false } ########################################### # Spanner ########################################### resource "google_spanner_instance" "main" { config = "asia1" name = "poc-spanner" display_name = "poc-spanner" processing_units = 100 depends_on = [ google_project_service.main ] } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "poc" database_dialect = "POSTGRESQL" }
- 参考: google_spanner_instance | Resources | hashicorp/google | Terraform | Terraform Registry
- 参考: google_spanner_database | Resources | hashicorp/google | Terraform | Terraform Registry
Spannerに接続
SpannerにはPostgreSQLのインターフェースがあるが、これに接続するために、PGAdapterを使用する必要があります。 PGAdapterはローカルで起動して、Spannerに接続するためのプロキシとして働きます。
今回はMac上にPGAdapterをインストールして、接続確認します。
とりあえず、javaのランタイムとpsqlクライアントをインストールします。
brew install java echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk brew install libpq echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc exec ${SHELL} -l
PGAdapterをダウンロードして、起動します
wget https://storage.googleapis.com/pgadapter-jar-releases/pgadapter.tar.gz && tar -xzvf pgadapter.tar.gz java -jar pgadapter.jar -p ${PROJECT_ID} -i ${INSTANCE_NAME} -d ${DATABASE}
ターミナルを別窓で開いてpsqlで接続して雑にテーブルを作ってみます。
% psql -h localhost psql (16.1, server 14.1) Type "help" for help. poc=> CREATE TABLE Staff ( poc-> id INTEGER NOT NULL, poc(> name TEXT NOT NULL, poc(> age INTEGER , poc(> PRIMARY KEY (id));
気持ちテーブル作成に時間がかかる気がします。
コンソールからテーブルを確認すると作成されていることが確認できます。
いったん接続出来るところまで確認できました。 ここから既存のデータを入れたり、Cloud Run上のアプリケーションから接続したりを確認していきます。