GBase 8c
备份恢复
文章

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

GBase用户137
发表于2024-09-25 16:10:49212次浏览0个评论

南大通用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物理备份对业务的影响

物理备份过程中不与数据库交互,不会影响数据库的业务。


 

评论

登录后才可以发表评论
加载中...