资讯详情

一文教你使用gs_dump导出数据

背景信息

gs_dump是openGauss用于导出数据库相关信息的工具,除回收站对象外,用户可以定制导出数据库或对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。

gs_dump操作系统用户使用工具omm执行。

gs_dump其他用户可以访问他用户可以访问该工具openGauss数据库(读写)。

gs_dump工具支持导出完全一致的数据。T1时刻启动gs_dump导出A数据库,导出数据结果将是TA数据库的数据状态,TA数据库的修改不会在一刻后导出。

gs_dump生成列不会转储。

gs_dump支持导出兼容性v1版本数据库的文本格式文件。

gs_dump支持将数据库信息导出到纯文本格式SQL在脚本文件或其他归档文件中。

  • 纯文本格式SQL脚本文件:将数据库恢复到保存状态所需SQL语句。通过gsql运行该SQL脚本文件可以恢复数据库。即使在其他主机和其他数据库产品中,只要是SQL稍加修改脚本文件,也可用于重建数据库。
  • 归档格式文件:包括将数据库恢复到保存状态所需的数据tar格式、目录归档格式或自定义归档格式,详见表1。导出结果必须与gs_restore配合使用恢复数据库,gs_restore导入工具时,系统允许用户选择需要导入的内容,甚至在导入前对等待导入的内容进行排序。

主要功能

gs_dump通过创建四种不同的导出文件格式-F或者–format=选项指定,如表1所示。

导出文件格式

格式名称

-F的参数值

说明

建议

导入工具对应

纯文本格式

p

包含纯文本脚本文件SQL句子和命令。命令可以由gsql重建数据库对象并加载表数据,执行命令行终端程序。

纯文本格式一般推荐小数据库。

使用gsql在工具恢复数据库对象之前,可以使用文本编辑器编辑纯文本导出文件。

定制归档格式

c

二进制文件。支持从导出文件中恢复所有或所选数据库对象。

推荐自定义归档格式的中大数据库。

使用gs_restore可选择从自定义归档导出文件中导入相应的数据库对象。

目录归档格式

d

-

tar归档格式

t

tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。

-

 可以使用gs_dump程序将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。gs_dump程序无法压缩已归档导出文件。

注意事项

语法

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

环境变量: PGDATABASE   

常用参数说明

 常用参数说明

参数

参数说明

举例

-U

连接数据库的用户名。

说明:

不指定连接数据库的用户名时,默认以安装时创建的初始系统管理员连接。

-U jack

-W

指定用户连接的密码。

  • 如果主机的认证策略是trust,则不会对数据库管理员进行密码验证,即无需输入-W选项;
  • 如果没有-W选项,并且不是数据库管理员,会提示用户输入密码。

-W abcd@123

-f

将导出文件发送至指定目录文件夹。如果这里省略,则使用标准输出。

-f /home/omm/backup/postgres_backup.tar

-p

指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。

-p 8000

dbname

需要导出的数据库名称。

postgres

-F

选择导出文件格式。-F参数值如下:

  • p:纯文本格式
  • c:自定义归档
  • d:目录归档格式
  • t:tar归档格式

-F t

-T

不转储的表(或视图、或序列、或外表)对象列表,可以使用多个-t选项来选择多个表,也可以使用通配符制定多个表对象。

当同时输入-t和-T时,会转储在-t列表中,而不在-T列表中的表对象。

-T table1

示例

使用gs_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。

示例中“Bigdata@123”表示数据库用户密码;“backup/MPPDB_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“postgres”表示要访问的数据库名。

 导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。

示例1:执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。

gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.sql -p 37300 postgres -F p
gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: The total objects number is 356.
gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped.
gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: dump database postgres successfully
gs_dump[port='37300'][postgres][2018-06-27 09:49:17]: total time: 1274  ms

使用gsql程序从纯文本导出文件中导入数据。

示例2:执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.tar文件格式为tar格式。

gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.tar -p 37300 postgres -F t
gs_dump[port='37300'][postgres][2018-06-27 10:02:24]: The total objects number is 1369.
gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped.
gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: dump database postgres successfully
gs_dump[port='37300'][postgres][2018-06-27 10:02:53]: total time: 50086  ms

示例3:执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。

gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup.dmp -p 37300 postgres -F c
gs_dump[port='37300'][postgres][2018-06-27 10:05:40]: The total objects number is 1369.
gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped.
gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: dump database postgres successfully
gs_dump[port='37300'][postgres][2018-06-27 10:06:03]: total time: 36620  ms

示例4:执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup文件格式为目录格式。

gs_dump -U omm -W Bigdata@123 -f backup/MPPDB_backup -p 37300  postgres -F d
gs_dump[port='37300'][postgres][2018-06-27 10:16:04]: The total objects number is 1369.
gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped.
gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: dump database postgres successfully
gs_dump[port='37300'][postgres][2018-06-27 10:16:23]: total time: 33977  ms 

示例5:执行gs_dump,导出postgres数据库信息,但不导出/home/MPPDB_temp.sql中指定的表信息。导出的MPPDB_backup.sql文件格式为纯文本格式。

gs_dump -U omm -W Bigdata@123 -p 37300 postgres --exclude-table-file=/home/MPPDB_temp.sql -f backup/MPPDB_backup.sql
gs_dump[port='37300'][postgres][2018-06-27 10:37:01]: The total objects number is 1367.
gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: [100.00%] 1367 objects have been dumped.
gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: dump database postgres successfully
gs_dump[port='37300'][postgres][2018-06-27 10:37:22]: total time: 37017  ms

示例6:执行gs_dump,仅导出依赖于指定表testtable的视图信息。然后创建新的testtable表,再恢复依赖其上的视图。

  • 备份仅依赖于testtable的视图。

    gs_dump -s -p 37300 postgres -t PUBLIC.testtable --include-depend-objs --exclude-self -f backup/MPPDB_backup.sql -F p
    gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: The total objects number is 331.
    gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: [100.00%] 331 objects have been dumped.
    gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: dump database postgres successfully
    gs_dump[port='37300'][postgres][2018-06-15 14:12:54]: total time: 327  ms
    
  • 修改testtable名称。

    gsql -p 37300 postgres -r -c "ALTER TABLE PUBLIC.testtable RENAME TO testtable_bak;"
    
  • 创建新的testtable表。

    CREATE TABLE PUBLIC.testtable(a int, b int, c int);
    
  • 还原依赖于testtable的视图。

    gsql -p 37300 postgres -r -f backup/MPPDB_backup.sql

标签: 连接器ms3126f14

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台