openGauss之物理备份与恢复实践操作(openGauss课程openGauss3.0.0)

发布时间 2023-04-28 11:30:46作者: 摩天轮opengauss

一、opengauss的背景和行业现状

 

2022年,七大openGauss商业版发布,是基于openGauss3.0推出商业发行版

目前海量数据库Vastbase表现最佳,一直是TOP 1

作者认为之所以海量数据库Vastbase目前无法被同行超越,和各家研发实力和技术背景有关

 

众所周知,opengauss起源于postgresql,在此基础上做了改良

海量数据库从postgresql就已经开始做商业版,一直做到opengauss,经验最丰富,其他产品例如MongoDB是紧随其后(在此不讨论其存在的意义),目前产品百花齐放,更显锦上添花

 

Vastbase G100采用业界证明稳定高效的日志流复制技术实现集群内主备库的数据和状态传输,

并通过一主多备的部署和配置架构实现了多点可读、数据不丢失、异地灾备等关键高可用场景。

 

二、openGauss物理备份

2.1 gs_basebackup

   gs_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理使用了复制协议。

   远程执行gs_basebackup时,需要使用系统管理员账户。

   gs_basebackup当前支持热备份模式和压缩格式备份。

 

[omm@momo488 data]$ mkdir -p /data/wuli_backup

[omm@momo488 data]$ gs_basebackup -D /data/wuli_backup -h 127.0.0.1 -p 15400

INFO:  Try to bind walsender thread to available CPUs in threadpool.

INFO:  The starting position of the xlog copy of the full build is: 0/403ACA0. The slot minimum LSN is: 0/403ACA0.

[2023-04-12 11:22:06]:begin build tablespace list

[2023-04-12 11:22:06]:finish build tablespace list

[2023-04-12 11:22:06]:begin get xlog by xlogstream

INFO:  Try to bind walsender thread to available CPUs in threadpool.

[2023-04-12 11:22:06]: check identify system success                                                

[2023-04-12 11:22:06]: send START_REPLICATION 0/4000000 success                                    

[2023-04-12 11:22:06]: keepalive message is received                                                

[2023-04-12 11:22:13]: keepalive message is received                                                

[2023-04-12 11:22:17]: keepalive message is received                                                

[2023-04-12 11:22:18]:gs_basebackup: base backup successfully

 

2.2 gs_probackup

   gs_probackup是一个用于管理openGauss数据库备份和恢复的工具。

   它对openGauss实例进行定期备份,以便在数据库出现故障时能够恢复服务器。

 

步骤

1>初始化备份目录。在指定的目录下创建backups/和wal/子目录,分别用于存放备份文件和WAL文件。

[omm@momo488 ~]$ gs_probackup init -B /data/probackup

INFO: Backup catalog '/data/probackup' successfully inited

 

2>添加一个新的备份实例。gs_probackup可以在同一个备份目录下存放多个数据库实例的备份。

[omm@momo488 ~]$ gs_probackup add-instance -B /data/probackup -D /data/openGauss/install/data/dn --instance=momo488ins

INFO: Instance 'momo488ins' successfully inited

 

3>将指定的连接、压缩、日志等相关设置添加到pg_probackup.conf配置文件中,或修改已设置的值。不推荐手动编辑pg_probackup.conf配置文件。

[omm@momo488 backups]$ gs_probackup set-config -B /data/probackup --instance=momo488ins

 

4>显示位于备份目录中的pg_probackup.conf配置文件的内容。可以通过指定--format=json选项,以json格式显示。默认情况下,显示为纯文本格式。

[omm@momo488 backups]$ gs_probackup show-config -B /data/probackup --instance=momo488ins

 

5>显示备份目录的内容。

[omm@momo488 backups]$ gs_probackup show -B /data/probackup

 

6>创建指定实例的备份。在进行增量备份之前,必须至少创建一次全量备份。

[omm@momo488 backups]$ gs_probackup backup -B /data/probackup -b full --instance momo488ins -b FULL -p 15400 -d postgres

 

7>创建指定实例的备份。创建增量备份。

[omm@momo488 momo488ins]$ gs_probackup backup -B /data/probackup -b PTRACK --instance momo488ins -b PTRACK -p 15400 -d postgres

 

-b backup-mode

FULL:创建全量备份,全量备份包含所有数据文件。

PTRACK:创建PTRACK增量备份。

 

8>查看备份信息

[omm@momo488 momo488ins]$ gs_probackup show -B /data/probackup

BACKUP INSTANCE 'momo488ins'

========================================================================================

Instance    Version  ID      Recovery Time           Mode    WAL Mode  TLI    Time   Data   WAL  Zratio  Start LSN   Stop LSN    Status  

========================================================================================

momo488ins  9.2      RSZICJ  2023-04-12 12:12:26+08  PTRACK  STREAM    1/1     11s  259MB  16MB    1.00  0/12000028  0/120001E8  OK      

momo488ins  ----     RSZICF  ----                    PTRACK  STREAM    0/1  1m:38s      0     0    1.00  0/0         0/0         RUNNING

momo488ins  9.2      RSZI51  2023-04-12 12:08:06+08  FULL    STREAM    1/0     22s  656MB  16MB    1.00  0/10000028  0/100001E8  OK      

momo488ins  ----     RSZI4V  ----                    FULL    STREAM    0/0  6m:10s      0     0    1.00  0/0         0/0         RUNNING

 

 

三、openGauss物理恢复

3.1 gs_basebackup的恢复

   gs_basebackup是对数据库按二进制进行备份

   恢复时可以直接拷贝替换原有的文件

   或者直接在备份的库上启动数据库

 

3.2 gs_probackup的恢复

1>破坏数据库(仅用于学习,自建实验环境,生产环境不要这么做)

[root@momo488 ~]# ps -ef | grep gauss

omm       663627       1 20 12:23 ?        00:29:42 /data/openGauss/install/app/bin/gaussdb -D /data/openGauss/install/data/dn

[omm@momo488 ~]$ kill -9 604990

[omm@momo488 ~]$ rm -rf /data/openGauss/install/data/dn

 

2>从备份目录_backup-path_中的备份副本恢复指定实例。如果指定了恢复目标选项,gs_probackup将查找最近的备份并将其还原到指定的恢复目标。否则,使用最近一次备份。

[omm@momo488 ~]$ mkdir -p /data/openGauss/install/data/dn

[omm@momo488 ~]$ gs_probackup restore -B /data/probackup --instance momo488ins -D /data/openGauss/install/data/dn -i RSZICJ

 

3>启动数据库

[omm@momo488 ~]$ /data/openGauss/install/app/bin/gaussdb -D /data/openGauss/install/data/dn &

[omm@momo488 ~]$ gs_ctl start -D /data/openGauss/install/data/dn

 

彻底恢复成功,掌握了这个技术,在保护好数据库物理备份和日志备份的情况下(可以远程备份),

在任何数据库故障面前,你都可以优雅的喝一杯咖啡,

完全可以不需要任何第三方技术支持,自己敲敲键盘搞定数据库恢复,

在老板面前体现你的价值,老板可能会感慨,自从聘用了你一个人,比找一家技术外包公司还管用,

独当一面的第一招你已经学会了,加油

 

本文参考官方文档

 https://docs.opengauss.org/zh/

 https://docs.vastdata.com.cn/zh/