作者:我的想念穿不透那面墙- | 来源:互联网 | 2023-08-10 16:44
传统关系型数据库的扩容方式分库分表,耗时长,效率慢,那么,分布式数据库OceanBase是如何扩容呢,双十一过后,面对大量的资源设备浪费,数据库又会采用哪种缩容方式呢?
如下图所示:
扩容前是 3 个 Zone,每个 zone 都有 1 台服务器,是 1-1-1 的组网。假设一个表有 8 个分区,则每个 zone 内的 1 台服务器都有主副本和从副本。促销前,经过评估,如果要满足促销的洪峰流量,需要扩展到 2-2-2 组网,即每个 Zone 由 1 台服务器扩容到 2 台服务器。 扩容时,首选购买阿里云 ECS 服务器,然后把服务器加入到集群里,告诉 OceanBase 现在每个 zone 可用服务器多了一个。OceanBase 会选一些副本,动态的复制到新服务器,比如 Zone1 内旧服务器有 8 个副本,OceanBase 把 P1,P4,P5,P6 从旧服务器迁移到新服务器中,其中 P1 是主副本,将承接业务,旧服务器剩余 4 个副本(P2,P3,P7,P8),其中 P2 和 P3是主副本。所以,扩容过程中,OceanBase 除了保持各个服务器副本数量相对一致(比如扩容后每个服务器都是 4 个副本),也会将主副本打散到各个服务器中(比如扩容后每个服务器都有若干主副本),从而将流量分发到各个服务器中,共用应对洪峰流量。新服务器的副本首先会追平数据,一旦数据追平后,旧服务器的主副本和从副本将停止服务,由新服务器的对应副本接管服务,删除旧服务器的旧分区,这个过程是自动完成的,对业务是无影响的。洪峰流量过后,再做反向动作,告诉 OceanBase 新增加的服务器不用了,OceanBase 会自动将新服务器的副本迁回到旧服务器中,数据追平后,新服务器的副本将停止服务,继续由旧服务器独自承担所有流量。最后把新服务器移除集群,释放阿里云资源。
因此,使用 OceanBase,整个扩容和缩容是全自动的,无需人工参与;是线性的,可以灵活的增加和减少;这是原生分布式数据库的优势。