南大通用GBase 8c 分布式集群备份原理及影响

南大通用GBase 8c多模多态分布式数据库支持行存、列存、内存等多种存储模式和单机、主备式、分布式等多种部署形态,处于对数据安全的考虑,需要定期对数据库集群做备份。本文主要介绍分布式集群的逻辑备份和物理备份的执行原理,以及备份期间对数据库集群的影响面。
一、逻辑备份
南大通用GBase 8c逻辑备份主要通过内置gs_dump工具实现。
gs_dump是GBase 8c用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等),回收站对象除外。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。由操作系统用户gbase执行。
1.gs_dump执行原理
gs_dump执行的逻辑原理如下:
1)gs_dump 建立和CN的连接
2)gs_dump开启一个事务,将隔离级别设置为可重复读(这样保证dump出的数据的一致性)
3)gs_dump访问系统表,根据命令传入的参数(数据库名字,schema名字,表名字等)收集要备份的对象
4)对所有要导出的表执行 LOCK TABLE table_name IN ACCESS SHARE MODE,对表加读锁
5)对所有要导出的表执行 COPY table_name TO stdout 命令
6)CN将COPY命令下推到所有DN执行
7)DN执行COPY命令,使用开始事务时的快照进行全表扫描,将数据发送给CN
8)CN接受DN的数据将数据转发给gs_dump
9)gs_dump对接收到的数据存到备份文件
2.gs_dump 对数据库的影响
2.1gs_dump增加的cpu负载
gs_dump执行过程中在CN上会有一个服务线程,在每个DN上各有一个服务线程,gs_dump的执行相当于对所有要导出的表执行一次全表扫描。单个线程对CPU影响不大。
2.2gs_dump增加的IO负载
对IO的影响包括网络IO和磁盘IO的影响。
- 对网络的影响:gs_dump相当于把所有的表数据传输到CN上,CN再传输给gs_dump程序。单个线程的情况下对网络IO的影响不大。
- 对磁盘IO的影响:在DN侧,DN需要将所有的表数据装到buffer里,单线程的情况影响不大。在gs_dump侧,gs_dump要转储所有接收到的表数据,单线程的情况下影响不大。
2.3gs_dump对业务的影响
锁表的影响
gs_dump在copy数据之前会将所有要导出的表都执行LOCK TABLE操作,并且在所有copy操作都执行完才释放。如果要备份的数据很多,gs_dump执行的时间很长,锁表的时间就会很长。在锁表期间所有对表执行的DROP TABLE, TRUNCATE TABLE, ALTER TABLE, VACUUM FULL等DDL操作都会卡住。解决方法(下面方法任选其一):
1)gs_dump 有一个 --non-lock-table参数,如果设置了这个参数在gs_dump执行的时候不会事先执行LOCK TABLE操作,不会出现卡住的情况。但是如果在gs_dump过程中删除了表,那么gs_dump将不会导出这个表的数据。
2)gs_dump 有个--exclude-table-file参数,这个参数设置不需要导出的表的名字,这个参数支持通配符。可以将中间表放到这个参数里,不导出中间表。
3)将所有的导致DDL卡住的中间表统一放到一个schema中,gs_dump不导出这个schema,可以避免卡住的情况。
清理历史数据的影响
gs_dump使用了可重复读的隔离级别,gs_dump使用执行开始的获得的快照来访问所有的表。所以晚于这个时间点的表的历史数据都不会被vacuum线程清理。如果gs_dump执行的时间很长,在此期间对这些表的update操作很频繁,会造成这些表的数据文件逐渐增大。
解决方法:如果gs_dump执行的时间很长,在执行过程中避免对这些表文件执行频繁的更新操作(一般的更新操作没有影响)。
二、物理备份
1.物理备份原理
GBase 8c的物理备份包括基础备份和日志归档。所谓基础备份就是将数据库的所有文件拷贝到备份服务器上。所谓日志归档就是将数据库新增的xlog日志通过scp命令拷贝到备份服务器上。必须有基础备份的文件才能使用归档的日志文件。
GBase 8c分布式数据库的物理备份是按照节点进行的,并且只备份主节点的文件,即备份GTM主机,主CN和主DN节点的文件。每个主节点都有一个发送数据的线程,对应备份服务器的一个接受数据线程。物理备份实质上就是数据拷贝,将文件从主节点拷贝到备份服务器。物理备份过程中不与数据库交互不影响数据库的业务。
2.物理备份对数据库的影响
2.1物理备份增加的cpu负载
在基础备份过程中需要拷贝所有主节点的文件,在主节点要启动一个发送数据文件的线程,直到所有文件发送完毕。cpu的消耗相当于使用scp命令传输文件。
日志归档过程中由Arch线程发送xlog日志文件,Arch线程经常休眠,消耗cpu资源不大。
2.2物理备份增加的IO负载
在基础备份中传输的数据比较大,相当于使用scp命令从一个服务器向另一个服务器传输数据库文件,会占用一定的物理带宽,应当避免在业务高峰期进行基础备份。
日志归档只复制新增文件,对IO负载影响不大。
2.3物理备份对业务的影响
物理备份过程中不与数据库交互,不会影响数据库的业务。
评论
热门帖子
- 12023-05-09浏览数:17454
- 22020-05-11浏览数:10916
- 32019-04-26浏览数:10579
- 42023-09-25浏览数:10531
- 52023-07-04浏览数:9786