零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群
简介:
欢迎来到小李哥全新亚马逊云科技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 VPCconst vpc = new ec2.Vpc(this, 'Vpc', {maxAzs: 2});// Create a secret for the DB credentialsconst dbCredentialsSecret = new secretsmanager.Secret(this, 'DBCredentialsSecret', {generateSecretString: {secretStringTemplate: JSON.stringify({ username: 'admin' }),generateStringKey: 'password',excludeCharacters: '"@/\\',}});// Create the RDS clusterconst 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 replicaconst 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云开发/云架构方案!
相关文章:
零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群
简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…...
力扣315.计算右侧小于当前元素的个数
力扣315.计算右侧小于当前元素的个数 离散化 树状数组 const int N 100010;int tr[N],n;class Solution {public:vector<int> countSmaller(vector<int>& nums) {n nums.size();vector<int> tmp(nums);vector<int> res(n);memset(tr,0,sizeo…...
websocket,css动画和css-position、display、区别
一、websocket codereturn {// 用于存储 WebSocket 返回的状态数据statusList: [],},mounted() {this.setupWebSocket();this.startBlinking();},methods: {setupWebSocket() {// 创建 WebSocket 连接const socket = new WebSocket(ws://xxx.xxx:xxx/xxx);// WebSocket 连接成功…...
前端获取视频文件宽高信息和视频时长
安装 yarn add video-metadata-thumbnails | npm install video-metadata-thumbnails引入依赖包 import { getMetadata } from video-metadata-thumbnails使用 if (file.name.includes(mp4)) {if (file) {try {console.log(file)// 获取视频的元数据const metadata await …...
【区块链+医疗健康】基于区块链的药品类监管应用管理系统 | FISCO BCOS应用案例
退热类药品的购药信息及政企互动信息等各项数据的安全性、保密性、真实性,不仅影响着监管部门的科学监管、 有效监管,也影响着企业的经营安全、诚信口碑,是区域药品安全监管工作进展的直观体现。 江苏数予科技有限公司构建基于区块链的药品类…...
MySQL4多表查询 内连接
多表查询 数据准备 CREATE DATABASE db4; USE db4; -- 创建部门表 create table if not exists dept(deptno varchar(20) primary key , -- 部门号name varchar(20) -- 部门名字 );-- 创建员工表 create table if not exists emp(eid varchar(20) primary key , -- 员工编号…...
Java -数组
1.一维数组 1.1数组定义 public class Main {public static void main(String[] args) throws Exception {int[] a new int[10];float[] f new float[10];double[] d new double[10];char[] c new char[10];} } 1.2 初始化 public class Main {public static void main(S…...
.prettierrc.js 有什么用
.prettierrc.js 是 Prettier 代码格式化工具的配置文件。 1. 作用 Prettier 是一个用于统一代码风格的工具,它可以使代码更具可读性和一致性。.prettierrc.js 文件用于自定义 Prettier 的格式化规则。 通过配置 .prettierrc.js,团队中的开发者可以遵循…...
haproxy七层代理
一.haproxy的基本部署 1.RS上装nginx [rootwebserver1 ~]# dnf install nginx -y 2.再RS上写入测试信息 [rootwebserver1 ~]# echo webserver1 - 172.25.254.10 > /usr/share/nginx/html/index.html [rootwebserver1 ~]# systemctl enable --now nginx [rootwebserver…...
<数据集>柑橘缺陷识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:1290张 标注数量(xml文件个数):1290 标注数量(txt文件个数):1290 标注类别数:4 标注类别名称:[Orange-Green-Black-Spot, Orange-Black-Spot, Orange-Canker, Orange…...
Go开发后端和Vue3开发前端的前后端分离框架中自己手戳一个OA流程审批、工作流引擎给新时代一个漂亮便捷的工作流引擎
前言 在软件项目开发中,我们都会接触到流程审批的需要业务,我们以往用的最多就是如下图这种流程编辑引擎插件: 以上截图中的流程工具是不是大家常见的呀!感觉很丑拿不出手呀!在当前行业内卷及竞争激烈情况下ÿ…...
深入理解 toDto 与 toEntity:结合 Eladmin 框架的最佳实践
在现代软件开发中,尤其是后端开发中,数据传输对象(DTO)和实体对象的转换是一个常见且重要的操作。理解和正确实现这种转换不仅能提高代码的可维护性,还能提升应用的性能和安全性。本文将深入探讨 toDto 和 toEntity 方…...
基于区块链的供应链应用开发
区块链的供应链溯源应用开发 一 、环境准备 (1)更新镜像源 apt update(2)安装(openssl、jdk、git) apt -y install openssl default-jdk git(3)配置JAVA_HOME环境变量 echo “export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/” >> /etc/profilesource /etc…...
获取GORM执行时的sql字符串
示例: import "log" func GetDetail(tx *gorm.DB,id int)(data any,err error){var query tx.Session(&gorm.Session{DryRun: true})err query.Where("id ?", id).First(&res).Errorif err!nil{zap.L().Error("get detail er…...
Linux系统使用Docker安装RStudio服务并实现任意浏览器远程访问
文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…...
【原创】springboot+mysql法律咨询网设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
Vue 应用实例的关键方法与配置案例二
目录 createApp createSSRApp app.mount app.unmount app.component app.directive Vue3.X自定义全局指令 Vue2.X自定义全局指令 app.use app.mixin 非 VIP 用户能够免费下载博文资源 createApp 详见上一章节:Vue 应用实例的关键方法与配置案例一-CSDN博客 createSS…...
Java面试题--JVM大厂篇之破解 JVM 性能瓶颈:实战优化策略大全
目录 引言: 正文: 1. 常见的JVM性能问题 频繁的GC导致应用暂停 内存泄漏导致的内存不足 线程争用导致的CPU利用率过高 类加载问题导致的启动时间过长 2. 优化策略大全 2.1 代码层面的优化 2.1.1 避免不必要的对象创建 2.1.2 优化数据结构的选择 2.1.3 使用并发工具…...
Apache Curator 创建节点时,如果节点存储就会抛出异常吗?
在Apache Curator中,创建节点时,如果该节点已经存在,并且你的代码没有正确处理这种情况,那么会抛出NodeExistsException异常。这是ZooKeeper客户端库(包括Curator)的常见行为,因为它需要确保Zoo…...
【食物链】
题目 代码 #include<bits/stdc.h> using namespace std; const int N 5e410; int n, k; int p[N], d[N]; int find(int x) {if(p[x] ! x){int root find(p[x]);d[x] d[p[x]];p[x] root;}return p[x]; } int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…...
G-Helper终极指南:解锁华硕笔记本隐藏性能的5个秘密功能
G-Helper终极指南:解锁华硕笔记本隐藏性能的5个秘密功能 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...
跨语言数据处理的高效解决方案:json-translator全方位指南
跨语言数据处理的高效解决方案:json-translator全方位指南 【免费下载链接】json-translator jsontt 💡 - AI JSON Translator with GPT / Gemma / Mixtral / llama other FREE translation modules to translate your json/yaml files into other lang…...
大模型学习笔记——SAM模型:从Prompt到分割的通用视觉框架
1. SAM模型:当视觉分割遇上NLP提示工程 第一次接触SAM模型时,我正被传统图像分割项目折磨得焦头烂额。需要为每个新场景重新标注数据、调整模型参数的日子,直到遇见这个"分割一切"的视觉大模型才彻底改变。SAM(Segment …...
开发实战:asp.net core + ef core 实现动态可扩展的分页方案
统一请求参数先定义一个公共的 QueryParameters 解决这个问题:public class QueryParameters{private const int MaxPageSize 100;private int _pageSize 10;public int PageNumber { get; set; } 1;// 限制最大值,防止前端传一个很大数值把数据库搞崩…...
GLM-4.1V-9B-Base部署实战:GPU节点资源隔离与QoS保障配置
GLM-4.1V-9B-Base部署实战:GPU节点资源隔离与QoS保障配置 1. 模型概述 GLM-4.1V-9B-Base是智谱开源的一款视觉多模态理解模型,专注于图像内容识别与中文视觉理解任务。该模型采用9B参数规模设计,在保持较高推理效率的同时,能够完…...
5步打造Xbox 360游戏PC运行环境:Xenia Canary模拟器全攻略
5步打造Xbox 360游戏PC运行环境:Xenia Canary模拟器全攻略 【免费下载链接】xenia-canary Xbox 360 Emulator Research Project 项目地址: https://gitcode.com/gh_mirrors/xe/xenia-canary Xenia Canary作为领先的Xbox 360开源模拟器,通过精准的…...
金融C++内存池测试必须绕开的7个反模式,92%的量化团队仍在踩坑!
第一章:金融C内存池测试的底层逻辑与行业特殊性金融系统对低延迟、高确定性及零内存碎片的严苛要求,使内存池(Memory Pool)成为高频交易、做市引擎与风控模块中不可或缺的基础设施。与通用堆分配器不同,金融C内存池的设…...
企业内部培训,适合用教学云桌面吗?
企业内部培训常面临环境部署繁琐、运维压力大、设备资源固化、数据安全难控等问题,教学云桌面凭借集中化管理与弹性资源配置,成为不少企业的选型方向。结合实际应用与技术特性来看,教学云桌面适配企业培训场景,且能系统性解决传统…...
ai赋能教学:让快马智能体带你通关mysql安装,实时解答所有疑惑
最近在准备MySQL数据库的课程教学资料时,发现很多学生在安装环节就会遇到各种问题。传统的静态教程很难覆盖所有可能的情况,于是尝试用AI技术做了一个智能辅导应用,效果出乎意料的好。这里分享下实现思路和具体功能设计。 智能问答模块 这是最…...
OpenDrop用户画像分析:揭秘不同用户群体的文件传输习惯与使用场景
OpenDrop用户画像分析:揭秘不同用户群体的文件传输习惯与使用场景 【免费下载链接】opendrop An open Apple AirDrop implementation written in Python 项目地址: https://gitcode.com/gh_mirrors/op/opendrop OpenDrop是一个开源Apple AirDrop实现…...
