
初识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.

