1 课程目标
• 了解 GBase 8c 逻辑备份和数据导入导出功能和方法,并可以熟练操作使用
• 逻辑备份
• 数据导入导出
• 备注:该功能单机、分布式均适用。
2 逻辑备份
—2.1 gs_dump --导出postgres数据库全量信息
格式:纯文本格式、自定义归档格式、目录归档格式、tar归档格式
gs_dump -U gbase -W Gbase_123 -f backup/MPPDB_backup.sql -p 15432 postgres -F p
—2.2 gs_dump --导出指定schema(模式)
格式:纯文本格式、自定义归档格式、目录归档格式、tar归档格式
gs_dump -U gbase -W Gbase_123 -f backup/MPPDB_backup.sql -p 15432 postgres -F p
场景1:
创建用户(会自动创建模式),在指定模式下创建业务数据,然后通过gs_dump导出指定模式下数据
下图操作可以看出test_use1模式下新建了一张表及插入了数据,public模式下有7张表,下面操作只导出test_use1模式
执行命令如下:
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -n test_use1 -F p
其中:
-U指定的数据库用户名
-W指定用户的密码
-f 指定的备份文件名
-p指定数据库的端口号
postgres 为数据库名称
-n 指定模式的名称(多个模式可以指定多个-n)
-F指定备份文件的格式,后面的p代表纯文本格式
-N 排除指定模式(指定下的模式不会导出)
查看backup/test_use1_backup.sql备份文件中只包含了该模式的表及数据
—2.3 gs_dump --导出指定的表
使用gs_dump导出某张表,命令如下:
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -t test_use1.ora_alter_table -F p
其中:
-t 代表指定表名,多张表可以指定多个-t
注意:
以下为延伸内容,感兴趣的同学可以进行扩展学习
-T代表不导出表的表名,多张表可以指定多个-T
--include-table-file=FILENAME 代表需要备份的表文件
--exclude-table-file=FILENAME 代表不需要备份的表文件
FILENAME文件中格式如下:
schema1.table1
schema2.table2
......
—2.4 gs_dump --只导出表定义,不导出数据
使用gs_dump导出某张表定义不导出数据,命令如下:
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -t test_use1.ora_alter_table -s -F p
其中:
-t 代表指定表名,多张表可以指定多个-t
-s 代表只导出表定义,不导出数据
也可以使用上一篇表的多种导出形式结合使用。
如果全量导出对象定义而不导出数据,可直接使用-s
—2.5 恢复
1.如果全量导出对象定义而不导出数据,可直接使用-s
2. gs_restore(自定义归档格式、目录归档格式、tar归档格式)
3 数据导入导出
—3.1 数据导出
GBase 8c 通过COPY TO把一个表的数据拷贝到一个文件
例如,将表test_use1.ora_alter_table的数据导出csv格式
命令如下:
COPY test_use1.ora_alter_table TO '/home/gbase/backup/ora_alter_table.csv';
—3.2 数据导入
目前有三种方式进行数据的导入。
1、INSERT 通过INSERT语句插入一行或多行数据,及从指定表插入数据
2、使用INSERT批量插入
3、使用 COPY 表名 [ ( 列名 [, ...] ) ] FROM { '文件名' }
例如:创建一张空表,使用文件名的方式导入数据
4 操作示例
逻辑备份:
•p:纯文本格式 •c:自定义归档
•d:目录归档格式 •t:tar归档格式
--
1、全库备份命令
gs_dump -U gbase -W Gbase_123 -f backup/MPPDB_backup.sql -p 15432 postgres -F p
2、gs_dump --导出指定schema(模式)
sql命令:
create user test_use1 identified by 'Gbase_123'; --创建用户(会自动创建schema)
grant all privileges to test_use1; --授DBA权限
set search_path=test_use1; --切换模式schema
--下面进行建表及插入数据
create table ora_alter_table
( pid number,
did number ,
lsn varchar2(24),
name varchar2(200),
pno number,
cnt number,
amount number,
sale_time date default sysdate
);
--加载测试数据
begin
for i in 1..10000 loop
insert into ora_alter_table(pid,did,lsn,name,pno,cnt,amount,sale_time) values(i,i+100,i+9,'name' ||i,i+1000,i+10,i+10000,sysdate);
end loop;
commit;
end;
/
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -n test_use1 -F p
3、gs_dump --导出指定的表
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -t test_use1.ora_alter_table -F p
4、gs_dump --只导入表定义,不导出数据
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.sql -p 5432 postgres -t test_use1.ora_alter_table -s -F p
gs_dump -U gbase -W Gbase_123 -f backup/test_use1_backup.dmp -p 5432 postgres -t test_use1.ora_alter_table -s -F c
恢复:
1)使用gsql -f 指定
gsql -U gbase -W Gbase_123 -f backup/MPPDB_backup.sql -p 15432 postgres
2)使用gs_restore
gs_restore backup/test_use1_backup.dmp -p 15432 -d postgres
导出:
COPY test_use1.ora_alter_table TO '/home/gbase/backup/ora_alter_table.csv';
导入:
1、insert
CREATE TABLE customer_t2
(
c_customer_sk integer,
c_customer_id char(5),
c_first_name char(6),
c_last_name char(8)
);
insert into customer_t2 values
(68, 'a1', 'zhou','wang'),
(43, 'b1', 'wu', 'zhao'),
(95, 'c1', 'zheng', 'qian');
2、批量insert
CREATE TABLE customer_t3
(
c_customer_sk integer,
c_customer_id char(5),
c_first_name char(6),
c_last_name char(8)
);
INSERT INTO customer_t3 SELECT * FROM customer_t2;
--等价于下面
CREATE TABLE customer_t1 AS SELECT * FROM customer_t2;
3、copy导入
COPY table1 FROM '/home/gbase/backup/ora_alter_table.csv';