关于服务端工具gs_dump的部分解读

背景信息

gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可a以是默认数据库postgres,也可以是自定义数据库。gs_dump工具由操作系统用户omm执行。gs_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。gs_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。

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

注意事项

禁止修改导出的文件和内容,否则可能无法恢复成功。
为了保证数据一致性和完整性,gs_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。


语法

gs_dump [OPTION]... [DBNAME

参数说明

通用参数:

  • -f, --file=FILENAME
    将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为(-F c/-F d/-F t)时,必须指定-f参数。如果-f的参数值含有目录,要求当前用户对该目录具有读写权限,并且不能指定已有目录。
  • -F, --format=c|d|t|p
    选择输出格式。格式如下:
    – p|plain:输出一个文本SQL脚本文件(默认)。
    – c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs_restore输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。
    – d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。
    – t|tar:输出一个tar格式的归档形式,作为gs_restore输入信息。tar格式与目录格式兼容;tar格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是,tar格式不支持压缩且对于单独表有8GB的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。输出一个tar格式的归档形式,也可以作为gsql输入信息。
  • -v, --verbose
    指定verbose模式。该选项将导致gs_dump向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。
  • -V, --version
    打印gs_dump版本,然后退出。
  • -Z, --compress=0-9
    指定使用的压缩比级别。
    取值范围:0~9
    – 0表示无压缩。
    – 1表示压缩比最小,处理速度最快。
    – 9表示压缩比最大,处理速度最慢。
    针对自定义归档格式,该选项指定单个表数据片段的压缩,默认方式是以中等级别进行压缩。tar归档格式目前不支持压缩。
  • –lock-wait-timeout=TIMEOUT
    请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement_timeout的格式指定超时时间。
  • -?, --help
    显示gs_dump命令行参数帮助,然后退出。
    转储参数:
  • -a, --data-only
    只输出数据,不输出模式(数据定义)。转储表数据、大对象和序列值。
  • -b, --blobs
    该参数为扩展预留接口,不建议使用。
  • -c, --clean
    在将创建数据库对象的指令输出到备份文件之前,先将清理(删除)数据库对象的指令输出到备份文件中。(如果目标数据库中没有任何对象,gs_restore工具可能会输出一些提示性的错误信息)该选项只对文本格式有意义。针对归档格式,可以调用gs_restore时指定选项。
  • -C, --create
    备份文件以创建数据库和连接到创建的数据库的命令开始。(如果命令脚本是这种方式执行,可以先指定任意数据库用于执行创建数据库的命令,数据不会恢复到指定的数据库中,而是恢复到创建的数据库中。)该选项只对文本格式有意义。针对归档格式,可以在调用gs_restore时指定选项。
  • -E, --encoding=ENCODING
    以指定的字符集编码创建转储。默认情况下,以数据库编码创建转储。(得到相同结果的另一个办法是将环境变量“PGCLIENTENCODING”设置为所需的转储编码。)
  • -n, --schema=SCHEMA
    只转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。如果该选项没有指定,所有在目标数据库中的非系统模式将会被转储。写入多个-n选项来选择多个模式。此外,根据gsql的\d命令所使用的相同规则,模式参数可被理解成一个pattern,所以多个模式也可以通过在该pattern中写入通配符来选择。使用通配符时,注意给pattern打引号,防止shell扩展通配符。

例如:


gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -n sch1 -n sch2

在上面这个例子中,sch1和sch2会被转储。

  • -N, --exclude-schema=SCHEMA
    不转储任何与模式pattern匹配的模式。pattern将参照针对-n的相同规则来理解。可以通过输入多次-N,不转储与任何pattern匹配的模式。当同时输入-n和-N时,会转储与至少一个-n选项匹配、与-N选项不匹配的模式。如果有-N没有-n,则不转储常规转储中与-N匹配的模式。转储过程支持排除多个模式。在转储过程中,输入-N exclude schema name排除多个模式。
    例如:
gs_dump -h host_name -p port_number postgres -f backup/bkp_shl2.sql -N sch1 -N sch2

在上面这个例子中,sch1和sch2在转储过程中会被排除。


示例

使用gs_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。示例中“Bigdata@123”表示数据库用户密码;“backup/MPPDB_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“postgres”表示要访问的数据库名。

  1. 执行gs_dump,导出postgres数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。
gs_om -t start
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
  1. 执行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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值