一、概述
gs_dumpall是一款用于导出数据库相关信息的工具,支持导出完整一致的openGauss数据库所有数据,同时不影响用户对数据库的正常访问。
二、工具
1、特点
gs_dumpall是openGauss用于导出所有数据库相关信息工具,它可以导出openGauss数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据以及openGauss所有数据库公共的全局对象。
gs_dumpall工具由操作系统用户omm执行。
gs_dumpall工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。
gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻该openGauss数据库的数据状态,T1时刻之后对openGauss的修改不会被导出。
gs_dumpall工具在进行数据导出时生成的列不会被转储。
gs_dumpall在导出openGauss所有数据库时分为两部分:
- gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。
- gs_dumpall通过调用gs_dump来完成openGauss中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。
以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复openGauss数据库。
2、注意事项
- 禁止修改导出的文件和内容,否则可能无法恢复成功。
- 为了保证数据一致性和完整性,gs_dumpall会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs_dumpall会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。
- 由于gs_dumpall读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组以及创建数据库。
3、语法
gs_dumpall [OPTION]...
通用参数:
-f, --filename=FILENAME
将输出发送至指定文件。如果这里省略,则使用标准输出。
--lock-wait-timeout=TIMEOUT
请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement_timeout的格式指定超时时间。
转储参数:
-a, --data-only
只转储数据,不转储模式(数据定义)。
-c, --clean
在重新创建数据库之前,执行SQL语句清理(删除)这些数据库。针对角色和表空间的转储命令已添加。
-r, --roles-only
只转储角色,不转储数据库或表空间。
-s, --schema-only
只转储对象定义(模式),而非数据。
-t, --tablespaces-only
只转储表空间,不转储数据库或角色。
4、说明
由于gs_dumpall内部调用gs_dump,所以一些诊断信息参见gs_dump。
一旦恢复,最好在每个数据库上运行ANALYZE,优化程序提供有用的统计数据。
gs_dumpall恢复前需要所有必要的表空间目录为空;否则,对于处在非默认位置的数据库,数据库创建会失败。
5、示例
使用gs_dumpall一次导出openGauss的所有数据库。
说明: gs_dumpall仅支持纯文本格式导出。所以只能使用gsql恢复gs_dumpall导出的转储内容。
gs_dumpall -f backup/bkp2.sql -p 37300
标签:dumpall,gs,数据库,导出,转储,openGauss
From: https://blog.51cto.com/u_13236892/6165538