当前位置: 首页 > news >正文

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

简介:

欢迎来到小李哥全新谷歌云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云开发/云架构方案!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【JavaScript】数组四大方法命名 得push pop shift unshift的原因 和功能
  • cookie与session的区别+springboot使用
  • i2c讲解以及zyqn中的使用
  • vue的diff算法的【双端比较】策略
  • C++中如果函数a的参数是class v,class z是v的子类,可否将z的对象当参数传给函数a,可以
  • SystemUI plugin 开发
  • 2024年中职语文统编教材线上培训答案
  • 多线程 02:线程实现,创建线程的三种方式,通过多线程下载图片案例分析异同(Thread,Runnable,Callable)
  • python 文件打开、读、关闭练习
  • 【物联网】微信小程序ios如何自动打开蓝牙
  • Django Rest Framework -解析器
  • Linux中如何复制贴贴删除
  • C++速学day2
  • All-Reduce通信原语;Reduce+LayerNorm+Broadcast算子;gRPC:远程过程调用(RPC)框架;
  • ElementUI 事件回调函数传参技巧与自定义参数应用
  • JavaScript 如何正确处理 Unicode 编码问题!
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Druid 在有赞的实践
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java,console输出实时的转向GUI textbox
  • JAVA之继承和多态
  • KMP算法及优化
  • Laravel 实践之路: 数据库迁移与数据填充
  • Python - 闭包Closure
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​Redis 实现计数器和限速器的
  • #100天计划# 2013年9月29日
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (5)STL算法之复制
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (LLM) 很笨
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三)elasticsearch 源码之启动流程分析
  • (四)linux文件内容查看
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .gitignore不生效的解决方案
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET C# 使用 iText 生成PDF
  • .sys文件乱码_python vscode输出乱码
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ linux ] linux 命令英文全称及解释
  • [04]Web前端进阶—JS伪数组
  • [BZOJ]4817: [Sdoi2017]树点涂色