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

openGauss每日一练第14天 | 数据导出gs_dump的操作

原创 田灬禾 2021-12-15
1005

今天学习openGauss导出数据数据相关操作。 主要是用到gs_dump命令属于逻辑备份;

这边先贴下官方相关的参数说明:https://opengauss.org/zh/docs/2.1.0/docs/Administratorguide/%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D.html#%E9%80%BB%E8%BE%91%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D

-f, –file=FILENAME:将输出发送至指定文件或目录

-F, –format=c|d|t|p:

    p|plain:输出一个文本SQL脚本文件(默认)

    c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs_restore输入信息。

    d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。

    t|tar:输出一个tar格式的归档形式,作为gs_restore输入信息。

-Z, –compress=0-9:指定使用的压缩比级别

-a, –data-only:只输出数据,不输出模式(数据定义)。转储表数据、大对象和序列值。

-E, –encoding=ENCODING:以指定的字符集编码创建转储

-n, –schema=SCHEMA:转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象,转储支持多个模式的转储。多次输入-n schemaname转储多个模式;

-s, –schema-only:只转储对象定义(模式),而非数据

-t, –table=TABLE:指定转储的表(或视图、或序列、或外表)对象列表

语法:

gs_dump [OPTION]... [DBNAME]
复制

“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 例如: 不需要-d,直接指定“dbname”。

两种方式指定要导出的数据库:

gs_dump -p port_number  postgres -f dump1.sql
复制

或者

export PGDATABASE=postgres 
复制
 gs_dump -p port_number -f dump1.sql
复制

学习笔记:

  • 导出数据库级别:
  1. sql文件格式全库信息:gs_dump -f /home/omm/backup_database_all.sql [DBNAME] -F p
  2. 不包含数据库对象定义(参数 -a):gs_dump -f /home/omm/backup_database_data.sql [DBNAME]-a -F p
  3. 只导出定义(参数 -s):gs_dump -f /home/omm/backup_database_define.sql [DBNAME]-s -F p
  • 导出模式级别:
  1. 导出模式下所有信息:gs_dump -f /home/omm/backup_schema_all.sql [DBNAME]-n [schema]-F p
  2. 导出模式下数据:gs_dump -f /home/omm/backup_schema_data.sql [DBNAME]-n [schema]-a -F p
  3. 导出模式下定义:gs_dump -f /home/omm/backup_schema_define.sql [DBNAME]-n [schema]-s -F p
  • 表级别:
  1. 表所有数据:gs_dump -f /home/omm/backup_table_all.sql [DBNAME]-t [table]-F p
  2. 表下所有数据没定义:gs_dump -f /home/omm/backup_table_data.sql [DBNAME]-t  [table] -a -F p
  3. 表定义:gs_dump -f /home/omm/backup_table_define.sql [DBNAME]-t [table]-s -F p

课程练习

1.创建数据库tpcc,在数据库tpcc中创建模式schema1,在模式schema1中建表products

openGauss=# create database tpcc;
CREATE DATABASE
openGauss=# \c tpcc;
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "tpcc" as user "omm".
tpcc=# create schema schema1;
CREATE SCHEMA
tpcc=# create table schema1.products (id int,name char(30));
CREATE TABLE
tpcc=# insert into schema1.products values (1,'aa');
复制


2.使用gs_dump工具以文本格式导出数据库tpcc的全量数据

[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpcc.txt tpcc -F p
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: The total objects number is 391.
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: [100.00%] 391 objects have been dumped.
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: dump database tpcc successfully
gs_dump[port='26000'][tpcc][2021-12-15 21:59:55]: total time: 1464  ms
[omm@node1 ~]$ 
复制


3.使用gs_dump工具以文本格式导出模式schema1的定义

[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpccschema1.sql tpcc -n schema1 -s -F p
gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: The total objects number is 381.
gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: [100.00%] 381 objects have been dumped.
gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: dump database tpcc successfully
gs_dump[port='26000'][tpcc][2021-12-15 22:02:50]: total time: 1008  ms
[omm@node1 ~]$ 
复制


4.使用gs_dump工具以文本格式导出数据库tpcc的数据,不包含定义

[omm@node1 ~]$ gs_dump -p 26000 -f /home/omm/tpcc.txt tpcc -a -F p
gs_dump[port='26000'][tpcc][2021-12-15 22:03:37]: dump database tpcc successfully
gs_dump[port='26000'][tpcc][2021-12-15 22:03:37]: total time: 885  ms
[omm@node1 ~]$ 
复制


5.删除表、模式和数据库

openGauss=# \c tpcc
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "tpcc" as user "omm".
tpcc=# drop table schema1.products;
DROP TABLE
tpcc=# drop schema schema1;
DROP SCHEMA
tpcc=# \c postgres
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "omm".
openGauss=# drop database tpcc;
DROP DATABASE
openGauss=# 
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论