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

MogDB数据备份与恢复

数据备份是保护数据安全的重要手段之一,为了更好的保护数据安全,MogDB数据库支持两种备份恢复类型、多种备份恢复方案,备份和恢复过程中提供数据的可靠性保障机制。
备份与恢复类型可分为逻辑备份与恢复、物理备份与恢复。
1、逻辑备份与恢复
通过逻辑导出对数据进行备份,逻辑备份只能基于备份时刻进行数据转储,所以恢复时也只能恢复到备份时保存的数据。对于故障点和备份点之间的数据,逻辑备份无能为力,逻辑备份适合备份那些很少变化的数据,当这些数据因误操作被损坏时,可以通过逻辑备份进行快速恢复。如果通过逻辑备份进行全库恢复,通常需要重建数据库,导入备份数据来完成,对于可用性要求很高的数据库,这种恢复时间太长,通常不被采用。由于逻辑备份具有平台无关性,所以更为常见的是,逻辑备份被作为一个数据迁移及移动的主要手段。
a)gs_dump 可以自定义导出一个数据库或其中的对象(模式、表、试图等)
b)gs_dumpall 可以导出数据库的所以数据,包含数据库的数据和所以数据库公共的全局对象
c)gs_restore工具将gs_dump导出数据备份导入到数据库或指定文件中(等效于直接使用gs_dump导出的文本格式)。
2、物理备份与恢复
通过物理文件拷贝的方式对数据库进行备份,以磁盘块为基本单位将数据备份。通过备份的数据文件及归档日志等文件,数据库可以进行完全恢复。物理备份速度快,一般被用作对数据进行备份和恢复,用于全量备份的场景。通过合理规划,可以低成本进行备份与恢复。
a)gs_basebackup可以使用复制协议对二进制文件进行拷贝备份
b)gs_probackup可以实现对数据文件、外部目录的物理备份和恢复、还考研实现对数据库的增量备份和恢复
c)gs_backup可以对二进制程序文件、参数文件、配置文件进行备份

3、相关详细命令
A.gs_dump逻辑备份
gs_dump备份实例
1)示例1
示例1:执行gs_dump,导出数据库全量信息
gs_dump -U omm -W mogdb@)(* -f /home/omm/backup/db_bcakup.sql -p 26000 mydb1 -F p ## 导出文本格式
gs_dump -U omm -W mogdb@)(* -f /home/omm/backup/db_bcakup.tar -p 26000 mydb1 -F t ## 导出tar格式
gs_dump -U omm -W mogdb@)(* -f /home/omm/backup/db_bcakup.dmp -p 26000 mydb1 -F c ## 导出自定义归档格式
gs_dump -U omm -W mogdb@)(* -f /home/omm/backup/db_bcak1 -p 26000 mydb1 -F d ## 导出目录格式
2)示例2
示例2:执行gs_dump导出mydb1数据库数据,但不导出extbs_list文件中制定的表信息
[omm@db1]$ cat /home/omm/extbs_list
myuser1.t1
[omm@db1]$ gs_dump -U omm -W mogdb@)(* -p 26000 mydb1 --exclude-table-file= /home/omm/extbs_list -f /home/omm/backup/db_t2.sql -F p
3)示例3
示例3:执行gs_dump仅导出依赖于指定表testtable的视图信息。然后创建新的testtable表,再恢复依赖其上的视图。备份仅依赖于testtable的视图。
–创建测试视图
mydb1=>create view v_t1 as select * from t1 wher id=2020818;
CREATE VIEW
==导出与表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 TABLR myuser1.t1 RENAME TO tt1;”
–创建新的testtable表
CREATE TABLE myuser1.t1(a int,b int,c int);
–还原依赖于testtable的视图
gsql -p 26000 mydb1 -r -f /home/omm/backup/view_backup.sql
schema备份示例
–以文本压缩备份schema:user1和user2
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -n user1 -n user2 -Z 9 -F p -f /home/omm/schema_bak.tar.gz
–自定义格式备份数据库,排除schema:user2
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -N user2 -F c -f /home/omm/gs_2020.bak
–以文本方式备份数据库(仅导出schema定义)
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -s -F p -f /home/omm/gs_define.bak)
–以文本方式备份数据库(仅数据),并加密备份文化
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -a -F p -f /home/omm/gs_data.bak --with-encryption=AES128 --with-key=1234567812345678
4)Table备份示例
–以文本方式导出表public.products和user1.,并压缩
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -t public.products -t user1. -Z 9 -F p -f /home/omm/gs_data.bak
–以问导出user1.和publiu. 的表(排除 public.products表,排除public.newproducts的数据)
[omm@pekpopgscimg ~]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_data2.bak
–以文本方式导出表user1.* 的定义,并且加密备份文件
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -t user1.* -s -F p -f /home/omm/gs_data3.bak --with-encryption=AES128 --with-key=1234567812345678
–以文本方式导出依赖user1.*表的相关对象,但不到处user1.的表
[omm@pekpopgscimg ~]gs_dump -U omm -p 26000 postgres -t user1. --include-depend-objs --exclude-self p -f /home/omm/gs_table4.bak
B.gs_restore概述
用户可以使用gs_restore工具将gs_dump导出数据备份导入到数据库或指定文件中(等效于直接使用gs_dump导出的文本格式)。
注意事项
1、gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据库异常,在进行导入时,建议使用"-C"参数,在重新创建数据库对象前,清理(删除)已存在的目标数据库对象。
2、日志打印无开关,若需隐藏日志,请将日志重定向到日志文件
3、若恢复表数据时,数据量很大,会分批恢复,因此会多次出现"表数据已完成导入"的日志
1)、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.tar
示例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:导入schema tom
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 -P ‘get_id()’ -F t /home/omm/backup/music2.tar
示例7:导入指定schema的表
–导入PUBLIC模式下的table1
gs_restore -h host_name -p port_name -d postgres -t table1 backup/MPPDB_backup.tar
–导入test1模式下的test1和test2模式下test2
gs_restore -h host_name -p port_name -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar
–导入PUBLIC模式下的table1和test1模式下test1
gs_restore -h host_name -p port_name -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar
注意:-t不支持schema_name.table_name的输入格式

2)、gs_restore恢复示例2
示例1:使用自定义归档格式的MPPDB_backup.dmp文件进行如下导入操作.
–导入PUBLIC模式下所有对象的定义和数据.(在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预)
gs_restore backup/MPPDB_backuo.dmp -p 5432 -d postgres -e -c -n PUBLIC
–手工删除依赖,导入完成后再重新创建
gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -n PUBLIC

示例2:使用自定义归档格式的MPPDB_backup.dmp文件进行如下导入操作.
–只导入PUBLIC模式下表table1的定义
gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -c -s -n PUBLIC -t table1

示例3:使用自定义归档格式的MPPDB_backup.dmp文件进行如下导入操作.
–只导入PUBLIC模式下表table1的定义
gs_restore backup/MPPDB_backup.dmp -p 5432 -d postgres -e -a -n PUBLIC -t table1

C.gs_dumpall 概述
gs_dumpall 导出内容分为两部分:
1、公共的全局对象导出,包括有关数据库用户和组,表空间以及属性信息
2、针对各数据库的SQL文件,该文件包含将数据库恢复为其保存时的状态所需要的全部SQL 语句。
1)、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

2)、gs_dumpall 恢复示例
[omm@db1~]gsql -d postgres -p 26000 -f /home/omm/gs_all.bak
注意:恢复数据时,由于数据库不进行recreate,所以数据库中已存在的表没有删除,脚本执行create失败,
insert 数据时可能造成数据重复的问题
gs_dumpall仅支持文本格式导出,所以通常情况下使用gsql恢复gs_dumpall导出的转储内容
gs_dumpall -U rep1 -W mogdb@)(* -h 192.168.0.99 -p 26000 -f /home/omm/gs_gumpall/gs_all.sql
gs_dumpall -U rep1 -W mogdb@)(* -h 192.168.0.99 -p 26000 -f /home/omm/gs_gumpall/gs_all.sql -g
gs_dumpall -U rep1 -W mogdb@)(* -h 192.168.0.99 -p 26000 -f /home/omm/gs_gumpall/gs_all.sql -r
gs_dumpall -U rep1 -W mogdb@)(* -h 192.168.0.99 -p 26000 -f /home/omm/gs_gumpall/gs_all.sql -s
gs_dumpall -U rep1 -W mogdb@)(* -h 192.168.0.99 -p 26000 -f /home/omm/gs_gumpall/gs_all.sql –a

D.gs_basebackup物理备份恢复
gs_basebackup 工具使用复制协议,对二进制的数据库文件进行拷贝备份
–备份的前提条条件
1、配置白名单(pg_hba.conf)允许数据库的系统管理员角色从客户端发起复制链接;
2、如果xlog传输模式为stream模式,则需要配置max_wal_senders的数量,至少有一个可用;
3、如果xlog传输模式为fetch模式,则需要把wal_keep_segments参数设置得足够高,确保在备份完毕之前日志不好被移除

–gs_basebackup工具注意事项
1、支持全量备份,不支持增加量;
2、在备份包含绝对路径的表空间时,不能在同一台机器上进行备份,会产生冲突;
3、若打开增量检测点功能且打开双写,gs_basebackup也会备份双写文件;
4、若pg_xlog目录为软链接,会直接将数据备份到目标路径的pg_xlog目录下;
5、备份过程中收回用户的备份权限,可能导致备份失败,或者备份数据不可用.

1)、目标机配置操作
–查询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 “mogdb@)(*”;

$ 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
2)、客户机备份操作
–使用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 -p 26000 -U rep1 -W
[omm@client gs_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
–检查备份文件
[omm@client ~]$ du -sh gs_bak/
94M gs_bak/
[omm@client ~]$ ll /gauss/data/tbs1/PG_9.2_201611171_dn_6001/14858/ ## 绝对路径的表空间自动创建成功
total 8
-rw------- 1 omm dbgrp 8192 Nov 6 16:44 17177

3)、客户机恢复操作
–备份原数据库目录
cd /mgdata
mv data data_bak
mkdir -p /mgdata /data/db1

–恢复base.tar至/mgdata /data/db1
cd /home/omm/bak
gunzip *.gz
gs_tar -D /mgdata /data/db1 -F bast.tar ##tar包需要用gs_tar 命令解压备份指导目录

–检查表空间映射信息
[omm@db2 db1]$ cd /mgdata /data/db1
[omm@db2 db1]$ cat tablespace_map
–解压表空间备份至指定目录
mkdir -p /mgdata /data/tbs2
mkdir -p /mgdata /data/db1/pg_location/tablespace/tbs1
cd /home/omm/bak
gs_tar -D /mgdata /data/tbs2 -F 16434.tar
gs_tar -D /mgdata /data/db1/pg_location/tablespace/tbs1 -F 16386.tar

–修改postgres.conf文件
[omm@client ~]$ cd /mgdata /data/db1
[omm@client db1]$ vi postgresql.cof
修改
listen_addresses = ‘192.168.0.226’
local_bind_address = ‘192.168.0.226’
port = 27000
##修改或删除复制链接
##replconninfo1 = ‘localhost=192.168.100.11
localport=26001 localhearbeatport=260005
localservice=26004 remotehost=192.168.100.12
remoteport=26001 remotehearbeatport=260005
remoteservice=26004’
– 自动备份数据库
[omm@client db1]$ gs_ctl start -D /gauss/data/db1

–检查恢复后的数据库状态
[omm@db2 db1]$ gsql -d mydb -p 27000 -r
mydb=# select *from bak_test
name
This is a test

压缩备份
[omm@db1 gs_dump] gs_basebackup -U rep1 -W -h 192.168.0.99 -p 26000 -D /home/omm/gs_basebackup -x -X fetch -F t -z -c fast -v

停止数据库,删除,准备进行数据库恢复
[omm@db1 gs_dump] gs_om -t stop
[omm@db1 gs_dump] rm -rf /mgdata /data/*
停止数据库,删除,准备进行数据库恢复
[omm@db1 gs_basebackup]mkdir -p /mgdata /data/db1
[omm@db1 gs_basebackup] gunzip *.gz

停止数据库,删除,准备进行数据库恢复
准备解压用gs_tar命令
[omm@db1 gs_basebackup] gs_tar -D /gauss/data/db1/ -F base.tar
[omm@db1 gs_basebackup] cd /gauss/data/db1
[omm@db1 db1]ls

[omm@lab01 db1]$ cat tablspace_map
16386 /guass/data/db1/pg_location/tablespace/tb2
16385 /guass/data/db1/pg_location/tablespace/tb1
16508 /guass/data/tb3
[omm@lab01 db1]$ mkdir /guass/data/db1/pg_location/tablespace/tb2 /guass/data/db1/pg_location/tablespace/tb1 /guass/data/tb3 -p
[omm@lab01 db1]$cd …/
[omm@lab01]$ cd gs_basebackup/
[omm@lab01 gs_basebackup]$ ls
16385.tar 16386.tar 16508.tar base.tar
[omm@lab01 gs_basebackup]$ gs_tar -D /guass/data/db1/pg_location/tablespace/tb1 -F 16385.tar
[omm@lab01 gs_basebackup]$ gs_tar -D /guass/data/db1/pg_location/tablespace/tb2 -F 16386.tar
[omm@lab01 gs_basebackup]$ gs_tar -D /guass/data/tb3 -F 16508.tar
查看恢复的内容
[omm@lab01 gs_basebackup]$ ll /guass/data/tb3
total 12
-rw------- 1 omm dbgrep 8192 May 24 19:51 global
drwx------ 3 omm dbgrep 8192 May 24 19:51 PG_9.2_201611171_dn_6001
[omm@lab01 gs_basebackup]$
[omm@lab01 gs_basebackup]$cd /gauss/data/db1
[omm@lab01 db1]$ ls

[omm@lab01 db1]$ vi postgre.sql.cof
–保证连接时与又有的配置是否冲突,保证其唯一性

[omm@lab01 db1]$ gs_om -t start

[omm@lab01 db1]$ gsql -d postgres -p 26000 -r
postgres=# \l
postgres=# \c mydb
postgres=# \d

mydb=# select * from tmp;

E. gs_probackup物理备份和恢复
1、初始化:备份目录初始化 --gs_probackup init
2、实例管理:添加备份实例 --gs_probackup add-instance
删除备份实例 --gs_probackup del-instance
3、配置管理:配置备份属性 --gs_probackup set-config
配置备份任务 --gs_probackup set-backup
4、备份恢复操作:备份 --gs_probackup backup
恢复 --gs_probackup restore
5、备份集管理:合并备份集 --gs_probackup merge
删除备份集 --gs_probackup delete
验证备份集 --gs_probackup validate
6、信息查询:查看配置信息 --gs_probackup show-config
查询备份信息 --gs_probackup show
7、其他操作:查看帮助信息 --gs_probackup help
查看版本信息 --gs_probackup version

1)、gs_probackup备份示例1(初始化)
1、打开参数enable_cbm_tracking,跟踪数据页的变化
mydb=# alter system set enable_cbm_tracking=on;
ALTER SYSTEM SET
mydb=#show enable_cbm_tracking,
enable_cbm_tracking
on

2、初始化备份目录(/home/omm/gs_bak201)
##对目录的初始化操作实际是在备份目录下创建backups和wal/子目录,分别用于存放备份文件和WAL文件
[omm@prod ~]$ gs_probackup init -B /home/omm/gs_bak2021
INFO:Backup catalog ‘/home/omm/gs_bak2021’ successfully inited

3、添加备份实例
[omm@prod ~]$ gs_probackup add-instanvr -B /home/omm/gs_bak2021 -D /gauss/data/db1 --instance gs_bak2021_inst
INFO: Instance ‘gs_bak2021_inst’ successfully inted

[omm@prod ~]$ gs_probackup show -B /homr/omm/gs_bak2021/
BACKUP INSTANCE ‘gs_bak2021_inst’
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
2)、gs_probackup备份示例2(全量备份)
执行一次全量备份
[omm@prod ~]$ gs_probackup backup -B /home/omm/gs_bak2021 --instance gs_bak2021_inst -b full -D /gauss/data/db1 -d
mydb -p 26000 --progress \

–log-directory=/home/omm/gs_bak2021/log --log-rotation-size=10GB --log-rotaion-age=30d --log-level-file=info -log-filename=full_20210111.log
–retention-redundancy=2
–compress
–note=‘This is full backyp set.’

[omm@prod ~]$ gs_probackup show -B /home/omm/gs_bak2021/
BACKUP INSTANCE ‘gs_bak2021_inst’
Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
gs_bak2021_inst 9.2 QMR0ZE 2021-01-11 10:45:17+08 FULL STREAM 1/0 9s 551MB 16MB 1.05 0/F000028 0/F0001E0 ok

3)、gs_probackup备份示例3(增量备份)
执行第一次增量备份
[omm@prod~]$ gs_probackup backup -B /home/omm/gs_bak2021 --instance gs_bak2021_inst -b PTRACK -D /gauss/data/db1 -d mydb -p 26000 --proress \

–log-directory=/home/omm/gs_bak2021/log --log-rotation-size=10GB --log-rotation-age=30d --log-level-file=info --log-filename=incr1_20210111.log
–delete-expired --delete-wal
–retention-redundancy=2
–compress
–note=‘This is the first incremental backup set.’

执行第二次增量备份
[omm@prod~]$ gs_probackup backup -B /home/omm/gs_bak2021 --instance gs_bak2021_inst -b PTRACK -D /gauss/data/db1 -d mydb -p 26000 --proress \

–log-directory=/home/omm/gs_bak2021/log --log-rotation-size=10GB --log-rotation-age=30d --log-level-file=info --log-filename=incr2_20210111.log
–delete-expired --delete-wal
–retention-redundancy=2
–compress
–note=‘This is the second incremental backup set.’

4)、gs_probackup 恢复(全量恢复)
 1)、全量恢复
–验证全备数据(全备时刻)
[omm@prod ~]$ gs_ctl start -D /gauss/data/db1
[omm@prod ~]$ gsql -d mydb -p 26000 -r

mydb=# \d

 gs_probackup 恢复示例(第一次增量恢复)
1、第一次增量恢复
[omm@prod ~]$ gs_probackup restore -B /home/omm/gs_bak2021/ --instance=gs_bak2021_inst -D /gauss/data/db1 -i QMR19V – progrss ##-i指定备份文件ID,QMR19V即第一次增量的ID
–验证数据
[omm@prod ~]$ gs_ctl start -D /gauss/data/db1
[omm@prod ~]$ gsql -d mydb -p 26000 -r

mydb=# \d

mydb=#select * from incr_bak1;
name
This is the first change;

 gs_probackup 恢复示例(第二次增量恢复)
1.第二次增量恢复
[omm@lab01 ~]$ gs_probackup restore -B /home/omm/gs_bak2021/ --instance=gs_bak2021_inst -D /gauss/data/db1 -i QMRlJ4 – progress ## -i指定备份文件ID,QMRlJ4即第二次增备的ID

–验证数据
[omm@lab01 ~]$ gs_ctl start -D /gauss/data/db1/
[omm@lab01 ~]$ gsql -d mydb -p 26000 -r
mydb=# \d

mydb=# select * from incr_bak1,incr_bak2;

gs_probackup备份示例 (备份信息查询)
1、查看备份清单
[omm@prod ~]$ gs_probackup show -B /home/omm/gs_bak2021/
[omm@loab01 ~]$ gsql -d mydb -p 26000 -r
mydb=# alter system set enable_cbm_tracking=on;
ALTER SYSTEM SET
mydb=#
mydb=# show enable_cbm_tracking;
enable_cbm_tracking
on
(1 row)
mydb=#
mydb=# \q
[omm@lab01 ~]$ mkdir /home/omm/gs_bak2021
[omm@lab01 ~]
[omm@lab01 ~]$ gs_probackup init -B /home/omm/gs_bak2021 --初始化只是创建目录,没有数据
INFO:Backup catalog ‘/home/omm/gs_bak2021’ successfully inited
[omm@lab01 ~]
[omm@lab01 ~]$ du -sh /home/omm/gs_bak2021
[omm@lab01 ~]$ cd /home/omm/gs_bak2021/
[omm@lab01 gs_bak2021]$ ls
backups wal
[omm@lab01 gs_bak2021]$ cd backups
[omm@lab01 backups ]$ ll
total 0
[omm@lab01 backups ]$ cd …/wal/
[omm@lab01 wal]$ ll
total 0
[omm@lab01 wal]$

[omm@lab01 ~]$ gs_probackup add-instance -B /home/omm/gs_bak2021/ -D /gauss/data/db1/ --instance gs_bak221_inst
INFO:Instance ‘gs_bak2021_inst’ successfully inited
–产生了那些东西
[omm@lab01 ~]$ cd /home/omm/gs_bak2021/
[omm@lab01 gs_bak2021]$ ls
backups wal
[omm@lab01 gs_bak2021]$ cd backups
[omm@lab01 backups]$ ls
gs_bak2021_inst
[omm@lab01 backups]$ cd gs_bak2021_inst
[omm@lab01 gs_bak2021_inst]$ ll
total 4
-rw------- 1 omm dbgrp 96 May 24 20:00 pg_probackup.conf
[omm@lab01 gs_bak2021_inst]$ pwd
/home/omm/gs_bak2021/backups/gs_bak2021_inst
[omm@lab01 gs_bak2021_inst]$
[omm@lab01 ~]$ gs_probackup show -B /home/omm/gs_bak2021/ --查看备份集

[omm@lab01 ~]$
[omm@lab01 ~]$
–全备份插入备份数据
[omm@lab01 ~]# su - omm
[omm@lab01 ~]$
[omm@lab01 ~]$ gsql -d mydb -p 26000 -r

mydb=# \d

mydb=#
mydb=#
[omm@lab01 ~]$ gs_probackup backup -B /home/omm/gs_bak2021/ --instance gs_bak2021_inst -b full -D /gauss/data/db1 -d mydb -p 26000 --log-drectory=/home/omm/gs_bak2021/log --log-level-file=info --log-filename=full_2021.log --retention-redundancy=2 --compress --note=‘This if full bak.’

[omm@lab01 ~]$ gs_probackup show -B /home/omm/gs_bak2021

–创建增量的测试数据
mydb=#create table incr_bak1(name varchar(50));
CREATE TABLE
mydb=# insert into incr_bak1 values(‘This is first’);
INSERT 0 1
mydb=#
mydb=# select * from incr_bak1;
name
This is first
(1 row)
mydb=#

–开始增量备份 PTACK–
[omm@lab01 ~]$ gs_probackup backup -B /home/omm/gs_bak2021/ --instance gs_bak2021_inst -b PTRACK -D /gauss/data/db1 -d mydb -p 26000 --log-drectory=/home/omm/gs_bak2021/log --log-level-file=info --log-filename=incrl_2021.log --retention-redundancy=2 --compress --note=‘This if incrl bak.’

[omm@lab01 ~]gs_probackup show -B /home/omm/gs_bak2021/
–再创建增量的测试数据
mydb=#create table incr_bak2(name varchar(50));
CREATE TABLE
mydb=# insert into incr_bak2 values(‘This is second’);
INSERT 0 1
mydb=#
mydb=# select * from incr_bak2;
name
This is second
(1 row)
mydb=#

[omm@lab01 ~]$ gs_probackup backup -B /home/omm/gs_bak2021/ --instance gs_bak2021_inst -b PTRACK -D /gauss/data/db1 -d mydb -p 26000 --log-drectory=/home/omm/gs_bak2021/log --log-level-file=info --log-filename=incr2_2021.log --retention-redundancy=2 --compress --note=‘This if incr2 bak.’

[omm@lab01 ~]gs_probackup show -B /home/omm/gs_bak2021/

–看备份详细的信息
[omm@loab01 ~]$ gs_probackup show -B /home/omm/gs_bak2021/ --instance=gs_bak2021_inst -i QTM1PZ

–数据库恢复,先要把数据库停了,把相关的数据删除,清空
[omm@lab01 ~]$ gs_om -t stop
[omm@lab01 ~]$ rm -rf /gauss/data/db1/*
[omm@lab01 ~]$ rm -rf /gauss/data/tbs3/*
—进行数据库数据恢复
[omm@lab01 data]$ gs_probackup restore -B /home/omm/gs_bak2021 --instance=gs_bak2021_inst -D /gauss/data/db1/ -i QTM1Jl
–恢复完不检查,看服务能不能启动
[omm@lab01 data]$ gs_om -t start
[omm@lab01 data]$ gs_om -d mydb -p 26000 -r
mydb=# \1
mydb=# \d
mydb=#

mydb=#
mydb=#

–增量备份的恢复,也必须把数据全部去清空
mydb=# shutdown ;
SHUTDOWN
mydb=#
mydb=# \q
[omm@lab01 data]$
[omm@lab01 data]$ cd …
[omm@lab01 ~]$ rm -rf /guass/data/db1/*
[omm@lab01 ~]$
[omm@lab01 ~]$
–进行数据库数,使用的数据集不一样
[omm@lab01 data]$ gs_probackup restore -B /home/omm/gs_bak2021 --instance=gs_bak2021_inst -D /gauss/data/db1/ -i QTM1NC
—也不看数据,能启动就没有问题
[omm@lab01 data]$ gs_om -t start
[omm@lab01 data]$ gs_om -d mydb -p 26000 -r

–增量备份的恢复,也必须把数据全部去清空
mydb=# shutdown ;
SHUTDOWN
mydb=#
mydb=# \q
[omm@lab01 data]$
[omm@lab01 data]$ cd …
[omm@lab01 ~]$ rm -rf /guass/data/db1/*
[omm@lab01 ~]$
[omm@lab01 ~]$
–进行数据库数,使用的数据集不一样
[omm@lab01 data]$ gs_probackup restore -B /home/omm/gs_bak2021 --instance=gs_bak2021_inst -D /gauss/data/db1/ -i QTM1PZ
—也不看数据,能启动就没有问题
[omm@lab01 data]$ gs_om -t start
[omm@lab01 data]$ gs_om -d mydb -p 26000 -r
[omm@lab01 ~]$ gs_probackup show -B /home/omm/gs_bak2021/
–增量备份比较多,可以合并merge到最新的备份集,做了一个重命名操作
[omm@lab01 ~]$ gs_probackup merge -B /home/omm/gs_bak2021/ --instance=gs_bak2021_inst -i QTM1PZ
[omm@lab01 ~]$ gs_probckup show -B /home/omm/gs_bak2021/
–删除备份集
[omm@lab01 ~]$ gs_probackup delete -B /home/omm/gs_bak2021/ --instance=gs_bak2021_inst -i QTM1PZ
[omm@lab01 ~]$ gs_probckup show -B /home/omm/gs_bak2021/
–删除实例
[omm@lab01 ~]$ gs_probackup del-instance -B /home/omm/gs_bak2021/ -D /gauss/data/db1 --instance=gs_bak2021_inst
[omm@lab01 ~]$ gs_probckup show -B /home/omm/gs_bak2021/

F.二进制程序备份恢复
1)、gs_backup概述
gs_backup工具可以帮助用户备份和恢复openGauss 数据库二进制程序和参数文件等。前提条件
1、可以正常连接数据库;
2、需以操作系统用户omm执行gs_backup命令;
3、gs_backup命令备份的是数据库二进制程序和参数文件,并非备份数据;
4、如果没有使用-h参数指定节点则备份时备份到所有节点的备份目录中,恢复时也会从所有节点的备份目录中读取备份文件。
备份:使用gs_backup脚本备份openGauss主机的二进制程序和参数文件
[omm@db1~] gs_backup -t backup --backup-dir=/home/omm/backup --all -l
[omm@db1~] $ cd /home/omm/backup/
[omm@db1~] $ ls
[root@db1~]#tree -L 2 /home/omm/backup/
/home/omm/backup

–恢复:使用gs_backup脚本恢复主/备节点openGauss的二进制程序和参数文件
##恢复前请先确保恢复明白没了存在cluster_static_config 文件
[omm@db1 gauss]$ mkdir -p /gauss/app_0db0ce80/bin/
[omm@db1 gauss]$ cp /home/omm/backup/app_0db0ce80/bin/cluster_static_config /gauss/app_0db0ce80/bin/
[omm@db1 gauss]$ ln -s app_0db0ce80 app

[omm@db1 gauss]$ gs_backup -t restore --backup-dir=/home/omm/backup/ --all parsing configuration file.
Successfully parsed the configuration file.
Performing remote restoration,
Successfully restored cluster files.

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

评论