数据库运维
记录DBA学习成长历程

第11章:GBase 8c 备份恢复

文章目录

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';


 

赞(2)
MySQL学习笔记 » 第11章:GBase 8c 备份恢复