零基础5分钟上手谷歌云GCP核心云开发技能 - 搭建和维护高可用数据库集群

ops/2024/10/20 6:27:18/

简介:

欢迎来到小李哥全新谷歌云GCP云计算知识学习系列,适用于任何无云计算或者谷歌云技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。

我将每天介绍一个基于全球三大云计算平台(AWS, Azure, GCP)的全球前沿云开发/架构技术基础解决方案,帮助大家快速了解国际上最热门的云计算平台上的最佳实践和前沿技术,并应用到自己的日常工作里。本次我将介绍如何在谷歌云上利用Cloud SQL服务搭建高可用数据库集群。示范架构图如下:

方案所需基础知识 

什么是谷歌云 GCP Cloud SQL 服务?

谷歌云 GCP Cloud SQL 是一项完全托管的关系型数据库服务。它支持多种数据库引擎,支持包括 MySQL、PostgreSQL 和 SQL Server多种数据引擎。Cloud SQL 旨在简化数据库的部署、管理和维护,使开发者能够专注于应用程序开发,而无需担心底层数据库的基础设施管理。

使用 GCP Cloud SQL 作为数据库的优势

完全托管

无需处理数据库的安装、配置、补丁和备份,谷歌云会自动管理这些任务,节省运维时间和成本。

高可用性

通过自动故障转移和跨区域复制,确保数据库的高可用性和数据持久性,提升业务连续性。

安全性

提供内置的加密功能、自动更新和合规性认证,确保数据安全和隐私保护。

弹性扩展

支持按需扩展数据库的计算和存储资源,灵活应对业务需求变化,避免资源浪费。

性能优化

提供自动调优和性能监控工具,帮助优化查询性能,确保应用始终运行在最佳状态。

简便的集成

与 GCP 的其他服务(如 Compute Engine、App Engine 和 BigQuery)无缝集成,简化开发流程,增强应用的功能和性能。

本方案包括的内容:

1. 创建一个谷歌云Cloud SQL数据库实例

2. 通过Cloud Shell命令行方式与数据库交互

3. 在服务器内部创建一个数据库,并导入数据

项目搭建具体步骤:

1.  我们在搜索栏搜索Cloud SQL, 进入Cloud SQL服务主页。点击“Create Instance”创建数据库实例。

2. 选择MySQL数据库引擎

 

3.  选择MySQL企业级数据库版本,并且为数据库实例设置环境为开发环境,数据库版本为MySQL 8,为数据库起名为myinstance,并且点击"Generate"自动创建密码。

4. 接下来我们为数据库集群配置高可用,选择地理区域“europe-west4”,选择多可用区部署的模式,主可用区为“europe-west4-c”,最后点击创建数据库集群。

5. 接下来我们打开Cloud Shell命令行,与数据库实例交互进行维护操作。

 

6. 在Cloud Shell控制台命令行如下命令连接到数据库集群

gcloud sql connect myinstance --user=root

 7. 在弹出密码输入框后,复制创建数据库集群时设置的密码

8. 接下来我们通过SQL语句,在MySQL里创建一个数据库“guestbook”。 

CREATE DATABASE guestbook;

9.  接下来我们为数据库导入测试数据

USE guestbook;
CREATE TABLE entries (guestName VARCHAR(255), content VARCHAR(255),entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));INSERT INTO entries (guestName, content) values ("first guest", "I got here!");
INSERT INTO entries (guestName, content) values ("second guest", "Me too!");

10. 接下来我们对导入数据进行查询,得到查询结果。

SELECT * FROM entries;

 

如何利用谷歌云GCP Python SDK,通过代码方式创建数据库

from google.cloud import sql_v1
from google.cloud.sql_v1.types import CloudSqlInstance, SqlInstanceSettings, SqlDatabaseVersion, SqlSettings, SqlAvailabilityType
from google.protobuf.field_mask_pb2 import FieldMaskdef create_mysql_instance():# 创建 SQL Admin 客户端client = sql_v1.SqlInstancesServiceClient()# 定义实例的 ID 和项目 IDinstance_id = "myinstance"project_id = "your-project-id"  # 替换为您的项目 ID# 配置实例的设置instance_settings = SqlInstanceSettings(tier="db-n1-standard-2",  # 对应 4 vCPU, 16 GB RAMavailability_type=SqlAvailabilityType.REGIONAL,  # 设置多区域支持 (Highly available)data_disk_size_gb=100,  # 数据盘大小 100 GBactivation_policy=SqlInstanceSettings.ActivationPolicy.ALWAYS,database_version=SqlDatabaseVersion.MYSQL_8_0,ip_configuration=SqlSettings.IpConfiguration(ipv4_enabled=True),location_preference=SqlSettings.LocationPreference(zone="europe-west4-c"  # 设置主区域))# 创建 Cloud SQL 实例instance = CloudSqlInstance(name=instance_id,project=project_id,settings=instance_settings,database_version=SqlDatabaseVersion.MYSQL_8_0)# 发送请求以创建实例operation = client.insert(project=project_id,instance_id=instance_id,body=instance)print(f"Creating instance {instance_id} in project {project_id}...")# 等待操作完成response = operation.result()print("Instance created successfully.")return responseif __name__ == "__main__":create_mysql_instance()
代码解释:

google.cloud.sql_v1: 使用 Google Cloud SQL Admin SDK 的 Python 客户端库。

instance_settings: 配置实例的设置,包括计算资源、磁盘大小、可用性类型等。

create_mysql_instance: 函数用于创建 MySQL 实例。

SqlAvailabilityType.REGIONAL: 表示多区域设置,提供更高的可用性。

SqlInstanceSettings: 包含实例的配置详细信息,例如计算资源、磁盘大小、数据库版本和可用性设置。

以上就是在谷歌云GCP上搭建MySQL高可用数据库集群的全部步骤。欢迎大家关注零基础5分钟上手谷歌云系列,未来获取更多国际前沿的谷歌云GCP云开发/云架构方案!


http://www.ppmy.cn/ops/92045.html

相关文章

HTTP操作过程与用户点击鼠标后发生的事件的顺序有什么区别

HTTP操作过程与用户点击鼠标后发生的事件的顺序存在显著的区别。‌ 用户点击鼠标后发生的事件顺序主要涉及用户界面交互,‌包括:‌ 用户单击鼠标。‌ 浏览器分析链接指向页面的URL。‌ 浏览器向DNS请求解析域名的IP地址。‌ 域名系统DNS解析出服务器…

学习日志8.7--Security Zone防火墙安全区域

安全区域实验拓扑开始之前先通过一台主机和防火墙相连,设置主机的IP地址和网关,开启防火墙设置防火墙接口g1/0/1的IP地址为192.168.1.254,将防火墙设置为主机的网关,尝试能不能用主机ping通防火墙。尝试之后,发现失败&…

猎码安卓APP开发IDE,amix STUDIO中文java,HTML5开发工具

【无爱也能发电】Xili 2024/8/2 10:41:20 猎码安卓APP开发IDE,amix java开发工具 我研发这些只有一小部分理由是为了赚钱,更多是想成就牛逼的技术产品。 目前的产品就够我赚钱的,我持续更新就好了,没必要继续研究。 IDE不赚钱,谁…

创建型模式(Creational Patterns)之工厂模式(Factory Pattern)之工厂方法模式(Factory Method Pattern)

1. 工厂方法模式(Factory Method Pattern) 将对象的创建延迟到子类中实现,每个具体产品类都有一个对应的工厂类负责创建,从而使得系统更加灵活。客户端可以通过调用工厂方法来创建所需的产品,而不必关心具体的实现细节。这种模式符合开放-封闭…

C基础练习(学生管理系统)

1.系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 2.开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提示“成绩表为空!请先使用命令 T 录入学生成绩。” 同理,当…

NSS [SWPUCTF 2022 新生赛]file_master

NSS [SWPUCTF 2022 新生赛]file_master 开题,一眼文件上传。 network看看返回包。后端语言是PHP。 除了文件上传还有个查看文件功能。 起手式查询/etc/passwd,发现查询方法是GET提交参数,后端使用file_get_contents()函数包含文件。同时有op…

如何确保工业交换机电源安全运行

在现代工业自动化和智能制造中,工业交换机作为网络通信的重要设备,其电源的安全运行显得尤为重要。为了确保工业交换机在各种恶劣环境下的稳定性与可靠性,我们需要采取一系列的措施和策略。首先,选择高质量的电源设备是基础&#…

机器学习·L3W1-聚类和异常检测

Kmean聚类 初始化聚类中心(随机选择)更新类别计算新的聚类中心 随机选择样本点作为聚类中心 K个聚类中心的情况 randidxnp.random.permutation(X.shape[0])initial_centersX[randidx[:K]]更新类别 公式是计算每一个聚类中心和当前样本的距离,挑选一个最短距离作为…