
作者:张君泉,Akulaku数据库团队高级DBA1
1.引言
云数据库实现了计算存储分离,支持计算与存储的独立扩展,高可用性和灵活性,同时提供按量计费,增强成本的可控性,因此应用已非常普遍。但各家云数据库也有会各自的特性与瓶颈,比如传统的类MySQL云数据库服务在面对几亿甚至几十亿数据量变更时,会显得十分吃力,影响业务迭代速度。我司在调研解决此问题时对阿里云原生数据库PolarDB有所研究与实践,通过本文做一分享,希望能够为行业提供一些参考。
2.背景
1.核心数据库负载普遍较高,对于高负载能力不足,同时节点扩容不便,而且读写常常都配置在主库。
2.日常变更,超过一亿行大表变更变得越来越多,对数据库性能和业务影响较大。
3.主从延时,因为延迟导致从库接口查不到数据而报错。
架构改动,如图:

3.迁移
原数据库信息收集,用于判断是否满足迁移需求
针对不同业务编写迁移方案
数据同步和迁移过程的保障
迁移后的成果验收和性能表现

3.1 业务梳理
收集需要迁移的数据库实例,我们主要围绕日常变更频繁和性能优化较大的实例。对于迁移方案,需要结合实际情况调研,比如不仅需考虑主业务本身,还需考虑上下游业务,例如数据分析平台,数仓报表,Canal同步等。
3.2 上下游异构数据
依赖业务需要在主业务迁移前先迁移到PolarDB,避免主业务迁移后,出现依赖业务数据缺失的情况。特别是异构数据源的场景,这里以Canal迁移为例:

2. 确认PolarDB上对应Canal的同步账号,权限和密码是否和原数据库上的一致。
3.3 自动化运维平台
由于业务日常变更量大,Akulaku自主研发数据库运维平台,集成实例迁移,SQL审核,系统巡检等功能。本次迁移主要依赖数据库自动化平台的实例迁移功能,同时能避免误操作造成的业务影响。切换完后,也可以根据平台的资源展示和监控功能,实时查看PolarDB的性能状态。

数据库自动化运维平台的数据同步功能,主要是调用了DTS接口来做数据的实时同步,只需要在平台上填好配置即可,后面的账号迁移和域名变更都是通过平台一键操作。
3. 域名切换前确保业务无写入,避免业务双写。
3.4 迁移结果验收
本章节对迁移后的情况做一介绍,同时探讨一下PolarDB相关的相关特性。
随着业务量上涨,在电商大促的场景,能体验到迁移后带来的好处。比如我们有一个数据库的QPS有几十万,以前数据库做支撑明显感觉到吃力,而且有些业务读写都在主库,加大对主库的负载压力。
PolarDB 计算节点和存储分离,能快速扩充计算节点,能更好地应付突发情况。自带Proxy节点,可以支持读写分离和业务切割,负载均衡,能更好地应付高负载的环境。

在大促高负载的场景下,我们收集了一些QPS和往年的数据库做了对比,看到PolarDB性能有明显的提升。在相同配置下,数据库负载越高,PolarDB的优势越大,优势不仅仅是性能上的优化,同时也体现在数据库的稳定性上。
PolarDB的功能特点
1. 读写分离
因为业务没有做读写分离,常常把连接都打到主库。而PolarDB只需要提供集群地址, 在保证读写一致性的前提下,对一些读写的事务,自动分流到主从库上,而且基于负载的自动调度策略,按照活跃连接数自动调度,实现多个节点间的负载均衡。
2. 快速添加从节点
在一些大促期间,某些从库负载瞬时飙升,导致业务查询过慢。这时PolarDB可以快速添加从节点。因为PolarDB是共享的磁盘,添加节点不需要拷贝数据。另外计算节点和存储分离,单独添加从节点时,不影响整个集群的运行。
一般MySQL的服务针对单个服务器,数据从写入到落盘,都是要经过OS的缓存的,即OS内核和用户数据的交互。PolarDB采用远程直接数据存取(Remote Direct Memory Access,以下简称RDMA)高速网络互连的众多区块服务器(Chunk Server)一起向上层计算节点提供块设备服务。摆脱传统的io模式,让数据读写更上一层楼,QPS可突破50w。
3.4.2 日常大表变更
秒级加字段


由上图可知,在添加列时,PolarDB耗时一直稳定在1秒内,但是原MySQL数据库的耗时却随着数据量的增长而增长。特别是几亿行的表变更时,原数据库耗时需要十几个小时。PolarDB执行效率有明显的提升,对比起来有质的飞跃。
innodb_support_instant_add_column
并行创建索引




https://www.vldb.org/pvldb/vol11/p1849-cao.pdf
4.结语

End /








点击「阅读原文」查看 PolarDB 5周年 更多信息





