当前位置: 首页 > 科技观察

MySQL瘫痪了,装不下这么多数据!

时间:2023-03-12 02:03:52 科技观察

当MySQL达到一定数据量时(我的经验是3T,单表1亿),复杂的查询会有明显的延迟。继续分库分表会严重增加业务的复杂度,尤其是对于很多非互联网产品来说,迫切需要一种分布式存储。MySQL本身也做了一些努力,就是基于Paxos协议的MGR。但是它没有Sharding方案,需要其他中间件。这样的DB已经有很多了,其中以Aurora为代表的云数据库已经映入眼帘。基于它们的受欢迎程度,仅调查了PorlarDB和TiDB。其他产品,包括但不限于:GreenplumDruidAuroraTaurusSpannerNuoDBOracleExadataOracleRAC时间有限,先看看初步结论。以下内容可以忽略。初步结论是都支持MySQL协议,现有业务的迁移会比较顺利,但对硬件的要求都比较高。部分一致性有Raft协议的参与,保证了可靠性。TiDB是开源的,部分组件需要SSD和DBA,增加了整体成本。但是,用例很多,也经历过大规模应用。极地数据库。阿里新出的明星产品,价格比较合理,但是用例有限,源码无法窥视,只有零星的宣传文档。鉴于阿里对夸张排尿的偏爱,需要试用后进行深入评测。但是,云的优势过于明显,被优先考虑。通过咨询有经验的从业者,抱怨时遇到很多奇怪的问题是常有的事,不如宣传的那么好。下列。TiDB1.简介TiDB是PingCAP设计的开源分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,它结合了传统RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持前所未有的水平扩展,具有强一致性和高可用性。TiDB的目标是为OLTP(OnlineTransactionalProcessing)和OLAP(OnlineAnalyticalProcessing)场景提供一站式解决方案。特点TiDB具有以下特点:与MySQL高度兼容大多数情况下无需修改代码即可轻松从MySQL迁移到TiDB,分库分表后的MySQL集群也可以通过TiDB工具进行实时迁移.横向弹性扩展,只需添加新节点即可实现TiDB的横向扩展,按需扩展吞吐量或存储,轻松应对高并发、海量数据场景。分布式事务TiDB100%支持标准的ACID事务。真正金融级的高可用相对于传统的主从(M-S)复制方案,基于Raft的多数选举协议可以提供金融级100%的数据强一致性保证,并且可以实现故障自动恢复(auto-failover),无需人工干预。一站式HTAP解决方案TiDB作为典型的OLTP行存储数据库,也具有强大的OLAP性能。与TiSpark一起,可以提供一站式的HTAP解决方案。一台存储可以同时处理OLTP&OLAP,无需传统繁琐的ETL流程。云原生SQL数据库TiDB是专为云设计的数据库,支持公有云、私有云和混合云,部署、配置和维护都非常简单。2.整体架构图3.兼容性(特性列表不支持)github.com/pingcap/doc...4.FAQgithub.com/pingcap/doc...5.硬件需求TiDB:解析,处理sql逻辑,以及通过PD获取数据地址,访问TiKV获取数据,返回结果(需要负载均衡,高耗u,高内存,高网络)PD:集群管理,元数据信息的存储,tikv负载均衡,分配全局事务id:分布式并提供交易Key-Value存储引擎。(高耗u、高内存、高网络、高硬盘)PD节点=3794*3=11382TiKV节点=30049*3=59547(500GSSD)监控节点=7446启动会检测硬盘是否为SSD,以及如果没有,则无法启动。2、不支持分区,删数据是个大坑。(3.0支持)解决方法:set@@session.tidb_batch_delete=1;3、批量数据插入问题的解决方法:set@@session.tidb_batch_insert=1;4.aliasdeletefromtablenametablealiaswheretablealias不支持删除表数据时.col='1'会报错5.内存使用问题,GO语言不知道回收机制什么时候起作用。过多的内存使用会导致TIDB崩溃(这一点不像MYSQL)。测试情况是32G内存10分钟后回收一半。6.写入数据时,tidb压力很大,tikv的CPU占用率也很高。7、不支持GBK8,不支持存储过程。9、列数太少,只支持100列。Polardb一、简介及成本Polardb是阿里巴巴自主研发的下一代关系型分布式云原生数据库,目前兼容MySQL、Oracle、PostgreSQL三种数据库引擎。计算能力可扩展至1000核以上,存储容量最高可达100T。POLARDB采用了存储和计算分离的架构。所有计算节点共享一份数据,提供分钟级配置降级、秒级故障恢复、全局数据一致性、免费数据备份和容灾服务。POLARDB不仅结合了商业数据库稳定、可靠、高性能、可扩展性的特点,而且具有简单、开放、自迭代的开源云数据库的优势。例如POLARDBforMySQL的性能可以提升到MySQL的6倍,成本仅为商用数据库的1/102.集群架构,计算与存储分离PolarDB采用多节点集群架构。集群中有一个Writer节点(master节点)和多个Reader节点(reader节点)。每个节点通过分布式文件系统(PolarFileSystem)共享底层存储(PolarStore)。3、读写分离当应用使用集群地址时,POLARDBforMySQL通过内部代理层(Proxy)对外提供服务,应用请求先经过代理再访问数据库节点。代理层不仅可以进行安全认证和保护,还可以解析SQL、发送写操作(如事务、UPDATE、INSERT、DELETE、DDL等)读节点,实现自动读写分离。它就像为应用程序使用单点MySQL数据库一样简单。内部代理层(Proxy)稍后会支持POLARDBforPostgreSQL/Oracle。4、产品100TB超大容量,不再需要因为单机容量上限而购买多个实例进行分片,简化应用开发,减轻运维负担。性价比高POLARDB的计算和存储分离,每增加一个只读节点只收取计算资源费用,而传统只读节点包括计算和存储资源,每增加一个只读节点需要支付相应的存储费用费用。分钟级灵活的存储计算分离架构,结合共享存储,让快速升级成为现实。读一致性集群地址使用LSN(LogSequenceNumber)保证读取数据时的全局一致性,避免主备延迟造成的不一致。毫秒级延迟(物理复制)使用基于Redo的物理复制替代基于Binlog的逻辑复制,提高主备复制的效率和稳定性。即使对大表进行加索引、加字段等DDL操作,也不会造成数据库延迟。无锁备份利用存储层的快照在60秒内完成一个2TB数据量的数据库备份,备份过程不锁数据库,对应用程序几乎没有影响,可以全天24小时进行备份。复杂SQL查询加速内置并行查询引擎,对执行时间超过1分钟的复杂解析SQL有明显的加速效果。此功能需要使用额外的连接地址。5.架构云数据库POLARDB是基于CloudNative的设计理念。其架构图及特点如下:Writeonce,readmanyhighavailability)。主节点处理读写请求,只读节点只处理读请求。主节点和只读节点之间采用Active-ActiveFailover的方式为数据库提供高可用服务。计算与存储分离POLARDB采用计算与存储分离的设计理念,满足公有云计算环境下用户业务弹性扩展的刚性需求。数据库的计算节点(DBServer)只存储元数据,而数据文件、重做日志等存储在远程存储节点(ChunkServer)中。计算节点之间只需要同步RedoLog相关的元数据信息,大大降低了主节点和只读节点之间的延迟,当主节点出现故障时,只读节点可以快速切换到主节点节点。读写分离读写分离是POLARDB默认为MySQL集群免费提供的一种透明、高可用、自适应的负载均衡能力。通过集群地址,将SQL请求自动转发到POLARDB集群的各个节点,提供聚合的、高吞吐的并发SQL处理能力。详情请参见读写分离。高速链路互连数据库的计算节点和存储节点通过高速网络互连,通过RDMA协议进行数据传输,使I/O性能不再是瓶颈。RDMA是一种远程内存直接访问技术。与传统的socket协议软硬件架构相比,RDMA以高速度、超低延迟、极低的CPU占用率主导着RDMA的快速发展。共享分布式存储多个计算节点共享一份数据,而不是每个计算节点存储一份数据,大大降低了用户的存储成本。基于全新打造的分布式块设备和文件系统,存储容量可以在线平滑扩展,不受单机服务器配置的影响,可处理数百TB的数据规模。数据多副本,Parallel-Raft协议数据库存储节点的数据采用多副本保证数据的可靠性,通过Parallel-Raft协议保证数据的一致性。6、18年进化前,POLARDB的核心卖点是100%向后兼容MySQL5.6,100TB存储容量,性能是MySQL官方的6倍,跑分超越AWSAurora。在写入性能方面,提升了近2倍。去年达到13万QPS,今年达到25万QPS;POLARDB还支持最多16个节点,聚合读取性能超过1000万QPS;它的速度几乎是AWSAurora的两倍;在读写分离方面,提供会话一致的读写分离支持。读写分离虽然是一种常见的技术,但是读节点通常会有一定程度的延迟。为此,PolarDB加入了智能网关技术。用户可以在主节点完成写入,然后从子节点读取,满足了用户的读写一致性要求。SQL加速能力,通过使用MPP技术,可以让一条SQL同时在16个节点上执行,从而将复杂SQL的查询时间缩短8-20倍。在数据库稳定性方面,PolarDB是目前全球唯一一家在生产过程中大规模使用傲腾技术的云服务商。3DXPoint技术可以像写入内存一样从物理上消除QOS抖动,数据库在写入请求时会运行得更流畅。End不管是阿里还是华为,都发布了自己的分布式存储,性能测试都是一流的。不管实际水平,还是带有水分。我们都希望国产数据库能够大放异彩。