《租户 What's New:租户克隆技术解读_陈森.pdf》由会员分享,可在线阅读,更多相关《租户 What's New:租户克隆技术解读_陈森.pdf(22页珍藏版)》请在三个皮匠报告上搜索。
1、租户克隆技术解读陈森OceanBase 资深技术专家多租户架构1.数据隔离2.资源隔离:CPU、内存、IOPS3.弹性伸缩4.动态调度多租户特性P1P2RSP1ZONE_1OBServerTenant_1Tenant_SYSP3P4P1P2OBServerTenant_1Tenant_2P1P2RSP1ZONE_2OBServerTenant_1Tenant_SYSP3P4P1P2OBServerTenant_1Tenant_2P1P2RSP1ZONE_3OBServerTenant_1Tenant_SYSP3P4P1P2OBServerTenant_1Tenant_2OBProxyOBPro
2、xyOBProxyPaxos Group主副本从副本应用 1应用 2Whats new in version 4.3?租户克隆多租户架构1.数据隔离2.资源隔离:CPU、内存、IOPS3.弹性伸缩4.动态调度多租户特性P1P2RSP1ZONE_1OBServerTenant_1Tenant_SYSP3P4P1P2OBServerTenant_1Tenant_2P1P2RSP1ZONE_2OBServerTenant_1Tenant_SYSP3P4P1P2OBServerTenant_1Tenant_2P1P2RSP1ZONE_3OBServerTenant_1Tenant_SYSP3P4P1P
3、2OBServerTenant_1Tenant_2OBProxyOBProxyOBProxyPaxos Group主副本从副本应用 1应用 2租户克隆CREATE TENANT new_tenant_name FROM source_tenant_name WITH RESOURCE_POOL=resource_pool_name,UNIT=unit_config;新克隆租户的初始数据为源租户语句执行时间点的快照;新克隆租户和源租户之间 数据隔离和资源隔离;Macro Block63源租户clone556Primary Storage Meta新克隆租户Clone Storage Meta56
4、5555CPUMemoryIOPSCPUMemoryIOPS租户克隆应用场景 报表任务业务正在大促;推广效果非常好,大卖,数据库运行平稳,但已处于满载状态;这时,老板听说大卖,非常高兴,问技术团队要一个当前整体销售情况的报表;这时候,是选择冒着被“广进”的风险跑个大查询呢?还是选择回复满脸期待的老板说做不到呢?租户克隆应用场景 报表任务业务正在大促;推广效果非常好,大卖,数据库运行平稳,但已处于满载状态;这时,老板听说大卖,非常高兴,问技术团队要一个当前整体销售情况的报表;这时候,是选择冒着被“广进”的风险跑个大查询呢?还是选择回复满脸期待的老板说做不到呢?租户克隆技术,可以让你放心出报表,减
5、少焦虑内耗;生产租户PAX 行列混合存储ApplicationsClone报表租户PAX 行列混合存储TP workloadAP workloadODCSELECT/*+PARALLEL(hint)*/IDNAMESALARYIDNAMESALARY租户克隆应用场景 只读备租户生产租户压力大,需要快速将不确定的非重要的复杂查询负载隔离开新克隆租户可以作为源生产租户的备租户,提供准实时读服务;生产租户PAX 行列混合存储ApplicationsClone只读备租户PAX 行列混合存储内部运营系统SELECT/*+PARALLEL(hint)*/IDNAMESALARYIDNAMESALARY16
6、c128g4c32g主备租户之间,Redo 异步复制租户克隆应用场景 应用版本升级版本发布前需要备份数据库,若版本发布失败,需要用这个备份来恢复数据库;备份和恢复这两个操作都非常耗时;为了业务生产经营影响最小,发版都在凌晨进行,需要全程值守;发版时间越长,对业务影响越大,同时让研发运维人员越劳累;租户克隆应用场景 应用版本升级预发测试租户Clone临时备份租户Clone临时备份租户Clone4c32g2c16g2c16g版本发布执行前,从生产租户克隆出预发验证租户;版本发布第一个步骤,从生产租户克隆出临时备份租户;生产租户32c256g生产租户32c256g新生产租户32c256g若非常不幸,
7、应用版本发布出问题;通过临时备份租户克隆出一个新生产租户;从而实现数据库的快速恢复;通过租户克隆技术,可以大幅度减少版本发布执行时间,拯救你的睡眠;版本发布前需要备份数据库,若版本发布失败,需要用这个备份来恢复数据库;备份和恢复这两个操作都非常耗时;为了业务生产经营影响最小,发版都在凌晨进行,需要全程值守;发版时间越长,对业务影响越大,同时让研发运维人员越劳累;若发布失败租户克隆应用场景 数据库变更DBA 团队时常收到业务侧的数据库变更需求,比如:调整下表索引 预发测试租户Clone临时备份租户Clone临时备份租户Clone4c32g2c16g2c16gDDL 执行前,从生产租户克隆出预发测
8、试租户;DDL 执行前一个步骤,从生产租户克隆出临时备份租户;生产租户32c256g生产租户32c256g新生产租户32c256g若非常不幸,DDL 执行失败;通过临时备份租户克隆出一个新生产租户;从而实现数据库的快速恢复;执行异常若变更租户克隆应用场景 快速构建开发测试环境当前基于 git 这类代码分支管理工具,已经可以做到快速拉出代码的开发分支;运行和测试程序需要的持久化数据往往保存在数据库中;时常需要基于某个主干测试库构建出该分支的测试库;当测试库容量大时,构建新的分支测试库存在构建慢,存储空间占用大的问题;MasterBugfixYFeatureXFeatureX-Task1Appli
9、cation Code租户克隆应用场景 快速构建开发测试环境当前基于 git 这类代码分支管理工具,已经可以做到快速拉出代码的开发分支;运行和测试程序需要的持久化数据往往保存在数据库中;时常需要基于某个主干测试库构建出该分支的测试库;当测试库容量大时,构建新的分支测试库存在构建慢,存储空间占用大的问题;Application CodeMasterBugfixYFeatureXFeatureX-Task1OceanBase通过租户克隆技术,让整个开发过程更加顺畅丝滑;Master 租户FeatureX 租户CloneCloneBugfixY 租户CloneFeatureX-Task1 租户租户克
10、隆应用场景 数据导出需要将生产数据库中的数据,按 csv 的格式,导出到对象存储中,提供给下游的大数据分析系统使用;为了避免影响业务,不敢开太高的导出并发;同时对象存储写入延迟高,导致数据导出速度慢;租户克隆应用场景 数据导出需要将生产数据库中的数据,按 csv 的格式,导出到对象存储中,提供给下游的大数据分析系统使用;为了避免影响业务,不敢开太高的导出并发;同时对象存储写入延迟高,导致数据导出速度慢;ApplicationsCloneSELECT.INTO OUTFILE源租户导出租户Object Storage克隆出一个导出租户,高并行度的执行数据导出任务;CPUMemoryIOPSCPU
11、MemoryIOPS单个租户可以克隆出多个不同规格的新租户Shared Macro Block报表系统内部运营系统版本发布Dev/TestingRedo 异步复制ApplicationsObject Storage生产租户报表租户只读备租户临时备份租户开发测试租户导出租户75678910113412分布式数据库快照模型data fileWALGlobal Consistent Snapshot TimestampvolatileNon-volatileDRAM data Process1data fileWALvolatileNon-volatileDRAM dataPr
12、ocess2data fileWALvolatileNon-volatileDRAM dataProcessn1.记录当前各个节点的 checkpoint 位点;2.备份各个节点的 data file 数据;(通常是备份元数据,通过元数据引用数据;3.通过全局时间戳来确定 snapshot 点;快照的执行流程以上步骤保留下来的数据,再加上各个节点从 checkpoint 位点到 snapshot 位点的日志;即构成了一个 crash-consistent snapshot;可以基于其克隆出新的租户;567567租户克隆实现Global Timestamp ServiceArchiveLogAr
13、chiveLog日志流副本2日志流副本nArchive Log5673412checkpoint scnsnapshot scnTablets源租户Macro BlockTablets新克隆租户归档Meta copy回放日志流副本1租户克隆 实战演示obclient-urootsource_tenant-h127.0.0.1-P42101obclient SELECT*FROM clone_test.clone_testG*1.row*c:11 row in set(0.00 sec)obclient-urootclone_tenant-h127.0.0.1-P42101obclient SE
14、LECT*FROM clone_test.clone_testG*1.row*c:11 row in set(0.00 sec)obclient-urootsource_tenant-h127.0.0.1-P42101obclient UPDATE clone_test.clone_test SET c=2 WHERE c=1;Query OK,1 row affected(0.01 sec)Rows matched:1 Changed:1 Warnings:0obclient-urootclone_tenant-h127.0.0.1-P42101obclient SELECT*FROM clone_test.clone_testG*1.row*c:11 row in set(0.00 sec)执行克隆语句源租户的数据改动,不影响新克隆租户;obclient-uroot-h127.0.0.1-P42101obclient CREATE TENANT clone_tenant FROM source_tenant WITH RESOURCE_POOL=clone_tenant_pool,UNIT=2c4g;Query OK,0 rows affected(26.02 sec)租户克隆易省稳快谢谢谢谢谢谢