零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群

news2024/11/17 13:29:06

简介:

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

我将每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术基础解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次我将介绍如何设计一个高可用的数据库RDS集群,包括数据库和只读副本实现读写分离,保证系统服务的高可用性,提升数据库查询性能。

方案所需基础知识 

什么是 Amazon RDS?

Amazon RDS(Relational Database Service)是亚马逊云科技提供的一项托管关系型数据库服务。它简化了数据库的设置、操作和扩展,使用户能够专注于应用程序开发,而无需担心数据库的维护和管理。RDS 支持多种数据库引擎,包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 SQL Server。

为什么要创建高可用只读副本?

在 RDS 集群中创建高可用只读副本(Read Replica)有助于提高应用程序的性能、可用性和扩展性。

分担读负载

只读副本可以分担主实例的读请求,减少主实例的压力,提高整体读性能和效率。

提升可用性

只读副本可以在不同可用区或区域中创建,增强系统的容灾能力。如果主实例发生故障,只读副本可以迅速接管读请求,确保服务不中断。

数据库扩展性

通过增加只读副本数量,可以轻松应对不断增长的读请求需求。只读副本的数量可以根据实际需求进行调整。

简化管理

RDS 自动管理只读副本的备份、软件补丁和硬件维护,用户无需手动操作,降低运维成本。

本方案包括的内容:

1. 创建一个亚马逊云科技RDS数据库实例

2. 为RDS数据库实例配置只读副本,创建RDS集群

3. 为数据库集群进行数据备份

项目搭建具体步骤:

1. 首先我们进入亚马逊云科技控制台,打开RDS服务。

 2. 点击左侧Database选项,点击“Create Database”创建一个数据库

3. 选择MariaDB数据库引擎

4. 选择需要的MariaDB版本,点击数据库部署模式为测试/开发模型

 5. 为数据库起名为“my-database”,为数据库配置username和密码,用户名默认为admin

6. 为数据库选择计算资源类型: 突增式资源类型“db.t3.xlarge”,并配置硬盘存储类型为gp2,大小为20GiB。

 7. 为数据库的存储配置自动扩展功能,存储最大值扩展值1000GiB。并且选择部署模式为双区高可用,包括跨可用区只读副本。

8. 选择RDS实例部署的defaultVPC网络环境和default子网,只允许数据库内网访问No Public Access,并且添加Security Group安全组防火墙。

 9. 添加MariaDB初始数据库名字“my_database”,添加默认MariaDB数据库配置参数组。

 10. 开启RDS磁盘加密,添加KMS秘钥对其加密。

11. 取消数据库集群自动更新维护,配置数据库更新维护窗口。我们在这里也可以看到我们将要创建的数据库实例每个月的价格为401.72美元。

 12. 点击末尾的Create创建后,我们就可以看到我们的创建好的RDS数据库集群了。

如何通过cdk代码创建一个RDS数据库集群?

我们也可以利用亚马逊云科技提供的IaC(代码定义基础设施)的方式,用cdk代码创建一个RDS数据库集群,实例代码如下。

import * as cdk from 'aws-cdk-lib';
import { CfnOutput, Stack, StackProps } from 'aws-cdk-lib';
import * as rds from 'aws-cdk-lib/aws-rds';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
import { Construct } from 'constructs';

export class RdsStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // Create a VPC
    const vpc = new ec2.Vpc(this, 'Vpc', {
      maxAzs: 2
    });

    // Create a secret for the DB credentials
    const dbCredentialsSecret = new secretsmanager.Secret(this, 'DBCredentialsSecret', {
      generateSecretString: {
        secretStringTemplate: JSON.stringify({ username: 'admin' }),
        generateStringKey: 'password',
        excludeCharacters: '"@/\\',
      }
    });

    // Create the RDS cluster
    const cluster = new rds.DatabaseCluster(this, 'Database', {
      engine: rds.DatabaseClusterEngine.auroraMysql({
        version: rds.AuroraMysqlEngineVersion.VER_2_09_1
      }),
      credentials: rds.Credentials.fromSecret(dbCredentialsSecret),
      instanceProps: {
        vpc,
        instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.XLARGE),
        vpcSubnets: {
          subnetType: ec2.SubnetType.PRIVATE_WITH_NAT
        }
      },
      instances: 1,
      storageEncrypted: true,
      storageType: rds.StorageType.GP2,
      allocatedStorage: 20,
      defaultDatabaseName: 'MyDatabase'
    });

    // Create a read replica
    const replica = new rds.DatabaseInstanceReadReplica(this, 'ReadReplica', {
      sourceDatabaseInstance: cluster.instanceIdentifiers[0],
      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.XLARGE),
      vpc,
      storageEncrypted: true
    });

    new CfnOutput(this, 'DatabaseEndpoint', {
      value: cluster.clusterEndpoint.socketAddress
    });

    new CfnOutput(this, 'ReadReplicaEndpoint', {
      value: replica.dbInstanceEndpointAddress
    });
  }
}

const app = new cdk.App();
new RdsStack(app, 'RdsStack');
app.synth();

以上就是在亚马逊云科技上创建高可用数据库集群的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试概论之系统测试

系统测试 文章目录 系统测试一、系统测试定义二、系统测试的对象三、系统测试类型1、功能测试2、性能测试3、压力测试4、容量测试5、GUI 测试6、可以性测试7、安装性测试8、配置测试9、异常测试10、备份测试11、健壮性测试12、文档测试13、在线帮助测试14、网络测试 四、系统测…

为什么奥运会采用通义而不是 OpenAI,现在中国的 AI 技术是世界领先了吗?

奥运会作为全球最盛大的体育赛事之一,一直在不断地引入和利用最新的科技来提升赛事的组织效率、观众体验以及运动员的表现。在2024年巴黎奥运会上,人工智能(AI)技术的应用尤为引人注目。 首先,关于奥运会采用的技术选…

数字噪音计(声级计)【AR814数字噪音计】

系统介绍 声级计,又叫噪音计,是噪声测量中最基本的仪器。声级计一般由电容式传声器、前置放大器、衰减器、放大器、频率计权网络以及有效值指示表头等组成。 声级计的工作原理是:由传声器将声音转换成电信号,再由前置放大器放大…

【json解析】控制台打印json字符串格式正确,但json.loads()解析失败问题解决

问题为控制台打印json字符串格式正确,但json.loads()解析失败。看似简单的问题,却又折腾了好一会,因此记录一下解决方法! 出现这个问题的原因:眼见不一定为实,控制台打印的json字符串并不一定是实际的json字…

Typora v1.9.5解锁版下载、安装教程 (轻便简洁的Markdown编辑器)

前言 Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如,不像其他编辑器的有编辑栏和显示栏。 一、下载地址 下载链接:…

软件测试---Fiddler抓包

一、初识Fiddler ①BS架构简介和请求过程理解 ②Fiddler原理 Fiddler是一个代理服务器。代理地址:127.0.0.1,端口:8888。浏览器可以通过设置查看代理服务器:设置->高级->打开您计算机的代理设置->连接->局域网设置->代理服务器->在高级…

Vulnhub靶场-FRISTILEAKS: 1.3

1.环境准备 下载地址:https://www.vulnhub.com/entry/fristileaks-13,133/ 攻击机:kali(192.168.26.128) 靶机:FRISTILEAKS: 1.3 将靶机和kali的网络连接模式设置为同一种模式(Nat模式) 注…

【linux】linux中特殊权限管理--FACL详细用法教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

MM 14 -采购- 固定资产采购

思维导图 说明 特点: 价值大于2000就算固定资产采购。 不做料号管理 不做库存管理 但是财务做资产卡片管理 流程: 01采购申请意向表---02资产评估表--03财务创建资产卡片AS01--04创建采购申请(科目分配类别A)--05采购订单--06…

不学函数式设计的3大损失

讲动人的故事,写懂人的代码 可能很多程序员和我一样,一直在一次次地重新入门函数式编程(和设计)。因为我们总是学了就忘。 鲍叔去年出版了他的大作《函数式设计》,里面有大量Clojure代码示例。如果不懂Clojure&#x…

【工具推荐】四千个厂商默认帐号密码

一、下载地址 WX关注公众号“光剑安全”,发送“20240808厂商”即可获得文档 二、 文档介绍 里面包括多个web产品,多个数据库:mysql、redis、MSSQL (mssql)等 多个服务协议:telnt、ssh、ftp、rdp等 无偿分享技术文章&#xff0c…

Elsevier 旗下又一宝藏SCI!国人发文超五成,8天上线,硕博圈的“易投易中”首选刊!

【SciencePub学术】本期,小编给大家介绍的是1本计算机类的SCI,位于JCR2区中科院4区,影响因子2.6分。 众所周知,顶刊的普遍毛病就是“速度慢,要求严”,这也是让大多数人望而却步的主要原因。虽然此刊影响因子…

栈和队列(数据结构)

1. 栈(Stack) 1.1 概念 栈 :一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO ( Last In First Out )的原…

Profinet 转 4路 MODBUS 网关

一、功能概述 1.1 设备简介 本产品是 Profinet 和 Modbus RTU 网关,使用数据映射方式工作。 本产品在Profinet侧作为Profinet从站,接西门子PLC 如 1200、1500、200Smart 等;在 Modbus RTU 侧做为 RTU 主站或从站,接 ModbusRTU …

FLUX.1 实测,堪比 Midjourney 的开源 AI 绘画模型,无需本地显卡,带你免费实战

要列举 AI 绘画开源界的几个关键贡献,一定少不了 Stable Diffusion。 还记否前不久刚推出的 Stable Diffusion 3? 其背后的团队 Stability AI,真的是一波三折,其核心成员出走,成立了一个新公司:Black For…

抖店飞鸽客服自动回复软件开发教程与下载体验(.NET版)

转载请注明出处! 原文链接:https://blog.csdn.net/zgyulongfei/article/details/140960430 本文适合的读者为: 抖店(抖音小店)个体商家;抖店店群商家(店群商家:指的是开了几十个抖…

如何用python实现将中缀表达式改成后缀表达式

例:如何将1 *(3 * 4 /(8 - (7 0)))改成后缀表达式 可以先看看这篇文章,写得很详细清楚 思路 从左到右依次遍历中缀表达式各个字符 第一个字符为运算数,直接输出: 第二个字符为操作符,满足 栈空/优先级高于栈顶操…

[Vue篇]vue3组合式API实现todo列表

今天的例子是使用vue3的一个新 API:computed()。它可以让我们创建一个计算属性 ref,这个 ref 会动态地根据其他响应式数据源来计算其 .value。计算属性会自动跟踪其计算中所使用的到的其他响应式状态,并将它们收集为自己的依赖。计算结果会被…

Typora 伪装 LaTeX 中文样式主题 学习笔记

最近发现一个比较有意思的项目,Typora 伪装 LaTeX 中文样式主题 用来写毕设论文的初稿,格式可以统一控制,比较方便。项目“第五章”源格式是“5 系统测试”靠左,就像5.1一样。搜索了一下获得了一些零散的知识点记下来。 在Typora的…

leetCode- - - 链表

目录 1.反转链表(leetcode206) ​编辑 2. 链表内指定区间反转(leetcode92) 3.链表中的节点每k个一组翻转(leetcode25) 4.合并两个排序的链表(leetcode21) 5.链表的中间节点&am…