• 概述

  • 导出单个数据库

  • 导出所有数据库

  • 无权限角色导出数据

一、概述

openGauss提供的gs_dump和gs_dumpall工具,能够帮助用户导出需要的数据库对象或其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信息的迁移。gs_dump支持导出单个数据库或其内的对象,而gs_dumpall支持导出openGauss中所有数据库或各库的公共全局对象。详细的使用场景见表1。

表 1 适用场景

适用场景

支持的导出粒度

支持的导出格式

配套的导入方法

导出单个数据库

数据库级导出。

  • 纯文本格式
  • 自定义归档格式
  • 目录归档格式
  • tar归档格式
  • 纯文本格式数据文件导入请参见使用gsql元命令导入数据。
  • 自定义归档格式、目录归档格式和tar归档格式数据文件导入请参见使用gs_restore命令导入数据。

模式级导出。

  • 导出模式的全量信息。
  • 仅导出模式中数据。
  • 仅导出对象的定义,包含表定义、存储过程定义和索引定义等。
表级导出。

  • 导出表的全量信息。
  • 仅导出表中数据。
  • 仅导出表的定义。

导出所有数据库

数据库级导出。

纯文本格式

数据文件导入请参见使用gsql元命令导入数据。

各库公共全局对象导出。

  • 仅导出表空间信息。
  • 仅导出角色信息。
  • 导出角色与表空间。

gs_dump和gs_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导出所要求的权限时,会无法导出数据。此时,可在导出命令中设置–role参数来指定具备权限的角色。在执行命令后,gs_dump和gs_dumpall会使用–role参数指定的角色,完成导出动作。可使用该功能的场景请参见表1,详细操作请参见无权限角色导出数据。

gs_dump和gs_dumpall通过对导出的数据文件加密,导入时对加密的数据文件进行解密,可以防止数据信息泄露,为数据库的安全提供保证。注意,使用gs_dump加密的纯文本格式文件,如果导出的数据库中包含存储过程,不支持使用gsql命令恢复文件,请使用另外三种模式导出数据库,并使用gs_restore恢复。

gs_dump和gs_dumpall工具在进行数据导出时,其他用户可以访问数据库(读或写)。

gs_dump和gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,或者启动gs_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻A数据库或者该openGauss数据库的数据状态,T1时刻之后对A数据库或openGauss数据库的修改不会被导出。

注意事项

  • 禁止修改导出的文件和内容,否则可能无法恢复成功。
  • 如果数据库中包含的对象数量(数据表、视图、索引)在50万以上,为了提高性能且避免出现内存问题,建议通过gs_guc工具设置数据库节点的如下参数(如果参数值大于如下建议值,则无需设置)。

    gs_guc set -N all -I all -c 'max_prepared_transactions = 1000'
    gs_guc set -N all -I all -c 'max_locks_per_transaction = 512'
    
  • 为了保证数据一致性和完整性,导出工具会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump和gs_dumpall会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。

  • 由于gs_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。

二、导出单个数据库

  • 导出数据库

  • 导出模式

  • 导出表

① 导出数据库

openGauss支持使用gs_dump工具导出某个数据库级的内容,包含数据库的数据和所有对象定义。可根据需要自定义导出如下信息:

  • 导出数据库全量信息,包含数据和所有对象定义。

    使用导出的全量信息可以创建一个与当前库相同的数据库,且库中数据也与当前库相同。

  • 仅导出所有对象定义,包括:库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。

    使用导出的对象定义,可以快速创建一个相同的数据库,但是库中并无原数据库的数据。

  • 仅导出数据,不包含所有对象定义。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dump导出userdatabase数据库。

    复制代码gs_dump -U jack -f /home/omm/backup/userdatabase_backup.tar -p 8000 postgres -F t
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名。

    说明:

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

    -U jack

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

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

    -p

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

    -p8000

    dbname

    需要导出的数据库名称

    postgres

    -F

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

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

    -F t

    其他参数说明请参见《工具参考》中“服务端工具 > gs_dump”章节。

示例

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

gs_dump -f /home/omm/backup/postgres_backup.sql -p 8000 postgres -F p
Password:
gs_dump[port='8000'][postgres][2017-07-21 15:36:13]: dump database postgres successfully
gs_dump[port='8000'][postgres][2017-07-21 15:36:13]: total time: 3793  ms

示例二:执行gs_dump,仅导出postgres数据库中的数据,不包含数据库对象定义,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/postgres_data_backup.dmp -p 8000 postgres -a -F c
Password:
gs_dump[port='8000'][postgres][2017-07-21 15:36:13]: dump database postgres successfully
gs_dump[port='8000'][postgres][2017-07-21 15:36:13]: total time: 3793  ms

示例三:执行gs_dump,仅导出postgres数据库所有对象的定义,导出文件格式为sql文本格式。

gs_dump -f /home/omm/backup/postgres_def_backup.sql -p 8000 postgres -s -F p
Password:
gs_dump[port='8000'][postgres][2017-07-20 15:04:14]: dump database postgres successfully
gs_dump[port='8000'][postgres][2017-07-20 15:04:14]: total time: 472 ms

示例四:执行gs_dump,仅导出postgres数据库的所有对象的定义,导出文件格式为文本格式,并对导出文件进行加密。

gs_dump -f /home/omm/backup/postgres_def_backup.sql -p 8000 postgres --with-encryption AES128 --with-key 1234567812345678 -s -F p
Password:
gs_dump[port='8000'][postgres][2018-11-14 11:25:18]: dump database postgres successfully
gs_dump[port='8000'][postgres][2018-11-14 11:25:18]: total time: 1161  ms

② 导出模式

openGauss目前支持使用gs_dump工具导出模式级的内容,包含模式的数据和定义。用户可通过灵活的自定义方式导出模式内容,不仅支持选定一个模式或多个模式的导出,还支持排除一个模式或者多个模式的导出。可根据需要自定义导出如下信息:

  • 导出模式全量信息,包含数据和对象定义。
  • 仅导出数据,即模式包含表中的数据,不包含对象定义。
  • 仅导出模式对象定义,包括:表定义、存储过程定义和索引定义等。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dump同时导出hr和public模式。

    gs_dump -U jack -f /home/omm/backup/MPPDB_schema_backup -p 8000 human_resource -n hr -n public -F d
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名。

    -U jack

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

    -f /home/omm/backup/MPPDB_schema_backup

    -p

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

    -p8000

    dbname

    需要导出的数据库名称

    human_resource

    -n

    只导出与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。

    • 单个模式:-n schemaname
    • 多个模式:多次输入-n schemaname
    • 单个模式:-n hr
    • 多个模式:-n hr -n public

    -F

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

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

    -F d

    其他参数说明请参见《工具参考》中“服务端工具 > gs_dump”章节。

示例

示例一:执行gs_dump,导出hr模式全量信息,导出文件格式为文本格式。

gs_dump -f /home/omm/backup/MPPDB_schema_backup.sql -p 8000 human_resource -n hr -F p
Password:
gs_dump[port='8000'][human_resource][2017-07-21 16:05:55]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:05:55]: total time: 2425  ms

示例二:执行gs_dump,仅导出hr模式的数据,导出文件格式为tar归档格式。

gs_dump -f /home/omm/backup/MPPDB_schema_data_backup.tar -p 8000 human_resource -n hr -a -F t
Password:
gs_dump[port='8000'][human_resource][2018-11-14 15:07:16]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-11-14 15:07:16]: total time: 1865  ms

示例三:执行gs_dump,仅导出hr模式的定义,导出文件格式为目录归档格式。

gs_dump -f /home/omm/backup/MPPDB_schema_def_backup -p 8000 human_resource -n hr -s -F d
Password:
gs_dump[port='8000'][human_resource][2018-11-14 15:11:34]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-11-14 15:11:34]: total time: 1652  ms

示例四:执行gs_dump,导出human_resource数据库时,排除hr模式,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/MPPDB_schema_backup.dmp -p 8000 human_resource -N hr -F c
Password:
gs_dump[port='8000'][human_resource][2017-07-21 16:06:31]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:06:31]: total time: 2522  ms

示例五:执行gs_dump,同时导出hr和public模式,且仅导出模式定义,导出文件格式为tar归档格式。

gs_dump -f /home/omm/backup/MPPDB_schema_backup1.tar -p 8000 human_resource -n hr -n public -s -F t
gs_dump[port='8000'][human_resource][2017-07-21 16:07:16]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:07:16]: total time: 2132  ms

示例六:执行gs_dump,导出human_resource数据库时,排除hr和public模式,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/MPPDB_schema_backup2.dmp -p 8000 human_resource -N hr -N public -F c
Password:
gs_dump[port='8000'][human_resource][2017-07-21 16:07:55]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:07:55]: total time: 2296  ms

示例七:执行gs_dump,导出public模式下所有表(视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/MPPDB_backup3.dmp -p 8000 human_resource -t public.* -t hr.staffs -F c
Password:
gs_dump[port='8000'][human_resource][2018-12-13 09:40:24]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-12-13 09:40:24]: total time: 896  ms

③ 导出表

openGauss支持使用gs_dump工具导出表级的内容,包含表定义和表数据。视图、序列和外表属于特殊的表。用户可通过灵活的自定义方式导出表内容,不仅支持选定一个表或多个表的导出,还支持排除一个表或者多个表的导出。可根据需要自定义导出如下信息:

  • 导出表全量信息,包含表数据和表定义。
  • 仅导出数据,不包含表定义。
  • 仅导出表定义。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dump同时导出指定表hr.staffs和hr.employments。

    gs_dump -U jack -f /home/omm/backup/MPPDB_table_backup -p 8000 human_resource -t hr.staffs -t hr.employments -F d
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名。

    -U jack

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

    -f /home/omm/backup/MPPDB_table_backup

    -p

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

    -p8000

    dbname

    需要导出的数据库名称。

    human_resource

    -t

    指定导出的表(或视图、序列、外表),可以使用多个-t选项来选择多个表,也可以使用通配符指定多个表对象。当使用通配符指定多个表对象时,注意给pattern打引号,防止shell扩展通配符。

    • 单个表:-t schema.table
    • 多个表:多次输入-t schema.table
    • 单个表:-t hr.staffs
    • 多个表:-t hr.staffs -t hr.employments

    -F

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

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

    -F d

    -T

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

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

    -T table1

其他参数说明请参见《工具参考》中“服务端工具 > gs_dump”章节。

示例

示例一:执行gs_dump,导出表hr.staffs的定义和数据,导出文件格式为文本格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup.sql -p 8000 human_resource -t hr.staffs  -F p
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:05:10]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:05:10]: total time: 3116  ms

示例二:执行gs_dump,只导出表hr.staffs的数据,导出文件格式为tar归档格式。

gs_dump -f /home/omm/backup/MPPDB_table_data_backup.tar -p 8000 human_resource -t hr.staffs -a -F t
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:04:26]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:04:26]: total time: 2570  ms

示例三:执行gs_dump,导出表hr.staffs的定义,导出文件格式为目录归档格式。

gs_dump -f /home/omm/backup/MPPDB_table_def_backup -p 8000 human_resource -t hr.staffs -s -F d
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:03:09]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:03:09]: total time: 2297  ms

示例四:执行gs_dump,不导出表hr.staffs,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup4.dmp -p 8000 human_resource -T hr.staffs -F c
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:14:11]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:14:11]: total time: 2450  ms

示例五:执行gs_dump,同时导出两个表hr.staffs和hr.employments,导出文件格式为文本格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup1.sql -p 8000 human_resource -t hr.staffs -t hr.employments -F p
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:19:42]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:19:42]: total time: 2414  ms

示例六:执行gs_dump,导出时,排除两个表hr.staffs和hr.employments,导出文件格式为文本格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup2.sql -p 8000 human_resource -T hr.staffs -T hr.employments -F p
Password:
gs_dump[port='8000'][human_resource][2017-07-21 17:21:02]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 17:21:02]: total time: 3165  ms

示例七:执行gs_dump,导出表hr.staffs的定义和数据,只导出表hr.employments的定义,导出文件格式为tar归档格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup3.tar -p 8000 human_resource -t hr.staffs -t hr.employments --exclude-table-data hr.employments -F t
Password:
gs_dump[port='8000'][human_resource][2018-11-14 11:32:02]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-11-14 11:32:02]: total time: 1645  ms

示例八:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行加密,导出文件格式为文本格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup4.sql -p 8000 human_resource -t hr.staffs --with-encryption AES128 --with-key abcdefg_?1234567 -F p
Password:
gs_dump[port='8000'][human_resource][2018-11-14 11:35:30]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-11-14 11:35:30]: total time: 6708  ms

示例九:执行gs_dump,导出public模式下所有表(包括视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。

gs_dump -f /home/omm/backup/MPPDB_table_backup5.dmp -p 8000 human_resource -t public.* -t hr.staffs -F c
Password:
gs_dump[port='8000'][human_resource][2018-12-13 09:40:24]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2018-12-13 09:40:24]: total time: 896  ms

示例十: 执行gs_dump,仅导出依赖于t1模式下的test1表对象的视图信息,导出文件格式为目录归档格式。

gs_dump -U jack -f /home/omm/backup/MPPDB_view_backup6 -p 8000 human_resource -t t1.test1 --include-depend-objs --exclude-self -F d
Password:
gs_dump[port='8000'][jack][2018-11-14 17:21:18]: dump database human_resource successfully
gs_dump[port='8000'][jack][2018-11-14 17:21:23]: total time: 4239  ms

三、导出所有数据库 

  • 导出所有数据库

  • 导出全局对象

① 导出所有数据库

openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。可根据需要自定义导出如下信息:

  • 导出所有数据库全量信息,包含openGauss中每个数据库信息和公共的全局对象信息(包含角色和表空间信息)。

    使用导出的全量信息可以创建与当前主机相同的一个主机环境,拥有相同数据库和公共全局对象,且库中数据也与当前各库相同。

  • 仅导出数据,即导出每个数据库中的数据,且不包含所有对象定义和公共的全局对象信息。

  • 仅导出所有对象定义,包括:表空间、库定义、函数定义、模式定义、表定义、索引定义和存储过程定义等。

    使用导出的对象定义,可以快速创建与当前主机相同的一个主机环境,拥有相同的数据库和表空间,但是库中并无原数据库的数据。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dumpall一次导出所有数据库信息。

    gs_dumpall  -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名,需要是openGauss管理员用户。

    -Uomm

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

    -f /home/omm/backup/MPPDB_backup.sql

    -p

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

    -p8000

    其他参数说明请参见《工具参考》中“服务端工具 > gs_dumpall”章节。

示例

示例一:执行gs_dumpall,导出所有数据库全量信息(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。

gs_dumpall -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000
Password:
gs_dumpall[port='8000'][2017-07-21 15:57:31]: dumpall operation successful
gs_dumpall[port='8000'][2017-07-21 15:57:31]: total time: 9627  ms

示例二:执行gs_dumpall,仅导出所有数据库定义(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。

gs_dumpall  -U omm -f /home/omm/backup/MPPDB_backup.sql -p 8000 -s
Password:
gs_dumpall[port='8000'][2018-11-14 11:28:14]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 11:28:14]: total time: 4147  ms

示例三:执行gs_dumpall,仅导出所有数据库中数据,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。

gs_dumpall -f /home/omm/backup/MPPDB_backup.sql -p 8000 -a --with-encryption AES128 --with-key abcdefg_?1234567
gs_dumpall[port='8000'][2018-11-14 11:32:26]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 11:23:26]: total time: 4147  ms

②导出全局对象

openGauss支持使用gs_dumpall工具导出所有数据库公共的全局对象,包含数据库用户和组,表空间及属性(例如:适用于数据库整体的访问权限)信息。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dumpall导出表空间对象信息。

    gs_dumpall -U omm -f /home/omm/backup/MPPDB_tablespace.sql -p 8000 -t
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名,需要是openGauss管理员用户。

    -Uomm

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

    -f /home/omm/backup/MPPDB_tablespace.sql

    -p

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

    -p8000

    -t

    或者–tablespaces-only,只转储表空间,不转储数据库或角色。

    -

    其他参数说明请参见《工具参考》中“服务端工具 > gs_dumpall”章节。

示例

示例一:执行gs_dumpall,导出所有数据库的公共全局表空间信息和用户信息(omm用户为管理员用户),导出文件为文本格式。

gs_dumpall -U omm -f /home/omm/backup/MPPDB_globals.sql -p 8000 -g
Password:
gs_dumpall[port='8000'][2018-11-14 19:06:24]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 19:06:24]: total time: 1150  ms

示例二: 执行gs_dumpall,导出所有数据库的公共全局表空间信息(omm用户为管理员用户),并对导出文件进行加密,导出文件为文本格式。

gs_dumpall -U omm -f /home/omm/backup/MPPDB_tablespace.sql -p 8000 -t --with-encryption AES128 --with-key abcdefg_?1234567
Password:
gs_dumpall[port='8000'][2018-11-14 19:00:58]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 19:00:58]: total time: 186  ms

示例三:执行gs_dumpall,导出所有数据库的公共全局用户信息(omm用户为管理员用户),导出文件为文本格式。

gs_dumpall -U omm -f /home/omm/backup/MPPDB_user.sql -p 8000 -r
Password:
gs_dumpall[port='8000'][2018-11-14 19:03:18]: dumpall operation successful
gs_dumpall[port='8000'][2018-11-14 19:03:18]: total time: 162  ms

四、无权限角色导出数据

gs_dump和gs_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导出所要求的权限时,会无法导出数据。此时,需要将有权限的用户赋权给无权限用户,然后可在导出命令中设置–role参数来指定具备权限的角色。在执行命令后,gs_dump和gs_dumpall会使用–role参数指定的角色,完成导出动作。

操作步骤

  1. 以操作系统用户omm登录数据库主节点。
  2. 使用gs_dump导出human_resource数据库数据。

    用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,需要将role1赋权给jack,然后可以在导出命令中设置–role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。

    gs_dump -U jack -f /home/omm/backup/MPPDB_backup.tar -p 8000 human_resource --role role1 --rolepassword  abc@1234 -F t
    Password:
    

    表 1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名。

    -U jack

    -W

    指定用户连接的密码。

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

    -W abcd@123

    -f

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

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

    -p

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

    -p8000

    dbname

    需要导出的数据库名称

    human_resource

    –role

    指定导出使用的角色名。选择该选项,会使导出工具连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有导出工具要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。

    -r role1

    –rolepassword

    指定具体角色用户的角色密码。

    –rolepassword abc@1234

    -F

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

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

    -F t

    其他参数说明请参见《工具参考》中“服务端工具 > gs_dump”章节或“服务端工具 > gs_dumpall”章节。

示例

示例一:执行gs_dump导出数据,用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,可以在导出命令中设置–role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。

human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc";
CREATE ROLE
human_resource=# GRANT role1 TO jack;
GRANT ROLEgs_dump -U jack -f /home/omm/backup/MPPDB_backup11.tar -p 8000 human_resource --role role1 --rolepassword abc@1234 -F t
Password:
gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 4239  ms

示例二:执行gs_dump导出数据,用户jack不具备导出模式public的权限,而角色role1具备该权限,要实现导出模式public,可以在导出命令中设置–role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。

human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc";
CREATE ROLE
human_resource=# GRANT role1 TO jack;
GRANT ROLEgs_dump -U jack -f /home/omm/backup/MPPDB_backup12.tar -p 8000 human_resource -n public --role role1 --rolepassword abc@1234 -F t
Password:
gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfully
gs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 3278  ms

示例三:执行gs_dumpall导出数据,用户jack不具备导出所有数据库的权限,而角色role1(管理员)具备该权限,要实现导出所有数据库,可以在导出命令中设置–role角色为role1,使用role1的权限,完成导出目的。导出文件格式为文本归档格式。

human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc";
CREATE ROLE
human_resource=# GRANT role1 TO jack;
GRANT ROLEgs_dumpall -U jack -f /home/omm/backup/MPPDB_backup.sql -p 8000 --role role1 --rolepassword abc@1234
Password:
gs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: dumpall operation successful
gs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: total time: 6437  ms

本节分享就到这里啦,感谢小伙伴的阅读。

轻松上手使用gs_dump和gs_dumpall命令导出数据相关推荐

  1. mysql怎么退出时保存导出_Mysql应用使用MySQL MySqldump命令导出数据时的注意事项...

    <Mysql应用使用MySQL MySqldump命令导出数据时的注意事项>要点: 本文介绍了Mysql应用使用MySQL MySqldump命令导出数据时的注意事项,希望对您有用.如果有 ...

  2. mysql命令导出数据不完整_使用MySQL MySqldump命令导出数据时的注意事项

    今天使用mysqldump命令备份数据的时候出现了一个问题. 一开始迁移 Discuz 7 论坛的 mysql 数据库时,采用 mysqldump 命令的时候一切顺利,但导入的时候却遇到了 ERROR ...

  3. dump会卡住mysql吗_使用MySQL MySqldump命令导出数据时的注意事项

    今天使用mysqldump命令备份数据的时候出现了一个问题. 一开始迁移 Discuz 7 论坛的 mysql 数据库时,采用 mysqldump 命令的时候一切顺利,但导入的时候却遇到了 ERROR ...

  4. mysq命令行导出sql_mysql利用命令导出数据sql语句

    下面我详细介绍关于在mysql中利用mysqldump导出数据备份并使用source命令实现数据导入,有需要的朋友可参考. 命令行source 导入数据库: 代码如下 1,将要导入的.sql文件移至b ...

  5. SQLite实用武器库(1)利用dump命令和read命令导出数据、导入数据

    调试环境: ubuntu 16.04 Android sdk 7.1.1 / platform-tools sqlite3 (1)创建数据库文件 无需手动创建db文件,直接在命令行执行: ~/test ...

  6. sqlserver bcp命令导出数据

    一.在sqlserver查询分析器里,执行: EXEC master..xp_cmdshell 'bcp "SELECT * FROM [alarm].[dbo].[a_abc]" ...

  7. c 命令导出数据到mysql_MySQL命令行导出数据库

    MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serv ...

  8. Java调用db2cmd命令导出数据

    使用Runtime调用bat文件处理外部脚本时一般使用Runtime.getRuntime.exec(command)就可以了 如果批处理是使用db2的db2cmd时,dos窗口则会弹出db2命令窗口 ...

  9. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

    文章目录 本教程将详细讲解 1. MySQL / MariaDB 数据库数据「导出」 2. MySQL / MariaDB 数据库数据「导入」 3. 使用「卡拉云」一键导入导出 MySQL / Mar ...

最新文章

  1. axis2常用命令(wsdl2java)
  2. Android设置窗体Activity背景透明
  3. wdr和hdr的区别
  4. 一步步在SAP Cloud Platform上创建HANA实例并使用
  5. Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
  6. 管理Jenkins作业配置
  7. django-演练-英雄的编辑
  8. Dstream如何应用RDD特有算子?
  9. java day35【Bootstrap】
  10. android指定分享到qq,Android使用系统分享文件给微信,QQ指定的用户
  11. 全网首发:麒麟平台更新时提示错误:无法解析域名“archive.kylinos.cn”
  12. 怎么修改服务器ipmi地址,设置linux服务器ipmi地址
  13. 生活中的一些哲理名言
  14. Mac无法连接wifi和手机热点 解决方法
  15. ObjectARX标注公差简单实例
  16. 【FPGA——工具篇】32个FPGA开源网站
  17. 前端后端傻傻分不清楚,这里给你答案
  18. 如何通过WWW下载图片 学习笔记
  19. bit、Byte、bps、Bps、pps、Gbps的详细说明及换算
  20. Java SE(六)之面向对象(封装,继承,多态,接口)

热门文章

  1. IjkVideoView播放视频
  2. 2020Java初级面试题一Web+SringMVC
  3. 深富策略:蓝筹集体拉升 风格切换是否启动?
  4. STM32的BOOT的作用和设置
  5. go 使用gooxml 操作Excel
  6. VUE集成EasyUI
  7. 废品情况分析——报表接口开发
  8. 如何获取apk的签名信息?
  9. 数电Modelsim,Quartus仿真实验
  10. 制作一个Java即时翻译器——网页抓取调用百度翻译API