技术那么多 我想去学学 (记数据库运维技术体系)

前言

上一次写博客还是五年前的事前了,现在想想还是得勤动笔,技术才能进步得快。 之前虽然断断续续写 过一些,但实在是觉得自己东西学得浅薄,总结也不深入,写出来怕误导大众,遂封博客,仅做笔记。 现在感觉技术又已经到了一个瓶颈期,很多东西学过了但没有很好的去总结过, 脑中的知识不成体系。又觉写写博客不仅可以将自己脑中零碎的知识做做碎片整理,加深理解,公之于众既能惠及他人也能对自己起到鞭策的作用,遂又提笔。

开笔第一篇,对自己所知所闻的数据库相关产品和技术简单归纳整理,做个知识地图,方便后续按图索骥。

数据库运维技术生态简图

近些年 MySQL中间件、NoSQL、分布式数据库如雨后春笋一般崛起,各大企业也纷纷拥抱新技术,转型升级。做为一个 DBA,要想不被淘汰,只得保持不停的学习,才能远望技术发展的“项背 ”。作者本是一名传统的Oracle DBA ,然后在去IOE的浪潮之下转战 mysql ,学习DevOPS,但还是跑得太慢被 NoSQL 、NewSQL、容器化、AI OPS等的大潮拍死在了沙滩上。 下图是作者运维生涯中接触或听闻过的相关技术(数据库为主),简单分门别类后整理成图,并希望在后续的日子里按图索骥,或涉猎或深入。愿有朝一日能学成十八般武艺,后横行数据库江湖。

在这里插入图片描述
图中仅列最流行(或本人所知)的产品,限于个人水平,此图必有许多疏漏之处,还请高人不吝赐教。

数据库运维技术生态简介

监控

  • prometheus + grafana + node-exporter
  • zabbix
  • open-falcon (小米)

开发语言和运维工具

  • shell (基础)
  • perl (这个现在也不怎么常用了,有些小工具用perl开发,懂的话更好)
  • Python + django (python最流行的web框架)
  • Golang + beeGo/ Gin /echo (go语言的web 框架)
  • C (研究源码必备)

负载均衡

  • Nginx 是一个高性能\轻量级的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
  • Haproxy 是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。特别适用于那些负载特大的web站点。
  • keepalived 作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
  • 硬件: F5 、A10 一般是厂商运维,技术产品选项的时候知道有这么个东西即可

NoSQL或内存库

  • KV型: redis 、 Pika (360基于redis改写)、Memcached
  • 文档型: MongoDB、CouchDB
  • 搜索型: ElasticSearch 、Luence (ES就是基于它)
  • 图数据库: Neo4J 、FlockDB …
  • 内存库: TimesTen (O记出品,和oracle 紧密结合,支持SQL,支持事务;速度大约是oracle 的10倍)

大数据

  • hadoop生态圈 HDFS(文件系统)、Hive、Hbase、 Spark (也有一个自己的生态圈)
  • 分布式&列式: GreenPlum(基于PG)、prestoDB(谷歌开源) 、Cassandra 、Hypertable
  • 元数据管理: zookeeper 、Etcd 、Consul
  • 流式计算: flink 、storm

MySQL中间件

  • 官方系列: MySQL-proxy、mysql-Route、maxscale( MariaDB 开发)
  • **阿里系列: ** Mycat(基于cobar) 、cobar 、TDDL
  • 大厂出品: Atlas(360)、DBLE(爱可生)、Vitess (Youtube)、Shark(Kratos的前身,轻量级)
  • Apache开源: Sharding Proxy(Apache开源,ShardingSphere组件之一)
  • 个人出品: Kingshard (陈非,前360员工),oneproxy (楼方鑫 )

mysql常见架构

  • 基础解决方案: 单实例 、主从、 双主
  • 高可用解决方案: MHA 、Orchestrator 、PXC、MGR 、mysql Cluster NDB

mysql 生态常用小组件

binlog抽取: mysqlbinlog 、canal
binlog日志挖掘: myflash 、binlog2SQL
第三方管理工具: PT系列、Gh-ost
备份恢复: mysqldump \mysqlimport 、XtraBackup
压测: sysbench 、myslap

分布式数据库或NewSQL

TiDB

TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

CockRoachDB

Cockroach 是一个分布式的 SQL 数据库。首要设计目标就是 可扩展性,强一致性,可存活性,就像它的名字一样。Cockroach 的目标是在无人工干预的情况下,以极小的中断时间容忍磁盘,主机,机架甚至 数据中心灾难 。Cockroach 的节点是对等的,其中一个设计目标是以最少配置加无依赖,部署去中心化的对等节点。中文社区地址:cockroachdb-cn

PrestoDB

PrestoDB 是 Facebook 推出的一个大数据的分布式 SQL 查询引擎(Presto不是数据库,定位是查询引擎)。可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别。通过分布式查询,Presto不仅仅可以访问HDFS,也可以访问其他数据源,数据库。但是,Presto并不能用来处理在线事务

ClikHouse

ClickHouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的DBMS,简称CK, 与Hadoop, Spark相比,ClickHouse很轻量级,由俄罗斯第一大搜索引擎Yandex于2016年6月发布, 开发语言为C++
ClickHouse的特点:
开源的列存储数据库管理系统,支持线性扩展,简单方便,高可靠性,
容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别

ShardingSphere

Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这3款相互独立的产品组成。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
Sharding-JDBC
定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
Sharding-Proxy
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL版本,它可以使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等)操作数据,对DBA更加友好。
Sharding-Sidecar
定位为Kubernetes或Mesos的云原生数据库代理,以DaemonSet的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据网格。

GreenPlum

是一款基于Postgres的开源的分布式数据库存储解决方案,其主要关注在数据仓库和商业智能方面。可以在虚拟化x86服务器上运行无分享(shared-nothing)的大规模并行处理(MPP)架构。

Spanner

Spanner是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。

PolarDB

PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,目前兼容三种数据库引擎:
MySQL、PostgreSQL、高度兼容Oracle语法。 计算能力最高可扩展至1000核以上,存储容量最
高可达 100T。

OCeanBase

OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。

HybridDB

阿里自研,分为 for PostgreSQL 和 for MySQL 版本。
云数据库HybridDB for MySQL (原名PetaData)是同时支持海量数据在线事务(OLTP)和在线分析(OLAP)的HTAP(Hybrid Transaction/Analytical Processing)关系型数据库。 HybridDB for MySQL采用一份数据存储来进行OLTP和OLAP处理,解决了以往需要把一份数据进行多次复制来分别进行业务交易和数据分析的问题,极大的降低了数据存储的成本。 HybridDB for MySQL 免去了以往在线数据库(Operational Database)和离线数据仓库(Data Warehouse)之间的海量数据加载过程,极大的缩短了数据分析的延迟,使得实时分析决策系统成为可能。 HybridDB for MySQL 最大程度的兼容MySQL的语法及函数,并且增加了对部分Oracle函数的支持,从而降低了用户的开发、迁移和维护成本。

云数据库HybridDB for PostgreSQL(ApsaraDB HybridDB for PostgreSQL)是一种在线MPP大规模并行处理数据仓库服务。云数据库HybridDB for PostgreSQL基于Greenplum Database开源数据库项目,并由阿里云深度扩展,支持OSS外部表、JSON数据类型、HyperLogLog预估分析等功能特性。通过符合SQL2008标准查询语法及OLAP分析聚合函数,提供灵活的混合分析能力。支持行存储和列存储混合模式,提高分析性能,同时支持数据压缩技术,降低存储成本。并提供在线扩容、性能监测等服务,用户无需进行复杂的大规模MPP集群运维管理,让DBA、开发人员及数据分析师专注于如何通过SQL提高企业的生产力,创造核心价值。

GaussDB

GaussDB 采用 MPP(Massive Parallel Processing) 架构,支持行存储与列存储,提供 PB(Petabyte,2的50次方字节)级别数据量的处理能力。可以为超大规模数据管理提供高性价比的通用计算平台,也可用于支撑各类数据仓库系统、BI(Business Intelligence) 系统和决策支持系统,为上层应用的决策分析提供服务。
作为全球首款 AI-Native 数据库,GaussDB 首次将人工智能技术融入分布式数据库的全生命周期,实现自运维、自管理、自调优、故障自诊断和自愈。在交易、分析和混合负载场景下,基于最优化理论,首创基于深度强化学习的自调优算法,调优性能比业界提升 60% 以上。

Auraro

Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容的关系数据库,专为云而打造,既具有传统企业数据库的性能和可用性,又具有开源数据库的简单性和成本效益。
Amazon Aurora 的速度最高可以达到标准 MySQL 数据库的五倍、标准 PostgreSQL 数据库的三倍。它可以实现商用数据库的安全性、可用性和可靠性,而成本只有商用数据库的 1/10。Amazon Aurora 由 Amazon Relational Database Service (RDS) 完全托管,RDS 可以自动执行各种耗时的管理任务,例如硬件预置以及数据库设置、修补和备份。
Amazon Aurora 采用一种有容错能力并且可以自我修复的分布式存储系统,这一系统可以把每个数据库实例扩展到最高 64TB。它具备高性能和高可用性,支持最多 15 个低延迟读取副本、时间点恢复、持续备份到 Amazon S3,还支持跨三个可用区 (AZ) 复制。

消息队列

RabbitMQ

作为传统意义上的消息队列,基于AMQP协议开发,倾向于做按各种规则的消息转发。

  1. 需要对消息进行更加细粒度的控制,包括一些可靠性方面的特性,比如死信队列。
  2. 需要多种消费模式(点对点,广播,订阅发布等)
  3. 消息需要通过复杂的路由到消费者。

Kafka

更倾向于一个流式管道的概念,消息从一处流向另一处,吞吐量比rabbit更高。

  1. 从A系统到B系统的消息没有复杂的传递规则,并且具有较高的吞吐量要求。
  2. 需要访问消息的历史记录的场景,因为kafak是持久化消息的,所以可以通过偏移量访问到那些已经被消费的消息(前提是磁盘空间足够,kafka没有将日志文件删除)
  3. 流处理的场景。处理源源不断的流式消息,比较典型的是日志的例子,将系统中源源不断生成的日志发送到kafka中。

常见关系型数据库

Oracle 最流行的商业型RDBMS
PostGRESQL 一款非常强大的开源关系型数据库系统,大有和MySQL争雄之势。许多NewSQL产品也是基于它而研发的。
DB2 IBM公司推出的商用RDBMS
MSSQL 微软公司推出的RDBMS

容器化和虚拟化

K8s

即"Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。

Docker

是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

VMware

是一个“虚拟PC”虚拟机管理管理软件。它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。

Xen

Xen是一个开放源代码虚拟机监视器,由剑桥大学开发。Xen的缺点是操作系统必须进行显式地修改(“移植”)以在Xen上运行(但是提供对用户应用的兼容性),所以比较麻烦。使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。Linux的官方内核在较早之前已经去掉了对Xen的支持。

KVM

KVM是指基于Linux内核(Kernel-based)的虚拟机(Virtual Machine)。KVM最大的好处就在于它是与Linux内核集成的,所以速度很快。KVM的宿主操作系统必须是Linux,支持的客户机操作系统包括Linux、Windows、Solaris和BSD,运行在支持虚拟化扩展的x86和x86_64硬件架构上,cpu支持VT技术。

分布式文件系统

HDFS

HDFS(Hadoop Distributed File System),作为Google File System(GFS)的实现,是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。

GlusterFS

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA 或Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。

Fast-DFS

是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。

MooseFS

MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。从其对文件操作的情况看,MooseFS就相当于一个类UNIX文件系统。

主机、网络 、存储、OS及其它

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值