大数跨境
0
0

openGauss架构与备份恢复

openGauss架构与备份恢复 云容灾备份安全治理
2021-02-07
5
导读:初识openGauss-产品定位openGauss是一款关系型数据库管理系统,采用木兰宽松许可证v2发行。

初识openGauss-产品定位

openGauss是一款关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核早 期源自 ,深度融合华为在数据库领域多年的经验,结合需求,并着重在架构、事务、存储引擎、优化器等方向持续构建竞争力特性,在 的芯片上深度优化, 并兼容架构。

openGauss单机内核全开源

产品特性

体系架构图

存储架构图

逻辑结构

Tablespace,即表空间,是一个目录,可以存在多个,里 面存储的是它所包含的数据库的各种物理文件。每个表空 间可以对应多个Database。Database,即数据库,用于管理各类数据对象,各数据库 间相互隔离。数据库管理的对象可分布在多个Tablespace 上。

Datafile Segment,即数据文件,通常每张表只对应一个 数据文件。如果某张表的数据大于1GB,则会分为多个数据 文件存储。 

Table,即表,每张表只能属于一个数据库,也只能对应到 一个Tablespace。每张表对应的数据文件必须在同一个 Tablespace中。 

Block,即数据块,是数据库管理的基本单位,默认大小为 8KB。

openGauss服务响应流程

多样性算力基础软件生态


备份恢复概述

      数据备份是保证数据安全的重要手段之一,为了更好的保证数据安全,openGauss数据库支持两种备份恢复类型(逻辑和物理)、以及多种备份恢复方案。

备份方案考虑要素:

◾备份对业务的影响在可接受范围内

◾数据库恢复效率

◾数据可恢复程度

◾数据库恢复成本

两种备份恢复类型对比

物理备份恢复

openGauss部署成功后,在数据库的运行过程中,往往会遇到各种问题及异常状态。openGauss提供gs_basebackup工具用作基础的物理备份。它可以实现对数据文件的二进制拷贝备份,实现原理使用复制协议。远程执行gs_basebackup时,需要使用系统管理员账户。

Ø备份的前提条件

1.备份客户端可以正常连接openGauss数据库;

2.pg_hba.conf中需要配置允许复制链接,且该连接必须由一个系统管理员建立;

3.如果xlog传输模式为stream模式,则需要配置max_wal_senders的数量,至少有一个可用;4.如果xlog传输模式为fetch模式,则需要把wal_keep_segments参数设置得足够高,确保在备份完毕之前日志不会被移除;

Tips

1.gs_basebackup支持全量备份,不支持增量;

2.gs_basebackup支持简单备份格式和压缩备份格式;

3.gs_basebackup备份包含绝对路径的表空间时,不在同一台机器上进行备份,会产生冲突;

4.若打开增量检测点功能且打开双写,gs_basebackup也会备份双写文件;

5.若pg_xlog目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路径的pg_xlog目录下;

6.备份过程中收回用户的备份权限,可能导致备份失败,或者备份数据不可用。

gs_basebackup备份参数;

gs_basebackup备份示例

目标机配置操作

-- 查询wal_sender信息

postgres=#select * from pg_stat_get_wal_senders();

postgres=#show max_wal_senders;

 max_wal_senders

-----------------

 8

默认xlog复制使用stream方式复制,该方式最多占用2个max_wal_senders线程,需要确保该线程配置足够大。

-- 创建备份用户并放开权限(远程执行gs_basebackup时,需要使用系统管理员账户)

postgres=#create user rep1 with sysadmin identified by 'gauss@123';

$vi pg_hba.conf

------------------------------------------------------------------

添加:

host     replication    rep1      192.168.0.0/24          sha256

------------------------------------------------------------------

-- 创建测试数据

postgres=#create tablespace tbs1 location '/gauss/data/tbs1';   

## 创建绝对路径的表空间

postgres=#create table bak_test(name varchar(20)) tablespace tbs1;

postgres=#insert into bak_test values('This is a test');

postgres=#select * from bak_test;

      name

----------------

 This is a test

客户机备份操作

-- 使用tar格式压缩备份时,xlog模式不能使用stream,生成的tar包,需要用gs_tar命令解压

[omm@client~]$ gs_basebackup -D /home/omm/gs_bak -X fetch -F t -z -h 192.168.0.225 -p26000 -U rep1 -W 

Password:

INFO:  The starting position of the xlog copy of thefull build is: 0/41000028. The slot minimum LSN is: 0/0.

beginbuild tablespace list

finishbuild tablespace list

[omm@clientgs_bak]$ ls

17161.tar.gz  base.tar.gz

-- 当有绝对路径表空间时,备份操作建议重新定位表空间,或者在远程客户端操作,否则有冲突

[omm@client~]$ gs_basebackup -D /home/omm/gs_bak -T /gauss/data/tbs1=/home/omm/gs_bak/tbs1-h 192.168.0.225 -p 26000 -U rep1 -W

-- 普通备份操作示例:

[omm@client~]$ gs_basebackup -D /home/omm/gs_bak -h 192.168.0.225 -p 26000 -U rep1 -W

Password:

INFO:  The starting position of the xlog copy of thefull build is: 0/37000028. The slot minimum LSN is: 0/0.

beginbuild tablespace list

finishbuild tablespace list

beginget xlog by xlogstream

 check identify system success

 send START_REPLICATION 0/37000000 success

 keepalive message is received

 keepalive message is received

 keepalive message is received

-- 检查备份文件

[omm@client~]$ du -sh gs_bak/

94M     gs_bak/

[omm@client~]$ ll /gauss/data/tbs1/PG_9.2_201611171_dn_6001/14858/        ## 绝对路径的表空间自动创建成功

total8

-rw------- 1 omm dbgrp 8192Nov  6 15:44 17177

gs_basebackup恢复概述

当数据库发生故障时需要从备份文件进行恢复。

   gs_basebackup备份的是数据库的二进制文件,因此在恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库。但需要注意的是,必要时需要在实例启动前先修改配置参数(如:服务端口,主备复制配置等信息)

若要在原库的地方恢复数据库,参考步骤如下:


说明:

l暂不支持备份文件增量恢复

l恢复后需要检查数据库中的链接文件是否链接到正确的文件

gs_basebackup恢复示例

Ø客户机恢复操作

--备份原数据库目录

cd/gauss

mvdata data_bak

mkdir -p data/db1

--恢复base.tar至/gauss/data/db1

cd/home/omm/bak/

gunzip *.gz

gs_tar -D /gauss/data/db1 -Fbase.tar  ## tar包需要用gs_tar命令解压备份至指定目录

-- 检查表空间映射信息

[omm@db2db1]$ cd /gauss/data/db1

[omm@db2db1]$ cat tablespace_map        

16434/gauss/data/tbs2

16386/gauss/data/db1/pg_location/tablespace/tbs1

--解压表空间备份至指定目录

mkdir -p /gauss/data/tbs2

mkdir -p /gauss/data/db1/pg_location/tablespace/tbs1

cd/home/omm/bak/

gs_tar -D /gauss/data/tbs2 -F 16434.tar

gs_tar -D /gauss/data/db1/pg_location/tablespace/tbs1 -F 16386.tar

--修改postgres.conf文件

[omm@client ~]$ cd /gauss/data/db1/

[omm@client db1]$ vi postgresql.conf

--------------------------------------------

##修改:

listen_addresses = '192.168.0.226'

local_bind_address = '192.168.0.226'

port= 27000

##修改或删除复制链接

##replconninfo1 = 'localhost=192.168.100.11 localport=26001 localheartbeatport=26005 localservice=26004 remotehost=192.168.100.12 remoteport=26001 remoteheartbeatport=26005 remoteservice=26004'

---------------------------------------------

--启动备份数据库

[omm@client db1]$ gs_ctl start -D /gauss/data/db1/

--检查恢复后的数据库状态

[omm@db2db1]$ gsql-d mydb-p 27000 -r

mydb=# select * from bak_test;

      name

-----------------

 This is a test.

PITR恢复概述

当数据库崩溃或希望回退到数据库之前的某一状态时,opengauss的即时恢复功能(Point-In-Time Recovery,简称PITR)可以支持恢复到备份归档数据之后的任意时间点。


PITR恢复概述(recovery.conf文件)

Ørecovery.conf文件配置

#### 归档恢复配置  ####

restore_command = 'cp /mnt/server/archivedir/%f %p'  ## 获取所需的WAL文件

archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'  

## 清理PITR恢复不需要的WAL归档日志

recovery_end_command = string            ## (可选)在恢复完成时执行的SHELL命令

说明:

ü%f即归档检索中的文件名,%p即复制目的地的路径名,%r最新可用重启点的文件名ü如果多个备机从相同的归档路径恢复时,需要确保该路径存在所有备机恢复所需要的WAL文件。

#### 恢复目标设置(四选一) ####

recovery_target_name = 'restore_point_1'      ## 还原到一个使用pg_create_restore_point()创建的还原点

recovery_target_time = '2020-01-01 12:00:00'  ## 还原到一个指定时间戳

recovery_target_xid = '3000'             ## 还原到一个事务ID。

recovery_target_lsn = '0/0FFFFFF'         ## 还原到日志的指定LSN点。

recovery_target_inclusive = true

##声明是否在指定恢复目标之后停止(true) 或 之前停止(false)。该声明仅支持恢复目标为recovery_target_time,recovery_target_xid和recovery_target_lsn的配置。

##注意:如果不配置任何恢复目标配置目标不存在,则默认恢复到最新的WAL日志点。

PITR恢复示例

-- 创建测试数据

postgres=#select pg_current_xlog_location();

 pg_current_xlog_location

--------------------------

 0/4A0003D0

(1row)

postgres=#create table t2(name varchar(20));

postgres=#insert into t2 values('This is 0/4A0003D0');

postgres=#select pg_switch_xlog();

postgres=#select pg_switch_xlog();

postgres=#select pg_current_xlog_location();

 pg_current_xlog_location

--------------------------

 0/4C013458

postgres=#create table t3(name varchar(20));

postgres=#insert into t3 values('This is 0/4C013458');

postgres=#select pg_current_xlog_location();

 pg_current_xlog_location

--------------------------

 0/4C0171E8

(1row)

postgres=#select pg_switch_xlog();

postgres=#select pg_switch_xlog();

-- 备份客户端完成物理restore后,暂时不启动数据库;拷贝WAL日志至备机xlog日志(清空已有xlog文件),确保备机需要的所有WAL日志均已拷贝完成

[omm@client~]$ scp 192.168.0.225:/gauss/data/db1/pg_xlog/00000001000000000000004{49,A,B,C,D,E}  /home/omm/gs_xlog/

-- 配置recovery.conf文件

[omm@client~]$ cd /gauss/data/db1/

[omm@clientdb1]$ vi recovery.conf

--------------------------

restore_command= 'cp /home/omm/gs_xlog/%f %p'

archive_cleanup_command= 'pg_archivecleanup /gauss/data/db1/pg_xlog %r'

recovery_target_lsn= '0/4C013458'

recovery_target_inclusive= true

--------------------------

-- 重启备份机测试数据

[omm@clientdn_6001]$ gs_om -t start

[omm@clientdn_6001]$ $ gsql -d postgres -p 26000 -U omm -r

postgres=#select * from t2;

        name

--------------------

 This is 0/4A0003D0

postgres=# select * from t3;

ERROR:  relation "t3" does not exist ondn_6001

LINE1: select * from t3;                  

  ^

--修改recovery_target,继续往前恢复

[omm@clientdb1]$ vi recovery.conf

--------------------------

修改:recovery_target_lsn= '0/4C0171E8'

--------------------------

-- 重启恢复查看测试数据

[omm@clientdb1]$ gs_om -t start

[omm@clientdb1]$ gsql -d postgres -p 26000 -U omm -r

postgres=#select * from t3;

        name

--------------------

 This is 0/4C013458

(1row)

-- 查询数据库恢复状态

注意:此时openGauss处于recover状态,只读。

postgres=#create table t10(id int);

ERROR:  cannot execute CREATE TABLE in a read-onlytransaction

postgres=#select pg_is_in_recovery();

 pg_is_in_recovery

-------------------

 t

postgres=#select pg_last_xlog_replay_location();

 pg_last_xlog_replay_location

------------------------------

 (1,0/4C013BA8)

postgres=#select pg_last_xact_replay_timestamp();

 pg_last_xact_replay_timestamp

-------------------------------

 2020-11-06 17:30:21.454294+08

-- 结束恢复,机器对外提供服务

postgres=#select pg_xlog_replay_resume();

 pg_xlog_replay_resume

-----------------------

postgres=#select pg_is_in_recovery();

 pg_is_in_recovery

-------------------

 f

逻辑备份恢复

gs_dump概述

      openGauss可以使用gs_dump工具导出数据库的数据,用户可以导出整个数据库或数据库中指定的对象(如:模式、表、视图等)。gs_dump 在进行数据导出时,不影响其他用户对数据库的读写操作。且该工具支持导出完整一致的数据。例如:T1时刻启动gs_dump导出A数据库,导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。

Ø注意事项:

1.当数据库的对象数量较多时,可以适当增加参数max_prepared_transactions和max_locks_per_transaction的值,以提升导出效率;

2.gs_dump生成的转储文件不包含统计数据。因此,最好从某转储文件恢复之后运行ANALYZE以确保最佳效果;

3.gs_dump导出时会对需要转储的表设置共享锁,以确保数据的一致性和完整性。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。

gs_dump参数简介

gs_dump备份示例

示例1:执行gs_dump,导出postgres数据库全量信息

gs_dump-U omm -W gauss@123 -f /home/omm/backup/db_backup.sql -p 26000 mydb1 -F p    ## 导出纯文档格式

gs_dump-U omm -W gauss@123 -f /home/omm/backup/db_backup.tar -p 26000 mydb1 -F t    ## 导出tar格式

gs_dump-U omm -W gauss@123 -f /home/omm/backup/db_backup.dmp -p 26000 mydb1 -F c    ## 导出自定义归档格式

gs_dump-U omm -W gauss@123 -f /home/omm/backup/db_backup1    -p 26000 mydb1-F d     ## 导出目录格式

示例2:执行gs_dump导出mydb1数据库数据,但不导出extbs_list文件中指定的表信息。

[omm@db1~]$ cat /home/omm/extbs_list

myuser1.t1

[omm@db1~]$ gs_dump -U omm -W gauss@123 -p 26000 mydb1--exclude-table-file=/home/omm/extbs_list -f /home/omm/backup/db_t2.sql -F p

gs_dump[port='26000'][mydb1][2020-08-1722:59:24]: The total objects number is 340.

gs_dump[port='26000'][mydb1][2020-08-1722:59:24]: [100.00%] 340 objects have been dumped.

gs_dump[port='26000'][mydb1][2020-08-1722:59:24]: dump database mydb1 successfully

gs_dump[port='26000'][mydb1][2020-08-1722:59:24]: total time: 319  ms

示例3:执行gs_dump仅导出依赖于指定表testtable的视图信息。然后创建新的testtable表,再恢复依赖其上的视图。备份仅依赖于testtable的视图。

-- 创建测试视图

mydb1=>create view v_t1 as select * from t1 where id=20200818;

CREATEVIEW

-- 导出与表myuser1.t1的视图信息

[omm@db1~]$ gs_dump -s -p 26000 mydb1 -t myuser1.t1 --include-depend-objs--exclude-self -f /home/omm/backup/view_backup.sql -F p

-- 修改myuser1.t1名称

gsql-p 26000 mydb1 -r -c "ALTER TABLE myuser1.t1 RENAME TO tt1;"

-- 创建新的testtable表

CREATETABLE myuser1.t1(a int, b int, c int);

-- 还原依赖于testtable的视图

gsql-p 26000 mydb1 -r -f /home/omm/backup/view_backup.sql

gs_dump其他备份示例

Ø数据库备份示例

--在客户端导出数据库服务器数据(不允许使用omm初始用户远程登录)

[omm@plat21~]$ gs_dump -h 10.244.53.173 -p 26000 -U user1 postgres -F t -f /home/omm/bak2020.tar.gz

--在客户端导出数据并加密备份文件(密码必须是16个字符长度)

[omm@plat21~]$ gs_dump -h 10.244.53.173 -p 26000 -U user1 postgres -F t -f /home/omm/bak2020.tar.gz --with-encryption=AES128--with-key=musthave16bytes0

Øschema备份示例

--以文本方式压缩备份schema:user1和user2

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -n user1 -n user2 -Z 9 -F p -f/home/omm/schema_bak.tar.gz

--自定义格式备份数据库postgres,排除schema:user2

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -N user2 -F c -f /home/omm/gs_2020.bak

--以文本方式备份数据库postgres(仅导出schema定义)

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -s -F p -f /home/omm/gs_define.bak

--以文本方式备份数据库postgres(仅数据),并加密备份文件

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -a -F p -f /home/omm/gs_data.bak --with-encryption=AES128 --with-key=1234567812345678

ØTable备份示例

--以文本方式导出表public.products和user1.*,并压缩

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -t public.products -t user1.* -Z 9 -F p -f/home/omm/gs_table.bak

--以文本方式导出user1.*和public.*的表(排除public.products表、排除public.newproducts的数据)

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -t public.* -T public.products -t user1.*--exclude-table-data public.newproducts -F p -f /home/omm/gs_table2.bak

--以文本方式导出表user1.*的定义,并加密备份文件

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -t user1.* -s -F p -f/home/omm/gs_table3.bak --with-encryption=AES128 --with-key=1234567812345678

--以文本方式导出依赖user1.*表的相关对象,但不到处user1.*的表

[omm@pekpopgsci00181~]$ gs_dump -U omm -p 26000 postgres -t user1.* --include-depend-objs--exclude-self -F p -f /home/omm/gs_table4.bak

gs_dumpall概述

gs_dumpall工具可以将openGauss数据库的所有数据导出至纯文本格式的SQL脚本中,这些数据包括所有数据库的数据以及 所有的数据库公共的全局对象。该工具一般由操作系统用户omm执行,支持导出完整一致的数据,且在进行数据导出时,不阻塞其他用户对数据库的读写访问。

gs_dumpall的导出分为两部分:

公共的全局对象导出,包括有关数据库用户和组,表空间以及属性(例如,适用于数据库整体的访问权限)信息。

针对各数据库的SQL文件,该文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。

注意事项:

ü由于gs_dumpall读取所有数据库中的表,因此必须以管理员的身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组、创建数据库等操作。

ügs_dumpall导出时会对需要转储的表设置共享锁,以确保数据的一致性和完整性。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。

gs_dumpall示例

Ø备份示例

--以文本方式导出所有数据库数据

[omm@db1~]$ gs_dumpall -p 26000 -U omm -f /home/omm/gs_all.bak

--以文本方式仅导出数据库定义

[omm@db1~]$ gs_dumpall -p 26000 -U omm -s -f /home/omm/gs_define.bak

--以文本方式仅导出数据库的数据,并加密备份文件

[omm@db1~]$ gs_dumpall -p 26000 -U omm -a -f /home/omm/gs_dbdata.bak--with-encryption=AES128 --with-key=1234567812345678

--以文本方式导出公共全局表空间和用户信息

[omm@db1~]$ gs_dumpall -p 26000 -U omm -g -f /home/omm/gs_global.bak

--以文本方式导出公共全局用户信息

[omm@db1~]$ gs_dumpall -p 26000 -U omm -r -f /home/omm/gs_guser.bak

Ø恢复示例

[omm@db1~]$ gsql -d postgres -p 26000 -f /home/omm/gs_all.bak

注意:

恢复数据时,postgres数据库不进行recreate,所以postgres数据库中已存在的表并没有删除,脚本执行create失败,insert数据时可能造成数据重复的问题。gs_dumpall仅支持纯文本格式导出。所以通常情况下使用gsql恢复gs_dumpall导出的转储内容。

gs_restore概述

gs_restore是openGauss提供针对gs_dump导出数据的导入工具,操作系统用户omm执行。

Ø主要功能包含: 

导入到数据库:如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。

导入到文件:   如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs_dump导出为纯文本格式。

Ø语法

gs_restore[OPTION]... FILE


说明:1.gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用”-c”参数,在重新创建数据库对象前,清理(删除)已存在的目标数据库对象。2.日志打印无开关,若需隐藏日志,请将日志重定向到日志文件。3.若恢复表数据时,数据量很大,会分批恢复,因此会多次出现“表数据已完成导入”的日志。

gs_restore恢复示例1

示例1:将导出的music2_c.bak文件(自定义归档格式)导入到原库(music2)数据库。

gs_restore-p 26000 -d postgres -c -C -v -F c /home/omm/backup/music2_c.bak   -- 执行后,gs_restore创建music2数据库,并导入相关数据

示例2:将导出的music2.tar文件(tar格式)导入到postgres数据库。

gs_restore-d postgres -p 26000 -c -C -v -F t /home/omm/backup/music2.tar

示例3:将导出的music2_d.bak文件(目录格式)导入到postgres数据库。

gs_restore-d postgres -p 26000 -c -C -v -F d /home/omm/backup/music2_d.bak

示例4:导入索引t1_id_indx

gs_restore-p 26000 -d music2 -U tom -I t1_id_indx -F c /home/omm/backup/music2_c.bak

示例5:导入schematom

gs_restore-p 26000 -d music2 -U tom -n tom -F c /home/omm/backup/music2_c.bak

示例6:导入tom模式下的函数get_id

gs_restore-d music2 -p 26000 -U tom -n tom -P 'get_id()' -F t /home/omm/backup/music2.tar

示例7:导入指定schema的表

-- 导入PUBLIC模式下的table1

gs_restore-h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar

-- 导入test1模式下的test1和test2模式下test2

gs_restore-h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2backup/MPPDB_backup.tar

-- 导入PUBLIC模式下的table1和test1 模式下test1

gs_restore-h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1backup/MPPDB_backup.tar

注意:-t不支持schema_name.table_name的输入格式

示例8:使用自定义归档格式的MPPDB_backup.dmp文件进行如下导入操作。

--导入PUBLIC模式下所有对象的定义和数据。(在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预)

gs_restorebackup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -n PUBLIC

gs_restore:[archiver (db)] Error while PROCESSING TOC:

gs_restore:[archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba

gs_restore:[archiver (db)] could not execute query:

ERROR:cannot drop table table1 because other objects depend on it

DETAIL:view t1.v1 depends on table table1

HINT:Use DROP … CASCADE to drop the dependent objects too.

Commandwas: DROP TABLE public.table1;

-- 手工删除依赖,导入完成后再重新创建

gs_restorebackup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -n PUBLIC

gs_restore[2017-07-2119:16:26]: restore operation successful

gs_restore[2017-07-2119:16:26]: total time: 2203 ms

示例9:使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作

--只导入PUBLIC模式下表table1的定义

gs_restorebackup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -s -n PUBLIC -t table1

示例10:使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作

--只导入PUBLIC模式下表table1的数据

gs_restorebackup/MPPDB_backup.dmp -p 5432 -d postgres -e -a -n PUBLIC -t table1

示例11:先输出备份文件内容列表,再根据列表内容,有选择的restore

--从备份文件导出备份信息至list.file文件

gs_restore-p 26000 -f /home/omm/backup/list.file -F -t /home/omm/backup/music2.tar.gz

--根据list.file文件内容,保留需要恢复的条目,使用gs_restore命令恢复

gs_restore -p 26000 -l -L/home/omm/backup/list.file -F -t /home/omm/backup/music2.tar.gz

二进制程序备份恢复


gs_backup概述

gs_backup工具可以帮助用户备份和恢复openGauss数据库二进制程序和参数文件等。

Ø前提条件

1.可以正常连接openGauss数据库;

2.需以操作系统用户omm执行gs_backup命令;

3.gs_backup命令备份的是openGauss数据库二进制程序和参数文件,并非备份数据;

4.如果没有使用-h参数指定节点,则备份时会备份到所有节点的备份目录中,恢复时也会从所有节点的备份目录中读取备份文件。


gs_backup示例

Ø备份:使用gs_backup脚本备份openGauss主机的二进制程序和参数文件

[omm@db1~]$ gs_backup -t backup --backup-dir=/home/omm/backup --all -l/home/omm/backup/log20200818.log

Parsingconfiguration files.

Successfullyparsed the configuration file.

Performingremote backup.

Remotebackup succeeded.

Successfullybacked up cluster files.

[omm@db1~]$ cd /home/omm/backup/

[omm@db1backup]$ ls

binary.tar  gs_local-2020-08-18_215240.log  log20200818-2020-08-18_215239.log  parameter.tar

[root@db1~]# tree -L 2 /home/omm/backup/

/home/omm/backup/

├──app_0bd0ce80

│  ├── bin

│  ├── etc

│  ├── include

│  ├── lib

│  └── share

├──binary_db1.opengauss.com.tar

├──binary.tar

├──gs_local-2020-08-18_215240.log

├──log20200818-2020-08-18_215239.log

├──parameter_db1.opengauss.com

│  ├── 6001_pg_hba.conf

│  ├── 6001_postgresql.conf

│  └── HOSTNAME

├──parameter_db1.opengauss.com.tar

├──parameter_db2.opengauss.com

│  ├── 6002_pg_hba.conf

│  ├── 6002_postgresql.conf

│  └── HOSTNAME

├──parameter_db2.opengauss.com.tar

└──parameter.tar

8directories, 13 files

Ø恢复:使用gs_backup脚本恢复主/备节点openGauss的二进制程序和参数文件

##恢复前请先确保恢复目标目录存在cluster_static_config文件

[omm@db1gauss]$ mkdir -p /gauss/app_0bd0ce80/bin/

[omm@db1gauss]$ cp /home/omm/backup/app_0bd0ce80/bin/cluster_static_config/gauss/app_0bd0ce80/bin/

[omm@db1gauss]$ ln -s app_0bd0ce80 app

[omm@db1gauss]$ gs_backup -t restore --backup-dir=/home/omm/backup/   --all

Parsingconfiguration files.

Successfullyparsed the configuration file.

Performingremote restoration.

Successfullyrestored cluster files.


【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读8.7k
粉丝0
内容2.2k