问题很简单, 一个业务由于 MySQL 主从同步延迟导致读取的数据有问题. 问题解决了, 但如何在 AWS RDS 中获取 MySQL 的延迟信息呢? 非 AWS RDS 的传统 MySQL 中, 可以直接连到 server 通过 SHOW SLAVE STATUS 获取延迟信息.
RDS 呢?
AWS 中大多数(我也不确定是不是所有服务)都接入了 Cloudwatch. Cloudwatch 的好处就是可以作为一个中间层抽象, 将不同系统的数据抽象成一个模型, 统一通过 Cloudwatch API 访问. 就拿主从延迟来说, MySQL/MariaDB 和 PostgeSQL 的计算方法显然是不一样的:
因此, 只要通过 Cloudwatch API 获取 ReplicaLag 这个 metric 的值就可以判断主从同步延迟, 不管是哪种 DB
看上去挺简单的 API, 还是需要"进城手册", 避免挠头:
由于 Cloudwatch 支持的最细颗粒度的 metric 是1分钟, 因此仅仅获取前一分钟的数据可能会有 Cloudwatch 数据还未抓取到的问题.
建议是获取前一段时间(比如10分钟)的数据, 确保前10分钟的 ReplicaLag 都为0(或者小于一个可以接受的值), 则认为现在的状态是满足数据需求的.
MySQL 主从同步从入行就知道是需要重点关注的, 结果还是忽略了一下就掉坑里了. AWS Cloudwatch 也支持根据 ReplicaLag 的值直接告警的, 建议一定要设置一个.
AWS即Amazon Web Services,是亚马逊(Amazon)公司的云计算IaaS和PaaS平台服务。AWS面向用户提供包括d性计算、存储、资料库、应用程式在内的一整套云计算服务,能够帮助企业降低IT投入成本和维护成本。
AWS提供了一整套基础设施和应用程式服务,使几乎能够在云中运行一切应用程式:从企业应用程式和大数据项目,到社交游戏和移动应用程式。
基本介绍中文名 :aws 外文名 :Amazon Web Services 程式类别 :应用程式 项目基础 :大数据项目 官网 ::aws.amazon// 服务介绍,分类,竞争对手,存储辞汇表, 服务介绍 很多公司选择AWS作为其IT解决方案,AWS有很多云服务,以下介绍AWS中几类比较重要的服务。 分类 计算类: EC2(Elastic Compute Cloud) 是一种d性云计算服务,可为用户提供d性可变的计算容量,通常用户可以创建和管理多个虚拟机,在虚拟机上部署自己的业务,虚拟机的计算能力(CPU、记忆体等)可以根据业务需求随时调整。 Elastic IP Addresses(d性IP位址) – d性IP位址是为动态云计算设计的静态IP位址。一个d性IP位址是和你的账户相关,而不是和你的一个特定实例相关。不像传统的静态IP位址,d性IP位址可以通过重新匹配你的共有IP位址到你账户任意的实例,从而让你可以忽略实例或者可用区域的错误。 连线本质上是通过NAT1:1的匹配每个Elastic IP和Private IP。 Elastic MapReduce :EMR采用运行在亚马逊EC2和S3的托管Hadoop框架上。以立即获得满足需要的计算能力,例如网页索引、数据挖掘等数据密集型任务,轻松、经济地处理海量数据,不用担心对Hadoop集群耗时的设定、管理或调优。 AS(Auto Scaling)自动伸缩服务 :允许用户根据需要控制亚马逊EC2自动扩大或减小计算能力。用户利用AS可以无缝地增加EC2的实例数量,以保证使用高峰期的性能,也可以在需求停滞时自动减少以降低成本。AS特别适合那些需求按小时、天或周规律变化的应用程式。 AS由亚马逊CloudWatch控制,并且用户不必支付CloudWatch以外的其他服务费用。 ELB (Elastic Load Balancing)d性负载平衡 :自动将入口流量分配到多个亚马逊EC2实例上。d性负载平衡在实例池中不断检测不正常的实例,并自动引导路由流量到正常的实例上,直到不正常的实例恢复正常。客户可以在单一的数据中心进行负载平衡,更可以在跨中心的套用上获得相同的功能。 兼容IPv6,数据来自于CloudWatch 部署&管理类:ACW (Amazon CloudWatch)云监控服务: 监控亚马逊自身提供的云资源以及在云上运行的应用程式。提供可视化监测,并且可以利用API调用进一步处理监控的数据。 Amazon WorkSpaces: 是一种虚拟桌面服务,托管在Amazon的云中。用户可以选择任何终端设备(如笔记本电脑、iPad、Kindle Fire或Android平板电脑)访问 Amazon WorkSpaces,获得与传统办公桌面一样的使用体验,更能享受节约设备成本、保证个人数据安全、随时随地办公等便利。 网路类:
R53(Amazon Route 53)亚马逊53号路由: Domain Name System web service(网路域名服务)。提供从基础设施(EC2实例,ELB,或者S3)到IP位址的映射。 VPC (Virtual Private Cloud)虚拟私有云: 在亚马逊公有云之上创建一个私有的,隔离的云。可以像在自己的数据中心一样定义VPC的拓扑结构。可以和公司现有的数据中心互通。可以利用NAT使得子网不暴漏区域网路IP,公用一个IP位址与外界通讯。通过NAT设定访问控制,保护数据安全性。 存储类: S3 (Simple Storage Service) : 亚马逊简单存储服务(S3)是一种网路存储服务,可为用户提供持久性、高可用性的存储。用户可以将本地存储迁移到Amazon S3,利用 Amazon S3 的扩展性和按使用付费的优势,应对业务规模扩大而增加的存储需求,使可伸缩的网路计算更易于开发。 EBS (Elastic Block Store)d性数据块存储: EBS卷是独立于实例的存储,可作为一个设备动态连线到运行着的亚马逊EC2实例上。EBS特别适合于单独需要一个资料库、档案系统、或访问原始块存储的应用程式。 套用服务类: SQS (Simple Queue Service)简单讯息伫列服务: 提供讯息存储伫列,使讯息可以在计算机之间传递,在执行不同任务的分散式套用组件之间轻松的转移数据,既不会丢失信息,也不要求每个组件都保持可用。SQS可以与亚马逊EC2和其他AWS的基础设施网路服务紧密结合在一起,方便地建立自动化的工作流程。SQS以网路服务的形式运行,对外发布一个web讯息框架。Inter中任何计算机都可以添加或阅读讯息,而不必安装任何软体或配置特殊的防火墙。使用SQS的套用组件可以独立运行,不需要在同一网路中使用相同的技术开发,也不必在同一时间运行。 SNS (Simple Notification Service)简单通知服务: 在云中安装、处理或传送通知。它为开发人员提供了一种从应用程式发布讯息,并立即传送给订阅者或其他应用程式的能力,用于创建通知某应用程式(或客户)某方面的主题。客户订阅这些主题,并使用客户选定的通信协定(例如,HTTP,电子邮件等)发布讯息。亚马逊SNS的潜在用途包括监控,工作流系统,时间敏感的信息更新,移动套用等等。 资料库类: SDB (Amazon SimpleDB)简单资料库: 非关系型数据存储服务 RDS (Relational Database Service): 是一种基于云的关系型资料库服务,用户可以在云中配置、 *** 作和扩展关系资料库。Amazon RDS 支持 MySQL、Oracle、Microsoft SQL Server 或 PostgreSQL 等关系型资料库。用户无需本地维护资料库,由Amazon RDS为用户管理。 支付类: FPS (Flexible Payments Service)灵活支付服务
ADP (Amazon DevPay)亚马逊支付设计 内容交付类: CloudFront 云前 :整合亚马逊其他云服务产品,完成高效快速的分散式内容互动。 人工服务类: AMT (Amazon Mechanical Turk)机械的土耳其人: “机械的土耳其人”一词来源:这个名字源自于臭名远扬的能下象棋的“自动装置”,它是匈牙利男爵沃尔夫冈·冯·肯佩伦(Wolfgang Von Kempelen)1770年建造的。这个木制机器外形像一个坐在大机箱前的土耳其魔法师,它能自动而快速地下象棋,用复杂的齿轮和杠杆系统来移动棋子。在维也纳皇宫的首次表演中,它就迅速击败了对手Cobenzl伯爵,让在场的皇室成员看得十分高兴。从此关于这个惊人聪明的机器人迅速闻名于世,于是肯佩伦带着它在欧洲各地表演,击败了一系列著名的挑战者,包括拿破仑和班杰明·富兰克林。直到几年之后,这个骗局才被揭穿。原来机箱里藏了一名象棋大师,他用一个磁铁系统来跟踪对手的举动并移动自己的棋子,这个人实际是在 模拟一种人工智慧 。 虽然计算技术不断发展,但仍有很多事情人类做的比计算机更有效,比如确定照片或视频中的对象,执行重复数据的删除,抄录音频资料或研究数据的细节。一般来说,完成这样的任务通常需要雇用大量临时工人(这是耗时、昂贵和难以企及的),或者干脆没法完成。 亚马逊机械的土耳其人(AMT)完成的是一种类似模拟人工智慧的业务,它把人“藏”在一个软体程式中,用他们执行电脑不太善于完成的任务。例如假设程式设计师在写一个套用软体程式,其中有一个步骤是识别数字照片中的建筑物——这个任务会让电脑为难,但由人去做却很容易。这位程式设计师在用AMT服务时,可以编写几行简单的原始码,从而获取必要的情报。在该程式运行到某个指定时刻,在亚马逊公司的Turk网站上会自动贴出一个关于“由人执行任务”的要求,而人们会争着完成这项任务,以换取程式设计师设定的报酬。依据亚马逊公司在其网站上的解释,AMT表明人与电脑之间不寻常的颠倒关系:“当我们想到人与电脑的接口时,我们通常认为人是提出要完成的任务的一方,而电脑是完成运算任务并提供结果的一方。假使这个过程倒过来,由电脑程式要求人完成这个任务并返回结果,那又会如何呢?Mechanical Turk就是这么做的,它把人的行为和判断变成了软体程式中的功能。不是电脑为我们工作,而是我们为电脑工作。" 基于以上的d性计算、存储、资料库、应用程式服务组合,AWS可以为企业提供完整的IT业务解决方案。最关键的是,AWS是按需使用、即用即付的模式,能够灵活应对企业快速多变的IT需求。 竞争对手 AWS目录服务 vs. Azure AD
亚马逊的最新目录服务和Azure AD(微软的云目录)展开竞争。Azure AD能够很好地与其他Windows产品协同工作。单点登录功能意味着用户登录一次就可获得支持AD的套用的许可。 相比亚马逊的服务,微软的服务产品还更好地集成了第三方工具,例如Salesforce和Box。因为微软的目录服务是很早就出现的功能,能够与更多的管理工具集成。 亚马逊一直在努力向企业领域发展。新目录填补了明显的空白,帮助企业更有效地连线AWS和微软。虽然亚马逊的云目录达不到微软目录的当前水平,但随着云市场的继续发展预计将获得更多的功能。 存储辞汇表 AWS数据存储服务辞汇表 Aurora: 亚马逊Aurora是一个与MySQL兼容的关系型资料库,而MySQL是一个从结构化查询语言(SQL)衍生出来的流行开源资料库管理系统。用户可以通过亚马逊关系型资料库服务来管理Aurora的配置、打补丁、备份和恢复等。Aurora可自动扩展,可对传输过程中的数据进行加密。 资料库迁移服务:AWS资料库迁移服务可让企业用户在不同云之间或内部资源之间进行资料库迁移。资料库迁移服务不仅可作为AWS云的一个网关,它还允许非AWS资料库之间的同质迁移,并支持大部分的常用资料库。在迁移过程中,源资料库可保持正常运行,从而减少了停机时间。 DynamoDB: 亚马逊DynamoDB是一个专为满足低延迟和高可扩展性需求而设计的托管NoSQL资料库服务。DynamoDB支持文档和key-value存储模式。其高性能和灵活性特点令其特别适合于移动、网路、游戏以及物联网等套用。 ElastiCache:亚马逊ElastiCache是一个AWS托管的快取服务,它遵循开源Memcached系统,可减轻资料库运行负载和加快套用运行。 d性块存储(EBS):亚马逊d性块存储可用于d性计算云(EC2)实例的高可用性块级存储系统。它最适用于存储永久型数据,而不是动态数据。AWS用户可以先选择一个EBS存储卷类型和容量,然后将其连线到一个EC2实例。存储卷的副本可以保存为快照。 Glacier:亚马逊Glacier是一个“冷”存储服务,它可存储不常被访问的数据,从而作为其他AWS数据存储选项的一个更廉价的替代存储选项。 Import/Export Snowball:亚马逊Import/Export Snowball是一种物理传输设备。AWS可使用它来存储内部的海量数据。然后,AWS在用户返回该设备后可导入数据。反之,该设备也可用于AWS向用户导出数据。Snowball存储设备最多可传输50TB数据。 Redshift:亚马逊Redshift是一个完全托管的AWS数据仓库。Redshift可连线基于SQL的客户端和商业智慧型工具。Redshift提供快速的查询与I/O性能,这使得它特别适用于大数据分析套用。 关系型资料库服务(RDS):亚马逊RDS提供了多种资料库引擎选项以帮助用户对关系型资料库进行迁移、备份和恢复等 *** 作。使用中的代码和应用程式以及现有资料库都转移至RDS。RDS可自动完成打补丁和资料库软体备份以便数据恢复。 简单存储服务(S3):亚马逊S3是一个可扩展的对象存储服务。AWS用户可以通过网路接口在网路的任意位置存储和检索数据,且只需为所使用的存储资源支付费用。S3提供了多个存储类,并可与各种亚马逊云服务协同运行。 存储网关:AWS存储网关连线了本地设备和基于AWS的存储资源,这使用户能够充分利用云的可扩展性和价格优势,同时还能继续运行本地工作负载。
MongoDB和MySQL分别是领先的开源NoSQL和关系数据库。哪个最适合您的应用程序?
在1990年代的互联网泡沫时期,用于Web应用程序的一种通用软件堆栈是LAMP,它最初代表Linux(OS),Apache(Web服务器),MySQL(关系数据库)和PHP(服务器编程语言)。MySQL是首选的数据库,主要是因为它是免费的开源代码,并且具有良好的读取性能,非常适合从数据库动态生成网站的“ Web 2.0”应用程序。
之后,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Node.js(后端JavaScript运行时)的MEAN堆栈开始流行。除其他原因外,MEAN堆栈很有吸引力,因为您需要了解的唯一语言是JavaScript。与等效的LAMP堆栈相比,它还需要更少的RAM。
MySQL AB的Monty Widenius和David Axmark最初于1994年开始开发MySQL。产品名称中的“ My”是指Widenius的女儿,而不是英语单词“ my”。MySQL旨在与mSQL(又名Mini)兼容。 SQL),并添加了SQL查询层和开放源代码许可(实际上是专有和GPL双重许可)。MySQL的公共发行版于1996年底开始,并且每年或每两年持续发行一次。MySQL是当前最受欢迎的关系数据库。
Sun Microsystems于2008年以10亿美元的价格收购了MySQL AB,Oracle于2010年收购了Sun。在Oracle收购MySQL的广泛关注中,Widenius在收购Oracle之前就将MySQL 5.5合并到了MariaDB中。MariaDB努力维护与Oracle MySQL版本的兼容性。
与功能更强大的商业关系数据库(例如Oracle数据库,IBM DB / 2和Microsoft SQL Server)相比,MySQL最初是一个相当低端的关系数据库,尽管它足以成为动态网站的后备存储。多年来,它增加了您希望从关系数据库获得的大多数功能,包括事务,参照完整性约束,存储过程,游标,全文索引和搜索,地理索引和搜索以及群集。
尽管MySQL现在支持“大数据库”功能,例如主从部署,与Memcached一起使用以及水平分片,但它仍通常用于中小型部署。将MySQL扩展到多个从属服务器可以提高读取性能,但是只有主服务器才能接受写请求。
AWS提供了两种形式的MySQL即服务,即Amazon RDS和Amazon Aurora。后者具有更高的性能,可以处理TB级的数据,更新副本的延迟时间更短,并且可以直接与Oracle数据库和SQL Server竞争。
MongoDB是高度可伸缩的 *** 作文档数据库,可在开源版本和商业企业版本中使用,它可以在本地运行或作为托管云服务运行。托管云服务称为MongoDB Atlas。
MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员提供了极大的灵活性,而其分布式体系结构则提供了很好的可伸缩性。因此,通常选择MongoDB用于必须管理大量数据,得益于水平可伸缩性并处理不适合关系模型的数据结构的应用程序。
MongoDB是一个基于文档的存储,在其之上还具有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(二进制JSON),该扩展了JSON表示(字符串)以包括其他类型,例如int,long,date,浮点,decimal128和地理空间坐标。
MongoDB可以使用数据的类型生成正确的索引类型,从而在数据的单个副本上生成多模式图形,地理空间,B树和全文本索引。MongoDB使您可以在任何文档字段上创建索引。MongoDB 4具有多文档事务,这意味着即使必须标准化数据设计,您仍然可以获得ACID属性。
默认情况下,MongoDB使用动态模式,有时称为无模式。单个集合中的文档不需要具有相同的字段集,并且字段的数据类型可以在集合中的不同文档之间有所不同。您可以随时使用动态模式更改文档结构。
但是,可以使用架构治理。从MongoDB 3.6开始,MongoDB支持JSON模式验证,您可以在验证器表达式中将其打开。
在LAMP和MEAN堆栈上存在很多变化。例如,您可以在Windows(WAMP)或MacOS(MAMP)上运行而不是Linux OS。您可以运行IIS(WIMP),而不是Windows上的Apache Web服务器。
您可以运行PostgreSQL或SQL Server,而不是LAMP堆栈中的MySQL关系数据库。如果您需要全球分布,则可以运行CockroachDB或Google Cloud Spanner。可以使用Perl或Python代替PHP语言。如果要使用Java或C#进行编码,则需要考虑单独的堆栈系列。
您可以运行Couchbase或Azure Cosmos DB以获得更好的全局分布,而不是MEAN堆栈中的MongoDB文档数据库。可以使用十二个Node.js Web服务器框架中的任何一个来代替Express 。除了AngularJS前端框架,您还可以运行Angular 2或React。
选择数据库时要问的最重要的问题是:
这些问题中的几个会趋于缩小数据库的选择范围,但是与制定LAMP堆栈时相比,我们有更多选择。如果您要构建一个应用程序,并且该应用程序必须在99.999%的时间内对全世界的用户都具有高度的一致性,那么只有少数几个数据库适合您。如果您的应用程序将在工作日的上午9点至下午6点在一个国家/地区使用,并且可以容忍最终的一致性,那么几乎所有数据库都可以使用,尽管某些数据库对于开发人员和 *** 作员而言更容易,而某些数据库则可以为您的主要使用场景提供更好的性能。
虽然LAMP和MEAN堆栈一次是Web应用程序的良好解决方案,但现在都不是最佳选择。而不是盲目采用任何一种,您应该仔细考虑用例,并找到一种可在可预见的将来为您的应用程序服务的体系结构。
您什么时候需要关系数据库(例如MySQL)用于新应用程序?除了对标准SQL的明显支持外,关系数据库本身将数据强制为具有一致的强类型字段的表格模式,并且只要您利用规范化就可以帮助您避免数据重复。
另一方面,如果您还需要偶尔的自由格式文档,则MySQL和许多其他关系数据库也支持RFC 7159定义的JSON数据。如果您还想使用XML文档和XPath或XSLT,则大多数关系数据库都可以提供这种能力。
您何时需要像MongoDB这样的文档数据库?如果您的主要用例需要允许使用自由格式的数据,在文档之间更改类型的字段,随时间变化的架构或嵌套的文档,则NoSQL数据库将满足要求。另外,如果您的应用程序是用JavaScript编写的,那么文档数据库的JSON格式将很自然。
作者: Martin Heller是InfoWorld的特约编辑和审稿人。他曾担任Web和Windows编程顾问,从1986年至2010年开发数据库,软件和网站。最近,他担任Alpha Software技术和教育副总裁以及Tubifi董事长兼首席执行官。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)