1.背景
数据库(DB)是一种长期存储在计算设备内、有组织的、统一管理的相关数据的集合。数据库管理系统是位于用户与系统之间的一层数据管理软件,为用户或应用程序提供了访问DB的方法,全称是指数据库管理系统,简称DBMS(Database Management System),这也是我们日常工作中常说的“数据库”。
在数据库的多种类型中,关系型数据库是采用行列二维表结构来管理数据库,类似Excle的结构,使用专业的SQL语言对数据进行控制。
关系型数据库的常见种类
(1)Oracle 来自甲骨文公司
(2)SQL Servce来自微软公司
(3)DB2来自IBM
(4)PostgreSQL来自开源社区
(5)MySQL来自开源社区
其中,MySQL是最流行的关系型数据库,在WEB应用方面MySQL也是最好的应用软件之一。它是一种关联数据库联系统,关联数据库将数据保存在不同的表中,而不是将所有的数据放在一个大仓库中,这样就增加了速度并提高了灵活性。
由于MySQL是开源免费的,并且方便拓展,很多国产数据库都可以在GPL(General Public License)的许可下下载并根据个性化的需求对其进行修改。
今天我们要说的TeleDB数据库,也是一个中国电信在MySQL基础上自研的云数据库品牌。
2.简介
TeleDB是一种基于开源MySQL5.7数据库系统加上自主研发的相关功能组件架构而成一款易用、易安装的数据库集群系统,作为国企,自主研发数据库的目的是解决传统集中式数据库在业务快速发展情况下所暴露的问题,实现核心架构的自主掌控和关键技术创新。
TeleDB还为应用提供了数据的读写分离功能,将读取数据的请求发送至备用数据库,写入数据操作的请求则发送至主数据库,减少数据库锁,极大提高了系统并发性能;同时提供故障自动切换功能,对外提供高性能高可用、数据一致性的分布式数据库服务。
3.常用名词
Keeper:是TeleDB高可用的调度器,用来控制切换流程
zookeeper:分布式一致性协议的一种开源实现,用于scheduler与agent的通信媒介。
agent:收集底层DB的服务器的状态信息,将监控数据上报给zookeeper
master:主从复制中主库。
slave:主从复制的从库。
set:数据库节点组,包括一个主节点master、若干从节点slave
4.技术框架
5.核心功能-增强的半同步
在主库事务提交时,只有收到备库的ACK确认时,才向应用返回事务应答。
实际上,MySQL在很早之前就推出了半同步复制,但是一直以来,半同步复制存在以下问题:
如果异常发生,会降级为普通的复制。那么从机会有一定几率出现数据不一致。
● 主机dump线程承担的工作变多了,这样显然会降低整个数据库的性能。
● 在MySQL 5.5和5.6使用after_commit的模式下, 即如果从库没有收到事务,也就是还没有写入到中继日志(relay log)之前,网络恰巧出现异常或者不稳定,此时刚好主库挂了,系统切换到从机,两边的数据就会出现不一致。 在此情况下,从库会少一个事务的数据。
具体步骤(老):主库将每个事务写入日志,传递到从库中,写到中继日志中,同时主库提交事务。主库等待从库反馈收到中继日志已完成后,才将”已完成“反馈给客户端。
但是随着新版本的发布,半同步复制技术省级为全新的架构,其成熟度、数据一致性与执行效率得到显著的提升。主要手段为:
半同步复制增加了rpl_semi_sync_master_wait_point参数来控制半同步模式下,主库在返回给会话事务成功之前提交事务的方式。
具体步骤:主库将每个事务写入日志,传递到从库中,写到到中继日志中。主库等待从库反馈接收到中继日志已完成之后,再提交事务并且返回"已完成"给客户端。
这两种步骤的区别是到从库写入中继日志时,主库提交事务,系统就觉得写完了。但是如果此时网络不稳定,主库挂了,切换到从库,那么从库缺少了这部分内容,系统觉得已经写完了,也就是不会再写入新的。
6.展望
TeleDB 数据库作为中国电信天翼云自主研发的产品,实现数据库基础软件全面自主可控。解决核心基础软件卡脖子问题,赋能千行百业,满足其多元化的上云需求。我们期待,天翼云在未来取得更多技术突破和行业应用,为推动数字经济的繁荣发展贡献更多力量。
学习笔记,希望大家多多指导交流~