写点什么

RDB 关系型数据库

作者:littleFuBaby
  • 2023-05-16
    北京
  • 本文字数:1175 字

    阅读完需:约 4 分钟

一、 关系型数据库


当今时代,关系型数据库基于自身强大的 ACID 特性和功能强大的 SQL 查询,依然在数据存储方面扮演者重要角色


一、MySql 复制


MySql主从复制,实现读写分离


MySql,一主多从复制,多台读服务器可以进行分工,一台用于客户端读,一台用户数据分析师提取大量数据,一台专门用于数据备份



一主多从的好处
分摊负载专机专用便于冷备,其中一台作为冷备处理高可用,读的高可用,写无法做到高可用
MySql主主复制
当主服务器宕机的时候,还可以继续写入,这种手段通过,MySql主主复制实现
操作时间上会不会出现跑偏的情况呢? 不能同时向两个数据库服务器进行写操作,避免数据冲突,一个时候,只能向一台服务器发送写操作


MySql主主失效恢复


MySql主主失效恢复的维护过程



注意事项:
主主复制的两个数据库不能并发写入复制只是增加了数据的读并发处理能力,没有增加写并发能力和存储能力更新表结构会导致巨大的同步延迟
因此,Create table等禁止通过binlog同步过去,通过运维工程师在两个服务器,选择合适的时间,同时修改两个数据库的表结构,表结构的修改只能通过人工方式修改,不适用自动复制的方式进行
复制代码


二、数据分片


由于主从复制,并没有解决写并发,也没有提高存储的容量,因此,为了解决这个问题,实际上,通过数据分片进行
数据分片,就是将数据库表进行分片,每一片分别存储在不同的数据库上,存储的空间就不再是限制了,写操作也会分布在不同的数据库上,实现了写的并发处理
分片目标分片特点分片原理
复制代码


三、硬编码实现数据分片


虽然实现了分片,但是对于应用程序的影响很大,如果发生变化,还需要去修改应用程序,有可能再运维升级的时候,出现问题
复制代码


四、映射表外部存储


这个就非常像阿里的服务器,会根据用户的位置,进行划分区域,阿里云不就是
复制代码


五、数据分片的挑战


需要大量的额外代码,处理逻辑变得更加复杂,额外代码就是一系列的分片代码无法执行多分片的联合查询无法使用数据库的事务,数据的事务通过事务日志实现,通过事务日志实现事务的回滚与提交,多个服务器就无法实现了随着数据的增长,如何增加更多的服务器,新增的服务器如何填补数据
因此,硬编码或者映射关系进行数据分片,不会常用,而是使用分布式关系数据库的中间件,由中间件完成
复制代码


一、分布式数据库中间件


应用通过数据库连接访问MyCat,MyCat对于应用程序而言,就是一个数据库。MyCat自身进行数据分片,连接多个数据库服务器
MyCat就相当于代替应用程序进行数据库分片操作
复制代码


二、Cobar 架构


三、Cobar 系统组件模型


以ID为数据分片的依据,那么,怎么保证分片的ID是唯一的呢?个人觉得,一定有这样的机制解决了这样的问题
复制代码


四、如何做集群的伸缩


关系型数据库同样会遇到分布式数据库进行伸缩扩容时的问题,一致性hash算法,进行新增服务器,原有的数据无法获得


通过数据迁移,实现机器扩容
实践中的扩容策略
复制代码


用户头像

littleFuBaby

关注

强准备+强信念+强执行 2019-11-21 加入

以前是T型人才,当下是π型人才,未来是梳子型人才

评论

发布
暂无评论
RDB 关系型数据库_littleFuBaby_InfoQ写作社区