林子雨 大数据技术原理与应用-第6章 云数据库


第6章 云数据库

云数据库概述

云计算是云数据库兴起的基础

image-20230302204336773

云数据库概念

image-20230302204509707
1
云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。

云数据库的特性

1
2
3
4
5
6
7
(1)动态可扩展
(2)高可用性
(3)较低的使用代价
(4)易用性
(5)高性能
(6)免维护
(7)安全
image-20230302204851887

云数据库是个性化数据存储需求的理想选择

1
2
3
4
5
6
7
8
企业类型不同,对于存储的需求也千差万别,而云数据库可以很好地满足不同企业的个性化存储需求:
•首先,云数据库可以满足大企业的海量数据存储需求
•其次,云数据库可以满足中小企业的低成本数据存储需求
•另外,云数据库可以满足企业动态变化的数据存储需求

到底选择自建数据库还是选择云数据库,取决于企业自身的具体需求
•对于一些大型企业,目前通常采用自建数据库
•对于一些财力有限的中小企业而言,IT预算比较有限,云数据库这种前期零投入、后期免维护的数据库服务,可以很好满足它们的需求

云数据库与其他数据库的关系

1
2
3
4
•从数据模型的角度来说,云数据库并非一种全新的数据库技术,而只是以服务的方式提供数据库功能
•云数据库并没有专属于自己的数据模型,云数据库所采用的数据模型可以是关系数据库所使用的关系模型(微软的SQL Azure云数据库、阿里云RDS都采用了关系模型),也可以是NoSQL数据库所使用的非关系模型(Amazon Dynamo云数据库采用的是“键/值”存储)
•同一个公司也可能提供采用不同数据模型的多种云数据库服务
•许多公司在开发云数据库时,后端数据库都是直接使用现有的各种关系数据库或NoSQL数据库产品
image-20230302205402630

云数据库产品

云数据库厂商概述

image-20230302205607114

Amazon的云数据库产品

1
2
3
4
5
6
7
Amazon是云数据库市场的先行者。Amazon除了提供著名的S3
存储服务和EC2计算服务以外,还提供基于云的数据库服务:
•Amazon RDS:云中的关系数据库
•Amazon SimpleDB:云中的键值数据库
•Amazon DynamoDB:云中的NoSQL数据库
•Amazon Redshift:云中的数据仓库
•Amazon ElastiCache:云中的分布式内存缓存

Google的云数据库产品

1
2
3
4
5
•Google Cloud SQL是谷歌公司推出的基于MySQL的云数据库
•使用Cloud SQL,所有的事务都在云中,并由谷歌管理,用户不需要配置或者排查错误
•谷歌还提供导入或导出服务,方便用户将数据库带进或带出云
•谷歌使用用户非常熟悉的MySQL,带有JDBC支持(适用于基于Java的App Engine应用)和DB-API支持(适用于基于Python的App Engine应用)的传统MySQL数据库环境,因此,多数应用程序不需过多调试即可运行,数据格式对于大多数开发者和管理员来说也是非常熟悉的
•Google Cloud SQL还有一个好处就是与Google App Engine集成

Microsoft的云数据库产品

1
2
3
4
5
SQL Azure具有以下特性:
•属于关系型数据库:支持使用TSQL(Transact Structured Query Language)来管理、创建和操作云数据库
•支持存储过程:它的数据类型、存储过程和传统的SQL Server具有很大的相似性,因此,应用可以在本地进行开发,然后部署到云平台上
•支持大量数据类型:包含了几乎所有典型的SQL Server 2008的数据类型
•支持云中的事务:支持局部事务,但是不支持分布式事务

其他云数据库产品

云数据库系统架构

1
UMP(Unified MySQL Platform)是由阿里集团核心系统数据库团队设计与实现的,提供低成本和高性能的MySQL云数据服务。

UMP系统概述

1
2
3
4
5
6
•UMP系统是低成本和高性能的MySQL云数据库方案
总的来说,UMP系统架构设计遵循了以下原则:
•保持单一的系统对外入口,并且为系统内部维护单一的资源池
•消除单点故障,保证服务的高可用性
•保证系统具有良好的可伸缩,能够动态地增加、删减计算与存储节点
•保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离,确保应用和数据安全

UMP系统架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UMP系统中的角 LVS 色包括:
•Controller服务器
•Proxy服务器
•Agent服务器
•Web控制台
•日志分析服务器
•信息统计服务器
•愚公系统

依赖的开源组件包括:
•Mnesia
•LVS
•RabbitMQ
•ZooKeeper
image-20230302210343710

Mnesia

1
2
3
4
•Mnesia是一个分布式数据库管理系统
•Mnesia支持事务,支持透明的数据分片,利用两阶段锁实现分布式事务,可以线性扩展到至少50个节点
•Mnesia的数据库模式(schema)可在运行时动态重配置,表能被迁移或复制到多个节点来改进容错性
•Mnesia的这些特性,使其在开发云数据库时被用来提供分布式数据库服务

RabbitMQ

1
2
•RabbitMQ是一个工业级的消息队列产品(功能类似于IBM公司的消息队列产品IBM Websphere MQ),作为消息传输中间件来使用,可以实现可靠的消息传送
•UMP集群中各个节点之间的通信,不需要建立专门的连接,都是通过读写队列消息来实现的

Zookeeper

1
2
3
4
5
6
Zookeeper是高效和可靠的协同工作系统,提供分布式锁之类的基本服务(比如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等),用于构建分布式应用,减轻分布式应用程序所承担的协调任务

在UMP系统中,Zookeeper主要发挥三个作用:
•作为全局的配置服务器
•提供分布式锁(选出一个集群的“总管”)
•监控所有MySQL实例

LVS

1
2
3
4
5
•LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统
•UMP系统借助于LVS来实现集群内部的负载均衡
•LVS集群采用IP负载均衡技术和基于内容请求分发技术
•调度器是LVS集群系统的唯一入口点,调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器
•整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序

Controller服务器

1
2
3
4
•Controller服务器向UMP集群提供各种管理服务,实现集群成员管理、元数据存储、MySQL实例管理、故障恢复、备份、迁移、扩容等功能
•Controller服务器上运行了一组Mnesia分布式数据库服务,其中存储了各种系统元数据,主要包括集群成员、用户的配置和状态信息,以及用户名到后端MySQL实例地址的映射关系(或称为“路由表”)等
•当其它服务器组件需要获取用户数据时,可以向Controller服务器发送请求获取数据
•为了避免单点故障,保证系统的高可用性,UMP系统中部署了多台Controller服务器,然后,由Zookeeper的分布式锁功能来帮助选出一个“总管”,负责各种系统任务的调度和监控

Web控制台

1
Web控制台向用户提供系统管理界面

Proxy服务器

1
2
Proxy服务器向用户提供访问MySQL数据库的服务,它完全实现了MySQL协议,用户可以使用已有的MySQL客户端连接到Proxy服务器,Proxy服务器通过用户名获取到用户的认证信息、资源配额的限制(例如QPS、IOPS(I/O Per Second)、最大连接数等),以及后台MySQL实例的地址,然后,用户的SQL查询请求会被转发到相应的MySQL实例上。
除了数据路由的基本功能外,Proxy服务器中还实现了很多重要的功能,主要包括屏蔽MySQL实例故障、读写分离、分库分表、资源隔离、记录用户访问日志等

Agent服务器

1
Agent服务器部署在运行MySQL进程的机器上,用来管理每台物理机上的MySQL实例,执行主从切换、创建、删除、备份、迁移等操作,同时,还负责收集和分析MySQL进程的统计信息、慢查询日志(Slow Query Log)和bin-log

日志分析服务器

1
日志分析服务器存储和分析Proxy服务器传入的用户访问日志,并支持实时查询一段时间内的慢日志和统计报表

信息统计服务器

1
信息统计服务器定期将采集到的用户的连接数、QPS数值以及MySQL实例的进程状态用RRDtool进行统计,可以在 Web界面上可视化展示统计结果,也可以把统计结果作为今后实现弹性的资源分配和自动化的MySQL实例迁移的依据

愚公系统

1
愚公系统是一个全量复制结合bin-log分析进行增量复制的工具,可以实现在不停机的情况下动态扩容、缩容和迁移

UMP系统功能

Amazon AWS和云数据库

微软云数据库SQL Azure

云数据库实践

阿里云RDS简介

RDS中的概念

1
2
3
4
RDS实例,是用户购买RDS服务的基本单位。在实例中:
• 可以创建多个数据库
• 可以使用常见的数据库客户端连接、管理及使用数据
• 可以通过RDS管理控制台或OPEN API来创建、修改和删除数据库
1
2
3
 RDS数据库,是用户在一个实例下创建的逻辑单元
• 一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例下的资源,如CPU、内存、磁盘容量等
• RDS不支持使用标准的SQL语句或客户端工具创建数据库,必须使用OPEN API或RDS管理控制台进行操作
1
2
 地域指的是用户所购买的RDS实例的服务器所处的地理位置RDS目前支持杭州、青岛、北京、深圳和香港五个地域,服务品质完全相同。用户可以在购买RDS实例时指定地域,购买实例后暂不支持更改
 RDS可用区是指在同一地域下,电力、网络隔离的物理区域,可用区之间内网互通,可用区内网络延时更小,不同可用区之间故障隔离
1
2
3
RDS可用区又分为单可用区和多可用区
• 单可用区是指RDS实例的主备节点位于相同的可用区,它可以有效控制云产品间的网络延迟
• 多可用区是指RDS实例的主备节点位于不同的可用区,当主节点所在可用区出现故障(如机房断电等),RDS进行主备切换后,会切换到备节点所在的可用区继续提供服务。多可用区的RDS轻松实现了同城容灾
1
2
3
4
 磁盘容量是用户购买RDS实例时,所选择购买的磁盘大小实例所占用的磁盘容量,除了存储表格数据外,还有实例正常运行所需要的空间,如系统数据库、数据库回滚日志、重做日志、索引等
 RDS连接数,是应用程序可以同时连接到RDS实例的连接数量
• 任意连接到RDS实例的连接均计算在内,与应用程序或者网站能够支持的最大用户数无关
• 用户在购买RDS实例时所选择的内存大小决定了该实例的最大连接数

购买和使用RDS数据库

购买RDS实例

1
2
3
4
5
6
进入RDS页面后,点击“立即购买”,即
可跳到下图的购买页面
如果已经购买阿里云服务器ECS(Elastic
Compute Service),若选择和ECS所在地
域相同,ECS和RDS之间可以以内网方式
访问

image-20230303134824745

管理RDS

1
购买RDS实例成功后,可以通过管理控制台,查看已开通的产品与服务。点击云数据库RDS 进入管理界面如下图。我们可以创建新实例、对已购买实例进行管理、续费和升级操作

image-20230303135035722

管理RDS实例

1
2
3
4
•点击已购买RDS实例的管理操作,可以查看该实例
的基本信息如下图
• 一个实例可以创建多个数据库,在实例内数据库
命名唯一,所有数据库都会共享该实例下的资源
image-20230303135228962

新建RDS账号

1
2
3
• 点击“创建新账号”按钮后,可创建新的RDS账号,并选定需绑定的数据库,以及输入账号密码和账号类型(读写权限)等信息
• MySQL实例支持最多创建50个账号,SQL Server实例支持最多创建20个账号
• 创建完RDS账号后,还可以对RDS账号进行重置密码和修改操作

新建RDS数据库

1
2
3
• 点击“数据库管理”按钮后,可查看数据库基本信息,并可对数据库进行创建、删除(需至少有1个数据库)的操作
• 点击“增加数据库”后,在弹出的界面中填写数据库相关信息,提交后即可生效
• 此外,RDS数据库还可以是自建数据库迁移来的或是从其他RDS实例中迁入的

连接RDS数据库

1
2
3
• 如果是在阿里云服务器ECS上连接RDS数据库,就选择内网模式;
• 如果是在其他服务器上连接RDS使用,就选择外网模式,在控制台的右上角有切换方式
• 从本地对云端的RDS数据库进行远程访问时使用外网模式,需要在“安全控制->白名单设置”位置填入本地机器的外网IP,从而让RDS数据库允许我们的本地机器访问
1
2
3
4
5
6
 使用客户端MySQL-Front 访问
 使用数据库管理工具Navicat_MySQL
 使用MySQL命令登录
命令格式如下:
mysql -u user_name -h yuqianli.mysql.rds.aliyuncs.com -P3306 -pxxxx
 使用阿里云控制台iDB Cloud访问
image-20230303140131813
1
RDS连接地址以及端口不需要再输入,只需在“用户名”中输入数据库的账号,在“密码”栏中输入数据库账号的密码,便可以登录RDS。

操作RDS数据库

1
2
3
4
5
6
7
• 连接RDS数据库后,对数据库的操作与直接对本机MySQL数据库操作无异。iDB Cloud登录数据库后的界面如下图所示:
• 在“iDB Cloud登录数据库界面”(如右图)
的顶端可以看到iDB Cloud提供以下三种创建
表的方法:
可视化界面
SQL窗口
命令窗口

image-20230303140347992

将本地数据库迁移到云端RDS数据库

1
2
3
4
• 假设我们有一个本地应用程序,它使用本地的MySQL数据库存取和管理数据。现在,我们打算把本地MySQL数据库中的数据全部迁移到远程的阿里云RDS数据库中,本地应用程序不迁移(依然运行在本地),但是,我们希望本地应用程序使用云端的RDS数据库服务进行数据存取和管
理。为此,需要执行以下两步操作:
第一步:把本地数据库迁移到云端的RDS数据库
第二步:修改本地应用程序配置,使用RDS数据库服务

如何把本地数据库迁移到云端的RDS数据库?

1
2
3
4
第1步:在本地数据库中创建一个迁移账号
第2步:设置迁移账号权限
第3步:确认本地数据库中的配置文件是否正确,需要确认本地数据
库中的MySQL配置文件my.cnf

image-20230303140559230

1
2
第4步:登录本地数据库,通过命令查看是否为“ROW”模式
第5步:在RDS管理控制台对应的实例页面,点击“将数据迁移至RDS”按钮,在弹出的页面中,填写待迁移的本地数据库连接地址、数据库连接端口、数据库账号、数据库密码,即可完成从本地迁移到云端

本文标题:林子雨 大数据技术原理与应用-第6章 云数据库

文章作者:TTYONG

发布时间:2023年02月28日 - 22:02

最后更新:2023年03月03日 - 14:03

原始链接:http://tianyong.fun/%E6%9E%97%E5%AD%90%E9%9B%A8-%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E5%8E%9F%E7%90%86%E4%B8%8E%E5%BA%94%E7%94%A8-%E7%AC%AC6%E7%AB%A0-%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93.html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%