暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MogDB物理备份/恢复--gs_probackup

原创 111zja 云和恩墨 2022-08-17
1036

[[toc]]

1.实验环境

主机名 IP 数据库版本 操作系统
Amogdb 192.168.213.40 MogDB V3.0.1 CentOS 7 x86_64

2. gs_probackup工具介绍

gs_probackup是一个用于管理MogDB数据库备份和恢复的工具。它可以对MogDB实例进行定期备份,以便在数据库出现故障时能够恢复服务器。其适用于数据量大的场景,主要用于全量数据备份恢复,也可对整个数据库中的WAL归档日志和运行日志进行备份。属于物理备份。其优点是恢复时可以直接恢复到某个备份点,在备份上的库上启动数据库,恢复速度快。

  • 使用前提:
    1> 可以正常连接MogDB数据库
    2> 如果要使用PTRACK增量备份,需在postgresql.conf中手动添加参数“enable_cbm_tracking = on”。

3. 准备工作

3.1 设置参数

由于本实验会进行增量备份,所以需要将enable_cbm_tracking设置为on。

  • enable_cbm_tracking
gs_guc reload -N all -I all -c "enable_cbm_tracking=on"

回显如下:

[omm@amogdb datal$ gs_guc reload -N all -I all -c "enable_cbm_tracking-on"
The gs_guc run with the folloving ar guments : [gs_guc -N all -I all -c enable_cbm_tracking=on reload ].
NOTICE: Turn on cbm tracking function.
Begin to perform the total nodes: 2.
Popen countis 2,Popen success count is 2, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
command count is command success count is 2, command failure count is 0.
Total instances: 2. Failed instances: 0.
ALL: Success to perform gs_guc!

3.2 停掉mogha服务(单机部署不需要考虑)

在执行数据还原时,需要停库操作。但是在一主多备的环境下,如果安装了mogha工具,在主库停止的时候,它会主动拉起主库,导致停库操作不能继续进行。所以在进行恢复之前需要关闭mogha服务。

4. 全量备份

4.1 初始化备份目录

[omm@Amogdb data]$ gs_probackup inti -B /data/mogdb/data/bak_20220815
INFO: Backup catalog 'data/mogdb/data/bak_20220815' successfully inited

gs_probackup init -B backup-path [–help]
初始化备份路径backup-path中的备份目录,该目录将存储已备份的内容。如果备份路径backup-path已存在,则backup-path必须为空目录。

4.2 添加备份实例

[omm@Amogdb data]$ gs_probackup add-instance --instance test1 -B /data/mogdb/data/bak_20220815 -D /data/mogdb/data/dn/
INFO: Instance 'test1' successfully inited

在备份路径backup-path内初始化一个新的备份实例,并生成pg_probackup.conf配置文件,该文件保存了指定数据目录pgdata-path的gs_probackup设置。

相反的,如果想要删除某备份实例,命令如下:

gs_probackup del-instance -B backup-path --instance=instance_name

4.3 将相关设置添加到pg_probackup.conf配置文件中

[omm@Amogdb data]$ gs_proback set-config --instance=test1 -B /data/mogdb/data/bak_20220815 -d postgres -p15400

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

4.4 连接数据库,创建测试表

MogDB=# create table test_3 (id int);
CREATE TABLE
MogDB=# Insert into test_3 values (1);
INSERT 0 1
MogDB=# Insert into test_3 values (2);
INSERT 0 1
MogDB=# select * from test_3;
id
---
 1
 2
(2 rows)

4.5 执行全量备份

[omm@Amogdb data]$ gs_probackup backup -B /data/mogdb/data/bak_20220815 --instance test1 -b full

-b backup-mode, --backup-mode=backup-mode
指定备份模式,支持FULL和PTRACK。
FULL:创建全量备份,全量备份包含所有数据文件。
PTRACK:创建PTRACK增量备份。

部分回显如下:

INFO:Backup start,gs_probackup version:2.4.2,instance:test1,backup ID: RGNOMW,backup mode: FULL, wal mode:STREAM,remote:false,compress-algorithm:none,compress-level:1
LOG: Backup destination is initialized
LOG: This openGauss instance was initialized with data block checksums. Data block corruption will be detected
LOG: Database backup start
LOG: started streaming WAL at 0/D3000000 (timeline 1)
[2022-08-15 11:35:21]:check identify system success
[2022-08-15 11:35:21]:send START_REPLICATION 0/D3000000 success
[2022-08-15 11:35:21]: keepalive message is received
INFO: Cannot parse path "base"
[2022-08-15 11:35:21]: keepalive message is received
INFO: PDATA size: 769MB
INFO: Start transferring data files
LOG: Creating page header map "/data/mogdb/data/bak_20220815/backups/testl/RGNOMw/page_header_map"
INFO: Data files are transferred, time elapsed: 15
INFO: wait for pg_stop_backup()
INFO: pg_stop backup() successfully executed
LOG: pg_stop Lsn: 0/D30001E8
LOG: Looking for LSN 0/D300018 in segment: 0000000100000000000000D3
Log: Found WAL segment: /data/mogdb/data/bak_20220815/backups/test1/RCNOMW/database/px_log/0000000100000000000000D3
......
INFO: Backup files are synced, time elapsed: 25 х000000 INFO: Validating backup RGNOMW
INFO: Backup RGNOMw data files are valid
INFO:Backup RGNOMW resident size:801MB
INFO: Backup RGNOMW completed

5. 增量备份

5.1 创建新表,插入数据

在4.5执行权量备份后,接着做下一步:

[omm@amogdb data]$ gsql -d postgres -p15400
gsql ((MogDB 3.0.1 build 1a363a9) compiled at 2022-08-05 18:01:26 commit 0 last mr
Non-55L connection (SSL connection is recommended when requiring high-security)
туре"help" for help.
MogDB=# create table test_4 (id int);
CREATE TABLE
MogDB=# Insert into test_4 values (1);
INSERT 0 1
MogDB=# Insert into test_4 values C2);
INSERT 0 1
MogDB# Select * from test_4;
id
---
 1
 2
(2 rows)

5.2 执行增量备份

执行以下命令创建增量备份

[omm@Amogdb data]$ gs_probakup backup -B /data/mogdb/data/bak_20220815/ --instance test1 -b PTRACK

若回显如下:

......
INFO: Backup xxxxxx datafiles are valid
INFO: Backup xxxxxx resident size: xxxMB
INFO: Backup xxxxxx complete

表示创建增量备份成功


6. 恢复

6.1 停掉当前数据库(集群)

gs_om -t stop 
stopping cluster.
============================================
Successfully stopped cluster
============================================
End stop cluster

6.2 查看当前所有备份

使用pg_probackup show命令

gs_probackup show -B /data/mogdb/data/bak_20220815

BACKUP INSTANCE 'test1'
================================================================================================================================================
INSTANCE   Version   ID     Recovery Time              Mode     WAL Mode    TLI   Time    Data    WAL    Zratio   Start LSN    Stop LSN    Status
================================================================================================================================================
test1       9.2      RGN0Q9   2022-08-15 11:37:21+08    PTRACK   STREAM     1/1   5s      310MB   16MB      1.00   0/D5000028   0/D50001E8   OK
test1       9.2      RGN0MW   2022-08-15 11:35:22+08    FULL   STREAM     1/0   8s      785MB   16MB      0.98   0/D3000028   0/D30001E8   OK

6.3 恢复全量备份

#创建新的全量还原目录
[omm@Amogdb data]$ mkdir testful
[omm@Amogdb data]$ gs_probackup restore -B /data/mogdb/data/bak_20220815/ --instance test1 -D /data/mogdb/data/dn -i RGNOMW
......
INFO: Syncing restored files to disk
INFO: Restored backup files are synced, time elapased:2s
INFO: Restore of backup RGN0MW completed

6.4 验证全量备份的恢复

  • 启动数据库
gs_ctl start -D /data/mogdb/data/testful
  • 查看数据库数据
[omm@Amogdb data]$ gsql -d postgres -p15400
MogDB=# \d
                                      List of relations
Schema  |  Name  |  Type  |  owner  |                    storage
--------+--------+--------+---------+--------------------------------------------
public  | test_3 | table  |  omm    | {orientation=row,compression=no,storage_type=USTORE}
(1 rows)

MogDB=# select * from test_3;
 id
----
 1
 2
(2 rows)

在这之前,我们是在创建表test_4之前完成全量备份的,所以理论上恢复这个全量备份是看不见test_4表的,但是能看到test_3表以及其中的数据。实践证明确实如此。

6.5 恢复增量备份

  • 停库操作
gs_om -t stop 
stopping cluster.
============================================
Successfully stopped cluster
============================================
End stop cluster
  • 查看当前增量备份
gs_probackup show -B /data/mogdb/data/bak_20220815

BACKUP INSTANCE 'test1'
================================================================================================================================================
INSTANCE   Version   ID     Recovery Time              Mode     WAL Mode    TLI   Time    Data    WAL    Zratio   Start LSN    Stop LSN    Status
================================================================================================================================================
test1       9.2      RGN0Q9   2022-08-15 11:37:21+08    PTRACK   STREAM     1/1   5s      310MB   16MB      1.00   0/D5000028   0/D50001E8   OK
test1       9.2      RGN0MW   2022-08-15 11:35:22+08    FULL   STREAM     1/0   8s      785MB   16MB      0.98   0/D3000028   0/D30001E8   OK

ID RGN0Q9即为增量备份。

  • 创建新的增量恢复目录
mkdir /data/mogdb/data/testapen
  • 恢复
[omm@Amogdb data]$ gs_probackup restore -B /data/mogdb/data/bak_20220815/ --instance test1 -D /data/mogdb/data/testapen -i RGN0Q9
......
INFO: Syncing restored files to disk
INFO: Restored backup files are synced, time elapased:3s
INFO: Restore of backup RGN0Q9 completed

6.6 验证增量备份的恢复

  • 启动数据库
gs_ctl start -D /data/mogdb/data/testapen
  • 查看数据库数据
[omm@Amogdb data]$ gsql -d postgres -p15400
MogDB=# \d
                                      List of relations
Schema  |  Name  |  Type  |  owner  |                    storage
--------+--------+--------+---------+--------------------------------------------
public  | test_3 | table  |  omm    | {orientation=row,compression=no,storage_type=USTORE}
public  | test_4 | table  |  omm    | {orientation=row,compression=no,storage_type=USTORE}
(1 rows)

MogDB=# select * from test_3;
 id
----
 1
 2
(2 rows)

MogDB=# select * from test_4;
 id
----
 1
 2
(2 rows)

由上,可以看见两张表都存在,并且表里都有我们插入的数据,增量备份恢复成功。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论