前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云数据库平滑拆库方案

云数据库平滑拆库方案

原创
作者头像
俊汝
修改2021-12-27 11:06:58
7920
修改2021-12-27 11:06:58
举报
文章被收录于专栏:腾讯云数据库专家服务

背景

需求场景,在业务起步初期,很多客户的业务团队共用一个数据库实例,随着业务的快速发展,这个数据库实例可能已经成为业务链路的瓶颈,需要做实例的拆分,这就需要依赖云数据库提供的能力,由1个实例拆分2个甚至多个的数据库实例。

腾讯云提供了DTS(数据库传输服务 https://cloud.tencent.com/document/product/571 )的指定库表迁移方案,能满足大部分用户场景的拆库需求,但是部分用户在切换读写到拆分新实例的这个最后的步骤,由于没有使用配置中心,业务的客户端多,分布广,并且业务连续性要求没办法停服做变更,没办法做到所有的客户端配置同时一把切到新实例,这就有带来数据双写的风险,为了解决这个问题,我们整理相关的平滑拆库方案。

构建场景并分析

这里拆库实例为A,目标实例为B,需要把实例A(a,b,c)其中的c库往实例B上拆分,首先就需要通过DTS配置迁移任务,选择指定对象,全量+增量迁移,这个时候,流程跑通后,实例B是和实例A做实时的数据同步。

指定对象迁移
指定对象迁移

这里大概讲解一下拆库平滑修改配置的思路

库表平滑拆分思路
库表平滑拆分思路

1、通过dts把指定对象从实例A搬迁到实例B,并且做实时的数据同步

2、把实例B VIP绑定到实例A的后端网关节点上,这样无论是从实例A还是实例B的VIP入口访问的数据库最终都是实例A的数据。

3、用户这个时候就可以修改客户端配置,把原来访问C库的配置改为访问实例B的VIP

4、这个时候只需要确认访问拆分出去的C库都是从实例B的VIP过来的请求(后续会讲到使用数据库审计的功能来实现)。

4、确认流量切分干净和实例A与实例B同步关系追平,就可以把后端的实例B的VIP重新绑定为自身实例的后端网关节点,并且中断同步关系(如果有些节点没办法排查到修改,为了避免双写,可以把实例A的对应库权限回收,如果出现报错,这个时候再改动配置访问到实例B)。

那这里的云上拆库也是可以借鉴这个思路,可以把目标实例的VPC绑定到源实例上,所有的访问都还是走源实例,然后做客户端机器配置的平滑修改,通过抓包的方式进行请求来源的区分。

这个方案的关键难点在于,实际上数据库审计记录的是业务客户端的实际ip,这样通过审计没办法区分是通过实例A还是实例B过来的请求。

方案

经过验证后,有两种方案解决这个问题。

方案一:通过新账号和数据库审计的能力解决

因为同一个账号,抓包和审计都没办法区分哪个客户端通过实例B的VIP来访问拆分出来的库表。这里需要业务做一次全量梳理,使用独立的新账号访问需要拆分的C库,平滑迁移过程中持续通过数据库审计能力来抓取老的账号还在访问C库的客户端,逐步改好客户端,最后确认完成后再切换

在云数据库控制台上,点击数据库审计,选择未开启的审计实例,选定审计实例开启审计功能,默认选择全审计即可。

数据库审计申请
数据库审计申请

通过拆分账号,业务逐步改好客户端的配置,通过审计日志来判断新拆出去的库表都通过新账号来访问,这个时候就可以把实例B的VPC重新绑会对应的新的目标数据库上,来完成平滑拆分。

审计日志展示
审计日志展示

方案二:通过内网CLB和数据库审计的能力解决

负载均衡(Cloud Load Balancer)是对多台 云服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。

在腾讯云官网选择负载均衡产品,新建CLB实例

CLB申请
CLB申请

申请跨VPC访问,这个时候会可以绑定实例B的VIP,从数据库审计日志中获取到的客户端的IP也是这个SNAT IP,通过绑定数据库实例B的VIP,客户端把目标地址改为CLB的VIP即可(注意并非内网IP)。

CLB跨域绑定
CLB跨域绑定

怎么绑定实例B的VIP呢,点击监听管理器,新建监听器策略,配置访问、权重规则,绑定对应的目标实例VIP,VPORT(假如是x.x.x.x 3306),最终绑定成功会在右方显示绑定规则,如果端口健康状态为:健康,说明数据库实例监听绑定正常。

CLB监听绑定
CLB监听绑定

从后端审计日志可以看到从9.164.156.78过来的请求,说明通过CLB绑定目标实例B的VIP是可以满足平滑切换的需求:

审计日志确认
审计日志确认

这样用户后续就可以把需要拆分出来的C库的客户端改为对应CLB的VIP,VPORT,通过审计判断所有请求都已经改干净后,做一次目标实例VPC的绑定,如果后续不需要通过CLB 来访问,业务还需要再做一次VIP的切换即可。

扩展

上述的拆分方案处理起来还是有一定的复杂度,建议业务可以考虑引入配置中心的管理方式,避免后续还有该类场景的拆分需求

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 构建场景并分析
  • 方案
    • 方案一:通过新账号和数据库审计的能力解决
      • 方案二:通过内网CLB和数据库审计的能力解决
      • 扩展
      相关产品与服务
      访问管理
      访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档