在GCP上創(chuàng)建Cloud SQL的三種方式(Console,gcloud,Terraform)

1 簡介

Cloud SQL 是GCP上的關(guān)系型數(shù)據(jù)庫,常用的有三種方式來創(chuàng)建:

(1) 界面操作

(2) 命令行 gcloud

(3) Terraform

在開始之前,可以查看:《初始化一個(gè)GCP項(xiàng)目并用gcloud訪問操作》。

2 GCP 操作界面

登陸GCP,選擇SQL,可以創(chuàng)建MySQL、PostgreSQL和SQL Server:

以PostgreSQL為例,可以選擇很多參數(shù):

3 gcloud命令

通過命令行創(chuàng)建也很方便,可以自動(dòng)化。命令如下:

$ gcloud sql instances create pkslow-testdb \
--database-version=POSTGRES_13 \
--region=us-west1 \
--cpu=1 \
--memory=3840MB \
--authorized-networks="0.0.0.0/0" 

Creating Cloud SQL instance...done.                                                                                                                             
Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/pkslow/instances/pkslow-testdb].
NAME           DATABASE_VERSION  LOCATION    TIER              PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
pkslow-testdb  POSTGRES_13       us-west1-a  db-custom-1-3840  34.83.146.214    -                RUNNABLE

authorized-networks 這個(gè)參數(shù)很重要,它決定了哪些客戶端可以連接上數(shù)據(jù)庫。

設(shè)置密碼:

$ gcloud sql users set-password postgres \
--instance=pkslow-testdb \
--password=pkpass

給實(shí)例創(chuàng)建數(shù)據(jù)庫:

$ gcloud sql databases create billing --instance=pkslow-testdb

Creating Cloud SQL database...done.                                                                                                                             
Created database [billing].
instance: pkslow-testdb
name: billing
project: pkslow

創(chuàng)建完成后,就可以在本地連接了:

連上之后,我們來創(chuàng)建一張表和插入一些數(shù)據(jù)來測試一下:

CREATE TABLE pkslow_person (
                               name varchar not null,
                                 age int not null,
                                 city varchar not null
);

insert into pkslow_person(name, age, city) VALUES ('Larry', 1, 'GZ');
insert into pkslow_person(name, age, city) VALUES ('pkslow', 2, 'SZ');
insert into pkslow_person(name, age, city) VALUES ('Deng', 21, 'SZ');
insert into pkslow_person(name, age, city) VALUES ('Eason', 13, 'BJ');
insert into pkslow_person(name, age, city) VALUES ('JJ', 43, 'SH');
insert into pkslow_person(name, age, city) VALUES ('Mi', 28, 'HK');

查看數(shù)據(jù):

4 Terraform

當(dāng)然,更好的方式還是通過Terraform來創(chuàng)建:

provider "google" {
  project     = "pkslow"
}

resource "google_sql_database_instance" "instance" {
  name             = "pkslow-postgresql"
  region           = "us-west1"
  database_version = "POSTGRES_13"
  settings {
    tier = "db-f1-micro"

    ip_configuration {
          ipv4_enabled = "true"

          authorized_networks {
            value           = "0.0.0.0/0"
            name            = "allow-all"
            expiration_time = "2099-01-01T00:00:00.000Z"
          }

        }
  }

  deletion_protection  = "true"
}

resource "google_sql_database" "database" {
  name     = "billing"
  instance = google_sql_database_instance.instance.name
}

resource "google_sql_user" "users" {
  name     = "larry"
  instance = google_sql_database_instance.instance.name
  password = "larry.pass"
}

這段代碼為會(huì)我們創(chuàng)建三個(gè)資源:實(shí)例、數(shù)據(jù)庫和用戶。

準(zhǔn)備好代碼好,運(yùn)行下面命令:

$ terraform init -plugin-dir=${TERRAFORM_PLUGIN}

$ terraform plan

$ terraform apply -auto-approve

Terraform還會(huì)自動(dòng)在Bucket上創(chuàng)建文件來管理Terraform的狀態(tài):

創(chuàng)建完成后,檢查就有兩個(gè)數(shù)據(jù)庫實(shí)例了:

$ gcloud sql instances list
NAME               DATABASE_VERSION  LOCATION    TIER              PRIMARY_ADDRESS  PRIVATE_ADDRESS  STATUS
pkslow-postgresql  POSTGRES_13       us-west1-a  db-f1-micro       34.127.53.161    -                RUNNABLE
pkslow-testdb      POSTGRES_13       us-west1-a  db-custom-1-3840  34.83.146.214    -                RUNNABLE

本地連接如下:

5 代碼

代碼請(qǐng)查看GitHub: https://github.com/LarryDpk/pkslow-samples

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容