在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)
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)的更多相关文章
- java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- Java反射机制(创建Class对象的三种方式)
1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称: 2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...
- JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...
- Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...
- java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...
- 创建 Spring容器的三种方式
一.src路径下打包完在war包的classes层级下 1.Spring容器创建的三种方式 创建Bean容器之后创建对象: 其中第三种使用的是BeanFactory对象 2.spring通过配置文件用 ...
- django基础之day09,多对多创建数据表的三种方式
多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...
- hibernate执行sql的三种方式
方式一:直接使用HibernateTemplate的find()方法,find方法支持执行hql语句 List<T> list = this.getHibernateTemplate(). ...
随机推荐
- NLP之TextRNN(预测下一个单词)
TextRNN @ 目录 TextRNN 1.基本概念 1.1 RNN和CNN的区别 1.2 RNN的几种结构 1.3 多对多的RNN 1.4 RNN的多对多结构 1.5 RNN的多对一结构 1.6 ...
- 二、redis介绍
二.redis介绍 2.1.定义 Redis(Remote Dictionary Server ,远程字典服务) 是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库,是 ...
- SpringBoot(三) - Ribbon客户端负载均衡,Zuul网关,Config配置中心
1.Ribbon客户端负载均衡 1.1 依赖 1.2 配置信息 # feign默认加载了ribbon负载均衡,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的,如果改为随机,指定服 ...
- Java获取/resources目录下的资源文件方法
Web项目开发中,经常会有一些静态资源,被放置在resources目录下,随项目打包在一起,代码中要使用的时候,通过文件读取的方式,加载并使用: 今天总结整理了九种方式获取resources目录下文件 ...
- 详解pyautogui模块
一.安装 pip install pyautogui 或者 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui 二.全 ...
- Go语言核心36讲37
你好,我是郝林,今天我们继续来分享并发安全字典sync.Map的内容. 我们在上一篇文章中谈到了,由于并发安全字典提供的方法涉及的键和值的类型都是interface{},所以我们在调用这些方法的时候, ...
- i春秋Do you know upload?
打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...
- Android 按钮自定义背景后点击没有动画效果
只需要在按钮中添加属性就可以了 android:foreground="?selectableItemBackground"
- 【SQL真题】SQL3:每类视频近一个月的转发量/率
题目: https://www.nowcoder.com/practice/a78cf92c11e0421abf93762d25c3bfad?tpId=268&tqId=2285068& ...
- 【大数据面试】Hbase:数据、模型结构、操作、读写数据流程、集成、优化
一.概述 1.概念 分布式.可扩展.海量数据存储的NoSQL数据库 2.模型结构 (1)逻辑结构 store相当于某张表中的某个列族 (2)存储结构 (3)模型介绍 Name Space:相当于数据库 ...