1 简介

Cloud SQL 是GCP上的关系型数据库,常用的有三种方式来创建:

(1) 界面操作

(2) 命令行 gcloud

(3) Terraform

在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。

2 GCP 操作界面

登陆GCP,选择SQL,可以创建MySQL、PostgreSQL和SQL Server:

以PostgreSQL为例,可以选择很多参数:

3 gcloud命令

通过命令行创建也很方便,可以自动化。命令如下:

$ 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 这个参数很重要,它决定了哪些客户端可以连接上数据库。

设置密码:

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

给实例创建数据库:

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

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

创建完成后,就可以在本地连接了:

连上之后,我们来创建一张表和插入一些数据来测试一下:

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');

查看数据:

4 Terraform

当然,更好的方式还是通过Terraform来创建:

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"
}

这段代码为会我们创建三个资源:实例、数据库和用户。

准备好代码好,运行下面命令:

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

$ terraform plan

$ terraform apply -auto-approve

Terraform还会自动在Bucket上创建文件来管理Terraform的状态:

创建完成后,检查就有两个数据库实例了:

$ 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 代码

代码请查看GitHub: https://github.com/LarryDpk/pkslow-samples

在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)的更多相关文章

  1. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  2. Java反射机制(创建Class对象的三种方式)

    1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称:   2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...

  3. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  4. Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...

  5. java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  6. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  7. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  8. 创建 Spring容器的三种方式

    一.src路径下打包完在war包的classes层级下 1.Spring容器创建的三种方式 创建Bean容器之后创建对象: 其中第三种使用的是BeanFactory对象 2.spring通过配置文件用 ...

  9. django基础之day09,多对多创建数据表的三种方式

    多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...

  10. hibernate执行sql的三种方式

    方式一:直接使用HibernateTemplate的find()方法,find方法支持执行hql语句 List<T> list = this.getHibernateTemplate(). ...

随机推荐

  1. 齐博x1.3通用栏目名称及参数调用接口

    对于全站的频道可以使用下面的方法取出相应的栏目名称及参数http://qb.net/index.php/cms/wxapp.sorts.html注意,只需要把qb.net换成你的域名,cms 换成其它 ...

  2. Tesla-E380,4K eDP一键点屏神器问世

    eDP屏快速点亮,EDID回读, eDP屏调试 是否为点屏的准备工作感到烦躁: 1)查找LCD模组的数据手册(常常还未必能找着) 2)在上位机软件或者单片机程序里设置一大堆的LCD屏参,这个频率,那个 ...

  3. 【JavaWeb】学习笔记——Tomcat集成

    简介 Tomcat是基于Java的一个开放源代码.运行servlet和JSP Web应用的Web应用软件容器,又称servlet容器 安装 官方网站:https://tomcat.apache.org ...

  4. c语言中 -> 的用法

    ->是一个整体,它是用于指向结构体. 1.换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到"->&quo ...

  5. xlwings 模块总结

    基本使用 在子线程中使用时,有时需要在子线程函数中加入以下.有时不需要加入,目前还不明白具体的原因 import pythoncom # 导入的库 pythoncom.CoInitialize() # ...

  6. 重新整理 .net core 实践篇 ———— dotnet-dump [外篇]

    前言 本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html 该文为dotnet-dump 和 procdump 的实战介绍一下. 正文 现在 ...

  7. 一次SpringBoot版本升级,引发的血案

    前言 最近项目组升级了SpringBoot版本,由之前的2.0.4升级到最新版本2.7.5,却引出了一个大Bug. 到底是怎么回事呢? 1.案发现场 有一天,项目组的同事反馈给我说,我之前有个接口在新 ...

  8. 搭建K8S集群前置条件

    搭建K8S集群 搭建k8s环境平台规划 单master集群 单个master节点,然后管理多个node节点 多master集群 多个master节点,管理多个node节点,同时中间多了一个负载均衡的过 ...

  9. Go语言核心36讲32

    你好,我是郝林,今天我们继续分享原子操作的内容. 我们接着上一篇文章的内容继续聊,上一篇我们提到了,sync/atomic包中的函数可以做的原子操作有:加法(add).比较并交换(compare an ...

  10. 方法的重载(Overload)+ println重载

    方法的重载(Overload) package cn.day01; /*方法的重载(Overload):多个方法的名称一样,但是参数列表不一样. * 好处:只需要记住唯一一个方法名称,就可以实现类似多 ...