南大通用GBase 8c远程备份还原实践

149 阅读7分钟

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

南大通用GBase 8c数据库支持用户通过备份服务器的方式对集群进行物理全量、增量备份和还原,还提供内置的gs_probackup工具来实现远程备份和还原,支持配置灵活的备份策略和方式,如增量备份、定期备份、远程备份和恢复。

gs_probackup 工具用于管理 GBase 8c 数据库备份和恢复,基于该工具可以进行对GBase 8c数据库实例的定期备份,以便网络或机器故障时能及时恢复数据。除了备份数据库内的数据之外,还可备份外部目录的内容,如脚本文件、配置文件、日志文件、dump等文件。本文主要介绍如何通过gs_probackup工具配置GBase 8c数据库的远程备份策略。

0、环境说明

基于gs_probackup,在某测试环境下,将gbase数据库集群备份到备用机,并恢复到指定目录。

环境信息如下:

数据库服务器IP:172.16.71.58

备份服务器IP:172.16.200.108

1、备份部署

(1)在数据库服务器和备份服务器上配置gbase系统用户的双向免密登录。

登录数据库服务器172.16.71.58,并配置免密:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 ~]$ ssh-keygen -t rsa
[gbase@gbase8c-iicp-db01 ~]$ ssh-copy-id -i gbase@172.16.200.108

登录备份服务器172.16.200.108,并配置免密:

[root@ZSC-GB8C-NODE1 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]$ ssh-keygen -t rsa
[gbase@ZSC-GB8C-NODE1 ~]$ ssh-copy-id -i gbase@172.16.71.58

(2)修改数据库参数,并规划归档日志目录

登录数据库服务器172.16.71.58,并修改参数:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 ~]$  gs_guc reload -N all -I all -c "archive_mode=on"
[gbase@gbase8c-iicp-db01 ~]$  gs_guc reload -N all -I all -c "archive_timeout=1800"
[gbase@gbase8c-iicp-db01 ~]$  gs_guc reload -N all -I all -c "archive_command = 'scp %p gbase@172.16.200.108:/data/mpp/backup/zhck/archive_dir/%f'"
[gbase@gbase8c-iicp-db01 ~]$ gs_guc reload -N all -I all -c "enable_cbm_tracking=on"

参数说明:

  • archive_mode参数指定是否开启归档。

取值范围:on表示开启归档,off表示不启用归档

默认值:off

  • archive_timeout参数指定归档周期

取值范围:整型,0~1073741823,单位为秒,0表示禁用该功能。

默认值:0

  • archive_command参数用于设置归档WAL日志命令,建议归档路径为绝对路径。

取值范围:字符串

默认值:disabled(表示禁用该功能)

  • enable_cbm_tracking参数在增量备份时需要开启该参数。关闭该参数会导致备份失败。

取值范围:布尔值,on表示开启追踪功能,off表示关闭追踪功能。

默认值:off

(3)开启备份服务器的远程访问数据库的权限

登录数据库服务器172.16.71.58,并开启远程访问权限:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 ~]$ gs_guc reload -N all -I all -h "host replication all 172.16.200.108/32 md5"

(4)数据库创建用于备份的用户及授权

登录备份服务器172.16.200.108,测试登录数据库是否正常,并创建备份用户:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 ~]$  gsql -d postgres -h 172.16.71.58
postgres=# create user dba with password 'gbase,123' sysadmin;
postgres=# grant all privileges to dba;

(5)在备份服务器上创建归档目录

登录备份服务器172.16.200.108,创建备份归档目录:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# mkdir -p /data/mpp/backup/zhck/iicp

(6)初始化备份

切换gbase用户:

[root@gbase8c-iicp-db01 ~]# su - gbase

初始化备份路径_backup-path_中的备份目录,该目录将存储已备份的内容:

[gbase@ZSC-GB8C-NODE1 ~]#   gs_probackup init  -B /data/mpp/backup/zhck/iicp

在备份路径_backup-path_内初始化一个新的备份实例,并生成pg_probackup.conf配置文件:

[gbase@ZSC-GB8C-NODE1 ~]#   gs_probackup add-instance -B /data/mpp/backup/zhck/iicp -D /home/gbase/data/dn1 --instance=gbase_zhck --remote-host=172.16.71.58 --remote-user=gbase

将指定的连接、压缩、日志等相关设置添加到pg_probackup.conf配置文件中,假如预留30天备份,可恢复30天前的备份:

[gbase@ZSC-GB8C-NODE1 ~]# gs_probackup set-config -B /data/mpp/backup/zhck/iicp --instance=gbase_zhck --retention-redundancy=30 --retention-window=30

显示位于备份目录中的pg_probackup.conf配置文件的内容:

 [gbase@ZSC-GB8C-NODE1 ~]#  gs_probackup show-config -B /data/mpp/backup/zhck/iicp --instance=gbase_zhck

(7)全量备份

执行进行全量备份:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck
[gbase@ZSC-GB8C-NODE1 ~]# gs_probackup backup -B /data/mpp/backup/zhck/iicp -b FULL -h 172.16.71.58 -p 15432 -U gbase -W 'gbase,123' --instance=gbase_zhck --delete-expired -d postgres --remote-host=172.16.71.58 --remote-user=gbase

(8)增量备份

执行全量备份:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck
[gbase@ZSC-GB8C-NODE1 ~]# gs_probackup backup -B /data/mpp/backup/zhck/iicp -b PTRACK -h 172.16.71.58 -p 15432 -U gbase -W 'gbase,123' --instance=gbase_zhck --delete-expired -d postgres  --remote-host=172.16.71.58 --remote-user=gbase

2、数据恢复

本文示例恢复到当前主机的单独目录。在实际生产环境下,当集群出现误操作或其他因素导致数据损坏,当原集群可以启动情况下,数据恢复均不建议直接在原恢复,否则可能造成数据库的二次破坏。建议恢复到其他节点后,核对数据完成后再将数据导入生产集群。

2.1、全量恢复

(1)查看备份

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck
[gbase@ZSC-GB8C-NODE1 ~]#  gs_probackup show -B /data/mpp/backup/zhck/iicp

查看备份,如下图所示:

1.png (2)在数据库服务器上创建一个恢复目录,用于数据恢复。 在实际生产环境中建议恢复到其他服务器,如预发布或准生产环境。

登录数据库服务器172.16.71.58,并创建恢复目录:

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# mkdir /data/mpp/backup/zhck/restore_test -p

(3)例如,恢复到2024-12-04 19:04:47的全量备份到数据库服务器172.16.71.58

[gbase@ZSC-GB8C-NODE1 ~]# gs_probackup restore -B /data/mpp/backup/zhck/iicp -D /data/mpp/backup/zhck/restore_test -l=SNYUPG --instance=gbase_zhck --remote-host=172.16.71.58 --remote-user=gbase

例如返回如下信息:

2.png

(4)修改数据库端口,防止和当前数据库冲突

登录数据库服务器172.16.71.58

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck/restore_test

查看配置文件中的端口:

[gbase@gbase8c-iicp-db01 restore_test]$ cat  postgresql.conf
...
port = 15432
...

(5)启动数据库

登录数据库服务器172.16.71.58

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 restore_test]$ gs_ctl  start -D /data/mpp/backup/zhck/restore_test...

例如返回如下信息:

3.png

(6)登录数据库核验数据

登录数据库服务器172.16.71.58

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@gbase8c-iicp-db01 restore_test]$ gsql -d postgres -p 15432 -r

4.png

2.2、基于时间点的增量恢复

同样恢复到当前主机的单独目录,在实际生产环境下,当集群出现误操作或其他因素导致数据损坏,当原集群可以启动情况下,数据恢复均不建议直接在原恢复,否则可能造成数据库的二次破坏。建议恢复到其他节点后,核对数据完成后再将数据导入生产集群。

(1)查看备份

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck
[gbase@ZSC-GB8C-NODE1 ~]#  gs_probackup show -B /data/mpp/backup/zhck/iicp

查看备份,如下图所示:

5.png

(2)合并增量备份SNYUUR到SNYUPG

[gbase@ZSC-GB8C-NODE1 zhck]$ gs_probackup merge -B /data/mpp/backup/zhck/iicp --instance=gbase_zhck -i SNYUUR --progres

(3)拷贝归档日志到备份的wal目录,是否有该步骤,需要根据备份情况而定。 如果wal的归档目录已经设定的是归档到物理备份的wal目录,则跳过该步骤。

[gbase@ZSC-GB8C-NODE1 gbase_zhck]$ cp /data/mpp/backup/zhck/archive_dir/*  /data/mpp/backup/zhck/iicp/wal/gbase_zhck/

(4)查看备份

6.png

(5)恢复到指定时间点2024-12-04 19:00:00到数据库服务器172.16.71.58服务器的/data/mpp/backup/zhck/restore_test目录

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck
[gbase@ZSC-GB8C-NODE1 zhck]$  gs_probackup restore -B /data/mpp/backup/zhck/iicp -D /data/mpp/backup/zhck/restore_test --instance=gbase_zhck --remote-host=172.16.71.58 --remote-user=gbase --recovery-target-time='2024-12-04 19:00:00'

(6)修改数据库端口,防止和当前数据库冲突

登录数据库服务器172.16.71.58

[root@gbase8c-iicp-db01 ~]# su - gbase
[gbase@ZSC-GB8C-NODE1 ~]# cd /data/mpp/backup/zhck/restore_test

查看配置文件中的端口:

[gbase@gbase8c-iicp-db01 restore_test]$ cat  postgresql.conf
...
port = 15432
...

(7)启动数据库

[gbase@gbase8c-iicp-db01 restore_test]$ gs_ctl  start -D /data/mpp/backup/zhck/restore_test...

(8)登录数据库核验数据,无误则数据恢复完成。

结语

综上所述,GBase 8c数据库产品的备份恢复功能在保障数据安全性和可靠性方面发挥着重要作用。同时,为了满足不同用户的需求和场景,产品还提供了更加灵活多样的备份策略和介质选择。因此,选择GBase 8c数据库产品在迎合备份恢复功能的特点和优势的用户关注的同时,确保了数据的安全性和可靠性,以及数据库系统的稳定运行。

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。