网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

gs_dump

更新时间:2025-01-09 GMT+08:00
分享

背景信息

gs_dump是GaussDB用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。

gs_dump支持导出PDB。当导出PDB时,用户可以自定义导出一个PDB或其中的对象(模式、表、视图等)。

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

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

gs_dump时生成列不会被转储。

gs_dump时HTAP表创建的IMCV元信息(gs_imcv系统表)不会被转储。

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

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

  • 纯文本格式的SQL脚本文件:包含将数据库恢复为其保存时的状态所需的SQL语句。通过gsql运行该SQL脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对SQL脚本文件稍作修改,也可以用来重建数据库。
  • 归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是tar格式、目录归档格式或自定义归档格式,详见表1

gs_dump支持SSL加密通信,使用方式同gsql方式。

使用gs_dump前请确保gs_dump版本与数据库版本保持一致,高版本gs_dump不保证完全兼容低版本内核数据。

gs_dump不适合使用在库中对象数量(表、视图、索引等)过多的场景。当库中对象数量超过十万级,或者对象间依赖关系过于复杂时,gs_dump导出时间会很长。

主要功能

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

表1 导出文件格式

格式名称

-F的参数值

说明

建议

对应导入工具

纯文本格式

p

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

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

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

自定义归档格式

c

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

中型或大型数据库,推荐自定义归档格式。

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

目录归档格式

d

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

-

tar归档格式

t

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

-

说明:
  • 可以使用gs_dump工具将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。gs_dump程序无法压缩已归档导出文件。
  • M-Compatibility模式数据库下,禁止在lower_case_table_names参数不同的实例之间进行导入导出,否则可能引起数据丢失。

注意事项

  • 禁止修改-F c/d/t 格式导出的文件和内容,否则可能无法恢复成功。对于-F p 格式导出的文件,如有需要,可谨慎编辑导出的文件。
  • 为了保证数据一致性和完整性,gs_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。
  • 不支持加密导出存储过程和函数。
  • 对于物化视图,本工具仅支持物化视图定义的导出,在导入后需手动执行REFRESH命令来进行数据恢复。
  • 对于临时对象,本工具仅支持导出全局临时表。
  • 本工具不支持在备机上使用。
  • gs_dump导出分区索引时,部分索引分区的属性无法导出,比如索引分区的unusable状态。可以通过查询系统表PG_PARTITION或者查询视图ADM_IND_PARTITIONS/ADM_IND_SUBPARTITIONS获取索引分区的具体属性,通过ALTER INDEX命令可以手动设置索引分区属性。
  • 对于定时任务,本工具仅支持导出在B兼容性数据库中,通过CREATE EVENT创建的定时任务或通过高级包创建的非周期性定时任务。
  • gs_dump不支持导出自定义Tokenweight分词词典,可以根据报错WARNING: dictionary xx cannot be automatically exported, please create it manually手动创建对应分词词典。
  • 在多租场景下,使用gs_dump导出时,不支持导出模板PDB,也不支持导出关闭的PDB。
  • 在多租场景下,普通用户使用gs_dump导出时,只能导出该用户有权限的数据库对象和数据。
  • 当未开启多租时,gs_dump不支持导出PDB及其内的对象。
  • gs_dump时HTAP表创建IMCV元信息(gs_imcv系统表)不会被转储。
  • 如果数据库中存在初始用户创建的表且表上有含用户自定义函数的表达式索引,系统管理员使用gs_dump导出后,需要使用初始用户通过gsql或gs_restore进行导入。否则会因为安全原因,导致创建索引失败。
说明:

普通用户不支持导出DIRECTORY、SYNONYM,若普通用户进行相关导出,会提示“WARNING: xx not dumped because current user is not a superuser”。

语法

gs_dump [OPTION]... [DBNAME]
说明:

“dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。

例如:

不需要-d,直接指定“dbname”。

gs_dump -p port_number  testdb -f dump1.sql

或者

export PGDATABASE=testdb 
 gs_dump -p port_number -f dump1.sql

环境变量:PGDATABASE

参数说明

通用参数:

  • -f, --file=<FILE_NAME>

    将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为(-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的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。
  • -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

    在将创建数据库对象的指令输出到备份文件之前,先将清理(删除)数据库对象的指令输出到备份文件中。(如果目标数据库中没有任何对象,gsql或gs_restore工具可能会输出一些提示性的错误信息。)

    该选项只对文本格式有意义。针对归档格式,可以在调用gs_restore时指定选项。

  • -C, --create

    备份文件以创建数据库和连接到创建的数据库的命令开始(如果命令脚本是这种方式执行,无所谓在运行脚本之前连接的是哪一个数据库)。

    该选项只对文本格式有意义。针对归档格式,可以在调用gs_restore时指定选项。

    说明:
    • 在多租场景下,使用gs_dump导出指定PDB时,不支持使用该选项。
    • 在M-Compatibility模式数据库下,不支持使用该选项。必须先在目标实例上创出M-Compatibility模式数据库,然后在源实例上导出,最后在目标实例连接新创出的M-Compatibility模式数据库导入。
  • -E, --encoding=ENCODING

    以指定的字符集编码创建转储。默认情况下,以数据库编码创建转储。(得到相同结果的另一个办法是将环境变量“PGCLIENTENCODING”设置为所需的转储编码)

    说明:

    当指定转储编码存在转码场景时,且表中的数据存在非法编码的数据,导出会报错invalid byte sequence,建议使用gs_dump的-s参数只导出定义,并单独使用COPY打开编码容错进行数据的导出与导入。

  • -n, --schema=SCHEMA

    只转储与模式名称匹配的模式,此选项包括模式本身和所有它包含的对象。如果该选项没有指定,所有在目标数据库中的非系统模式将会被转储。写入多个-n选项来选择多个模式。此外,根据gsql的\d命令所使用的相同规则,模式参数可被理解成一个pattern,所以多个模式也可以通过在该pattern中写入通配符来选择。使用通配符时,注意给pattern打引号,防止shell扩展通配符。

    说明:
    • 当-n已指定时,gs_dump不会转储已选模式所附着的任何其他数据库对象。因此,无法保证某个指定模式的转储结果能够自行成功地储存到一个空数据库中。
    • 当-n指定时,非模式对象不会被转储。
    • M-Compatibility兼容模式下, 通过CREATE DATABASE带templatem创建的数据库直接通过指定db_name导出数据; 而通过CREATE DATABASE db_name创建出来的DATABASE与Schema等效,只能通过-n导出数据。
    • GaussDB会自动将对象名称中的大写字母转为小写,当模式名称中包含大写字母时,需要添加额外的引号,如:-n '"Sch1"' 或 -n "\"Sch1\""
    • M-Compatibility模式数据库中,该参数值受GUC参数lower_case_table_names影响。比如在大小写敏感模式下(lower_case_table_names=0),该参数值也需要大小写敏感,如果包含大写字母,则需要添加额外的引号,否则效果相当于小写。在大小写不敏感模式下(lower_case_table_names=1),该参数值需要传小写名称。

    转储支持多个模式的转储。多次输入-n schemaname转储多个模式。

    例如:

    gs_dump -h host_name -p port_number testdb -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 testdb -f backup/bkp_shl2.sql -N sch1 -N sch2

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

    说明:

    GaussDB会自动将对象名称中的大写字母转为小写,当模式名称中包含大写字母时,需要添加额外的引号,如:-N '"Sch1"' 或 -N "\"Sch1\""

  • -o, --oids

    转储每个表的对象标识符(OIDs),作为表的一部分数据。该选项用于应用以某种方式(例如:外键约束方式)参照了OID列的情况。如果不是以上这种情况,请勿使用该选项。

  • -O, --no-owner

    不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs_dump会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的数据库对象的归属。如果脚本正在运行,该语句不会执行成功,除非是由系统管理员触发(或是拥有脚本中所有对象的同一个用户)。通过指定-O,编写一个任何用户都能存储的脚本,且该脚本会授予该用户拥有所有对象的权限。

    该选项只对文本格式有意义。针对归档格式,可以在调用gs_restore时指定选项。

  • -s, --schema-only

    只转储对象定义(模式),而非数据。

  • -S, --sysadmin=NAME

    该参数为扩展预留接口,不建议使用。

  • -t, --table=TABLE

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

    当使用通配符指定多个表对象时,注意给pattern打引号,防止shell扩展通配符。

    当使用-t时,-n和-N没有任何效应,这是因为由-t选择的表的转储不受那些选项的影响。

    说明:
    • -t参数选项个数必须小于等于100。
    • 如果-t参数选项个数大于100,建议使用参数--include-table-file来替换。
    • 当-t已指定时,gs_dump不会转储已选表所附着的任何其他数据库对象。因此,无法保证某个指定表的转储结果能够自行成功地储存到一个空数据库中。
    • -t tablename只转储在默认搜索路径中可见的表。-t *.tablename转储数据库下所有模式下的tablename表。-t schema.table转储特定模式中的表。
    • -t tablename不会导出表上的触发器信息。
    • 对于表名中包含大写字母的表,在使用-t参数指定导出时需对表名添加\"来导出。如对于表"abC",导出需指定-t \"abC\";如对于表schema."abC",导出需指定-t schema.\"abC\"。
    • -t "" 不匹配任何表
    • M-Compatibility模式数据库中,该参数值受GUC参数lower_case_table_names影响。比如在大小写敏感模式下(lower_case_table_names=0),该参数值也需要大小写敏感,如果包含大写字母,则需要添加额外的引号,否则效果相当于小写。在大小写不敏感模式下(lower_case_table_names=1),该参数值需要传小写名称。

    例如:

    gs_dump -h host_name -p port_number testdb -f backup/bkp_shl2.sql -t schema1.table1 -t schema2.table2

    在上面这个例子中,schema1.table1和schema2.table2会被转储。

  • --include-table-file=<FILE_NAME>

    指定需要dump的表文件。

  • -T, --exclude-table=TABLE

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

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

    例如:

    gs_dump -h host_name -p port_number testdb -f backup/bkp_shl2.sql -T table1 -T table2

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

  • --exclude-table-file=<FILE_NAME>

    指定不需要dump的表文件。

    说明:

    同--include-table-file,其内容格式如下:

    schema1.table1

    schema2.table2

    ......

  • -x, --no-acl

    防止转储访问权限(授权/撤销命令),只影响acl对象,不影响privilege对象。

  • -q, --target

    指定导出兼容其他版本数据库的文本文件,目前支持v1和v5参数,指定其他参数不会报错,但不会生效。v1参数用于导出GaussDB v5版本数据库的数据为兼容GaussDB v1版本的文本文件。v5参数用于导出GaussDB v5版本数据库的数据为GaussDB v5版本数据库格式的文本文件,减少了导入GaussDB v5版本数据库时的可能的报错情况。

    在使用v1参数时,建议和--exclude-guc="enable_cluster_resize",--exclude-function,--exclude-with等选项共用,否则导入到GaussDB v1版本数据库时可能报错。

  • -g, --exclude-guc

    该参数为扩展预留接口,不建议使用。

  • --exclude-function

    不导出函数和存储过程。

  • --exclude-with

    导出的表定义,末尾不添加WITH(orientation=row,compression=on)这样的描述。

  • --binary-upgrade

    该参数为扩展预留接口,不建议使用。

    说明:

    M-Compatibility模式数据库不支持该选项。

  • --binary-upgrade-usermap="USER1=USER2"

    该参数为扩展预留接口,不建议使用。

  • --column-inserts/--attribute-inserts

    以INSERT命令带列名(INSERT INTO表(列、…)值…)方式导出数据。这会导致恢复缓慢。但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致对应的一行数据丢失,而非整个表内容。

    说明:

    M-Compatibility模式数据库不支持该选项。

  • --disable-dollar-quoting

    该选项将禁止在函数体前使用美元符号$,并强制使用SQL标准字符串语法对其进行引用。

  • --include-alter-table

    dump后的表删除列。

  • --disable-triggers

    该参数为扩展预留接口,不建议使用。

  • --exclude-table-data=TABLE

    指定不转储任何匹配表pattern的表这方面的数据。依照针对-t的相同规则理解该pattern。

    可多次输入--exclude-table-data来排除匹配任何pattern的表。当用户需要特定表的定义但不需要其中的数据时,这个选项很有帮助。

    排除数据库中所有表的数据,请参见-s, --schema-only

  • --inserts

    发出INSERT命令(而非COPY命令)时转储数据。这会导致恢复缓慢。

    但是由于该选项会针对每行生成一个独立分开的命令,所以在重新加载某行时出现的错误只会导致对应的一行数据丢失,而非整个表内容。注意如果重排列顺序,可能会导致恢复整个失败。列顺序改变时,--column-inserts选项不受影响,虽然会更慢。

    说明:

    M-Compatibility模式数据库不支持该选项。

  • --no-security-labels

    该参数为扩展预留接口,不建议使用。

  • --no-tablespaces

    不输出选择表空间的命令。使用该选项,无论默认表空间是哪一个,在恢复过程中所有对象都会被创建。

    该选项只对文本格式有意义。针对归档格式,可以在调用gs_restore时指定选项。

  • --no-unlogged-table-data

    该参数为扩展预留接口,不建议使用。

  • --non-lock-table

    该参数仅供软件间接口调用。

  • --quote-all-identifiers

    强制对所有标识符加引号。为了向后续版本迁移,且其中可能涉及引入额外关键词,在转储相应数据库时该选项会有帮助。

    说明:

    M-Compatibility模式数据库不支持该选项。

  • --section=SECTION

    指定已转储的名称区段(pre-data、data、和post-data)。

  • --serializable-deferrable

    转储过程中使用可串行化事务,以确保所使用的快照与之后的数据库状态一致;要实现该操作需要在无异常状况的事务流中等待某个点,因为这样才能保证转储成功,避免引起其他事务出现serialization_failure要重新再做。

    但是该选项对于灾难恢复没有益处。对于在原始数据库进行升级的时候,加载一个数据库的复制作为报告或其他只读加载共享的转储是有帮助的。没有这个选项,转储会反映一个与任何事务最终提交的序列化执行不一致的状态。

    如果当gs_dump启动时,读写事务仍处于非活动状态,即便使用该选项也不会对其产生影响。如果读写事务处于活动状态,转储的开始时间可能会延迟一段不确定的时间。

  • --use-set-session-authorization

    输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令来确定对象所有权。这样令转储更加符合标准,但是如果转储文件中的对象的历史有些问题,那么可能不能正确恢复。并且,使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限则低得多。但是SET SESSION AUTHORIZATION部分支持直接使用密文密码,因为使用此参数导出的脚本可能无法正常恢复,不建议使用此参数导出。

    说明:

    SET SESSION AUTHORIZATION使用范围:

    • 系统管理员可以通过SET SESSION AUTHORIZATION语句切换到普通用户,无法切换到初始用户, 其他sysadmin、opradmin、monadmin、poladmin和auditadmin。
    • 其他用户无法通过SET SESSION AUTHORIZATION语句切换用户。
  • --with-encryption=AES128

    指定转储数据需用AES128进行加密。

  • --with-key=KEY

    AES128密钥规则如下:

    • 密钥长度为8~16个字符。
    • 至少包含大写字母(A-Z),小写字母(a-z),数字(0-9),非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。
    说明:

    不支持加密导出存储过程和函数。

  • --with-salt=RANDVALUES

    gs_dumpall使用此参数传递随机值。

  • --include-extensions

    在转储中包含扩展。

    须知:

    扩展功能为内部使用功能,不建议用户使用。

  • --include-depend-objs

    备份结果包含依赖于指定对象的对象信息。该参数需要同-t/--include-table-file参数关联使用才会生效。

  • --exclude-self

    备份结果不包含指定对象自身的信息。该参数需要同-t/--include-table-file参数关联使用才会生效。

  • --pipeline

    使用管道传输密码,禁止在终端使用。

  • --dont-overwrite-file

    文本、tar、以及自定义格式情况下会重写现有文件。这对目录格式不适用。

    例如:

    设想这样一种情景,即当前目录下backup.sql已存在。如果在输入命令中输入-f backup.sql选项时,当前目录恰好也生成backup.sql,文件就会被重写。

    如果备份文件已存在,且输入--dont-overwrite-file选项,则会报告附带‘转储文件已经存在’信息的错误。

    gs_dump -p port_number testdb -f backup.sql -F plain --dont-overwrite-file
说明:
  • -s/--schema-only和-a/--data-only不能同时使用。
  • -c/--clean和-a/--data-only不能同时使用。
  • --inserts/--column-inserts和-o/--oids不能同时使用,因为INSERT命令不能设置OIDS。
  • --role和--rolepassword必须一起使用。
  • --binary-upgrade-usermap和--binary-upgrade必须一起使用。
  • --include-depend-objs/--exclude-self需要同-t/--include-table-file参数关联使用才会生效。
  • --exclude-self必须同--include-depend-objs一起使用。
  • --with-encryption=AES128仅支持-F p/plain。
  • --with-key=KEY仅支持-F p/plain。
  • --with-salt=RANDVALUES由gs_dumpall调用,不需要用户手动输入。

连接参数:

  • -h, --host=HOSTNAME

    指定主机名称。如果数值以斜杠开头,则被用作到Unix域套接字的路径。缺省从PGHOST环境变量中获取(如果已设置),否则,尝试一个Unix域套接字连接。

    该参数只针对数据库外,对数据库内本机IPv4用127.0.0.1,IPv6用::1

    例如:主机名

    环境变量:PGHOST

  • -p, --port=PORT

    指定主机端口。在开启线程池情况下,建议使用 pooler port,即主机端口+1。

    环境变量:PGPORT

  • -U, --username=NAME

    指定所连接主机的用户名,跨节点执行不支持使用初始用户。

    环境变量:PGUSER

  • -w, --no-password

    不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。

  • -W, --password=PASSWORD

    指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W选项;如果不加此参数,并且不是系统管理员,则会提示交互式输入,为了系统安全,推荐使用交互式输入密码方式。

  • --role=ROLENAME

    指定创建转储使用的角色名。选择该选项,会使gs_dump连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有gs_dump要求的权限时,该选项会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以超系统管理员身份登录,而使用该选项能够在不违反该规定的情况下完成转储。

  • --rolepassword=ROLEPASSWORD

    指定角色名的密码。

说明

如果某数据库有任何本地数据要添加到template1数据库,请谨慎将gs_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如:

CREATE DATABASE foo WITH TEMPLATE template0;

tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。

由gs_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,建议从某转储文件恢复之后运行ANALYZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs_dumpall转储,还有数据库用户和其他完成安装设置。

示例

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

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

说明:

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

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

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

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

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

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

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

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

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

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

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

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

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

备份仅依赖于testtable的视图

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

修改testtable名称

gsql -p 37300 testdb -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 testdb -r -f backup/MPPDB_backup.sql

示例7:在多租场景下,执行gs_dump,导出名称为testpdb的PDB的全量信息,导出的backup_pdb.sql文件格式为纯文本格式。

gs_dump -U omm testpdb -f backup/backup_pdb.sql -p 20000 -F p
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:41:21]: The total objects number is 459.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:41:21]: [100.00%] 459 objects have been dumped.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:41:21]: dump database testpdb successfully
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:41:21]: total time: 5427  ms

示例8:在多租场景下,执行gs_dump,导出名称为testpdb的PDB的全量信息,导出的backup_pdb_t.tar文件格式为tar格式。

gs_dump -U omm testpdb -p 20000 -f backup/backup_pdb_t.tar -F t
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:02:40]: The total objects number is 459.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:02:40]: [100.00%] 459 objects have been dumped.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:02:40]: dump database testpdb successfully
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:02:40]: total time: 5506  ms

示例9:在多租场景下,执行gs_dump,导出名称为testpdb的PDB的全量信息,导出的backup_pdb_c文件格式为自定义归档格式。

gs_dump -U omm testpdb -p 20000 -f backup/backup_pdb_c -F c
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 16:57:19]: The total objects number is 459.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 16:57:19]: [100.00%] 459 objects have been dumped.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 16:57:19]: dump database testpdb successfully
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 16:57:19]: total time: 5622  ms

示例10:在多租场景下,执行gs_dump,导出名称为testpdb的PDB的全量信息,导出的backup_pdb_dir文件格式为目录格式。

gs_dump -U omm testpdb -p 20000 -f backup/backup_pdb_dir -F d
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:05:46]: The total objects number is 459.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:05:46]: [100.00%] 459 objects have been dumped.
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:05:46]: dump database testpdb successfully
gs_dump[user='omm'][localhost][port='20000'][testpdb][2024-04-26 17:05:46]: total time: 5680  ms

示例11:在多租场景下,执行gs_dump,使用-C, --create选项导出名称为testpdb的PDB的全量信息,gs_dump报错退出

gs_dump -U omm testpdb -C -p 20000 -f backup/backup_pdb_dir -F d
gs_dump unsupport the '-C, --create' option for pdb.

相关命令

gs_dumpall

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容