实验二十 GaussDB逻辑备份恢复实验
一、验证数据库集群是否支持逻辑备份、恢复功能,主要包括如下:
1.支持库集的全量逻辑备份、恢复;
2.支持schema级的全量逻辑备份、恢复;
3.支持表级的全量逻辑备份、恢复。
4.支持表结构和数据分离方式的备份、恢复
二、测试流程:
1.创建测试库、schema、表,并插入数据
2.对数据库进行库级全量逻辑备份
3.对数据库进行schema全量逻辑备份
4.对数据库进行指定表的数据+表结构、表结构、纯数据三种方式的全量逻辑备份
5.查看以上备份结果
6.清空测试库全量数据
7.分别对数据库进行指定表的数据+表结构、表结构、纯数据三种方式的全量逻辑恢复,查看恢复结果
8.对表进行schema级全量逻辑恢复,查看恢复结果
9.对数据库进行库级全量逻辑恢复,查看恢复结果
三、测试步骤:
##登陆数据库
su - Ruby
source gauss_env_file
gsql -d postgres -p 8000 -r
##创建测试库、schema、表,并插入数据
create database test_db;
\c test_db;
create schema test1;
create table test1.test(id int,name varchar2(100));
insert into test1.test values(1,'张三');
insert into test1.test values(2,'李四');
insert into test1.test values(3,'王麻子');
\q
##创建备份目录
su - Ruby
mkdir -p /home/Ruby/logic_backup/
##对数据库进行库级全量逻辑备份
gs_dump -f /home/Ruby/logic_backup/test_db.tar -p 8000 test_db -F t
##对数据库进行schema全量逻辑备份
gs_dump -f /home/Ruby/logic_backup/test_db_schema_backup -p 8000 test_db -n test1 -F d
##导出表test1.test的定义和数据,导出文件格式为文本格式
gs_dump -f /home/Ruby/logic_backup/test_db_table_backup.sql -p 8000 test_db -t test1.test -F p
##只导出表test1.test的数据,导出文件格式为tar归档格式。
gs_dump -f /home/Ruby/logic_backup/test_db_table_data_backup.tar -p 8000 test_db -t test1.test -a -F t
##只导出表test1.test的定义,导出文件格式为目录归档格式。
gs_dump -f /home/Ruby/logic_backup/test_db_table_def_backup -p 8000 test_db -t test1.test -s -F d
##查看以上备份结果
cd /home/Ruby/logic_backup/
ll
##清空测试库全量数据
gsql -d postgres -p 8000 -r
\c test_db;
truncate table test1.test;
\q
##恢复test1.test数据
gs_restore /home/Ruby/logic_backup/test_db_table_data_backup.tar -p 8000 -d test_db
gsql -d postgres -p 8000 -r
\c test_db;
##验证恢复
select * from test1.test;
drop table test1.test;
\q
##恢复test1.test表结构
gs_restore /home/Ruby/logic_backup/test_db_table_def_backup -p 8000 -d test_db
gsql -d postgres -p 8000 -r
\c test_db;
##验证恢复
select * from test1.test;
drop table test1.test;
\q
##恢复test1.test的表结构和数据
gsql -f /home/Ruby/logic_backup/test_db_table_backup.sql -p 8000 -d test_db
##验证恢复
gsql -d test_db -p 8000 -r
select * from test1.test;
drop table test1.test;
purge recyclebin;
drop schema test1;
\q
##恢复schema test1;
gs_restore /home/Ruby/logic_backup/test_db_schema_backup -p 8000 -d test_db
##验证恢复
gsql -d test_db -p 8000 -r
select * from test1.test;
\c postgres
drop database test_db;
create database test_db;
\q
##恢复数据库test_db;
gs_restore /home/Ruby/logic_backup/test_db.tar -p 8000 -d test_db;
##验证恢复
gsql -d test_db -p 8000 -r
\l+
select * from test1.test;
##进行整个实例备份
gs_dumpall -p 8000 -f /home/Ruby/logic_backup/all_backup.sql
gsql -d test_db -p 8000 -r
\l
##删除除了系统库之外的所有库
drop database huawei;
drop database jiangshifeng;
drop database perfdb;
drop database pg_test;
drop database test_db;
##进行整个实例恢复
gsql -f /home/Ruby/logic_backup/all_backup.sql -p 8000 -d postgres
##验证恢复
gsql -d test_db -p 8000 -r
\l
select * from test1.test;