阿里云PolarDB及其共享存储PolarFS技术实现分析(上)
PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存在的运维和扩展性问题;通过引入RDMA和SPDK等新硬件来改造传统的网络和IO协议栈来极大提升数据库性能。代表了未来数据库发展的一个方向。本系列共2篇文章,主要分析为什么会出现PolarDB以及其技术实现。 由于PolarDB并不开源,因此只能基于阿里云公开的技术资料进行解读。这些资料包括从去年下半年开始陆续在阿里云栖社区、云栖大会等场合发布的PolarDB相关资料,以及今年以来公开的PolarDB后端共享存储PolarFS相关文章。 PolarDB出现背景 MySQL云服务遇到的问题 首先来了解下为什么会出现PolarDB。阿里云数据库团队具备国内领先的技术能力,为MySQL等数据库在国内的推广起到了很大的作用。在阿里云上也维护了非常庞大的MySQL云服务(RDS)集群,但也遇到了很多棘手的问题。举例如下: 实例数据量太大,单实例几个TB的数据,这样即使使用xtrabackup物理备份,也需要很长的备份时间,且备份期间写入量大的话可能导致redo日志被覆盖引起备份失败; 大实例故障恢复需要重建时,耗时太长,影响服务可用性(此时存活节点也挂了,那么完蛋了)。时间长有2个原因