openGauss逻辑备份恢复工具gs_dump/gs_restore

gs_dump

  1. gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等),回收站对象除外。
  2. gs_dump工具由操作系统用户omm执行。
  3. gs_dump工具在进行数据导出时,其他用户可以访问openGauss数据库(读或写)。
  4. gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。
  5. 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程序无法压缩已归档导出文件。

选项说明

bash 复制代码
[omm@openGauss01 ~]$ gs_dump --help
gs_dump 将数据库转储为文本文件或其他格式。

用法:
  gs_dump [选项]... [数据库名]

连接选项:
  -h, --host=HOSTNAME                        数据库服务器主机或套接字目录
  -p, --port=PORT                            数据库服务器端口号
  -U, --username=NAME                        以指定数据库用户连接
  -w, --no-password                          不提示输入密码
  -W, --password=PASSWORD                    指定数据库用户的密码
  --role=ROLENAME                            转储前执行SET ROLE
  --rolepassword=ROLEPASSWORD                角色的密码

通用选项:
  -f, --file=FILENAME                        输出文件或目录名称
  -F, --format=c|d|t|p                       输出文件格式(custom, directory, tar, plain text(默认))
  -v, --verbose                              详细模式
  -V, --version                              输出版本信息后退出
  -Z, --compress=0-9                         custom格式的压缩级别
  --lock-wait-timeout=TIMEOUT                等待表锁超时后失败
  -?, --help                                 显示此帮助信息后退出

控制输出内容的选项:
  -a, --data-only                            仅转储数据,不转储模式
  -b, --blobs                                包含大对象数据
  -c, --clean                                在重建前清除(删除)数据库对象
  -C, --create                               在转储中包含创建数据库的命令
  -E, --encoding=ENCODING                    以指定编码转储数据
  -g, --exclude-guc=GUC_PARAM                不转储指定的GUC参数设置
  -n, --schema=SCHEMA                        仅转储指定模式
  -N, --exclude-schema=SCHEMA                不转储指定模式
  -o, --oids                                 在转储中包含OID
  -O, --no-owner                             在纯文本格式中跳过对象所有权恢复
  -s, --schema-only                          仅转储模式,不转储数据
  -q, --target=VERSION                       转储数据格式兼容的GaussDB版本(v1或...)
  -S, --sysadmin=NAME                        纯文本格式中使用的系统管理员用户名
  -t, --table=TABLE                          仅转储指定表
  -T, --exclude-table=TABLE                  不转储指定表
  --include-table-file=FileName              仅转储文件中列出的表
  --exclude-table-file=FileName              不转储文件中列出的表
  --pipeline                                 使用管道传递密码(禁止在终端使用)
  -x, --no-privileges/--no-acl               不转储权限(grant/revoke)
  --column-inserts/--attribute-inserts       以带列名的INSERT命令格式转储数据
  --disable-dollar-quoting                   禁用美元符号引用,使用SQL标准引用
  --disable-triggers                         在仅数据恢复期间禁用触发器
  --exclude-table-data=TABLE                 不转储指定表的数据
  --exclude-with                             不转储表的WITH()子句
  --inserts                                  以INSERT命令而非COPY格式转储数据
  --no-publications                          不转储发布
  --no-security-labels                       不转储安全标签分配
  --no-subscriptions                         不转储订阅
  --no-tablespaces                           不转储表空间分配
  --no-unlogged-table-data                   不转储未记录日志的表数据
  --include-alter-table                      转储表的删除列操作
  --quote-all-identifiers                    引用所有标识符(即使非关键字)
  --section=SECTION                          转储指定段落(pre-data, data或post-data)
  --serializable-deferrable                  等待直到转储可无异常执行
  --dont-overwrite-file                      不覆盖现有文件(针对纯文本、tar和自定义格式)
  --use-set-session-authorization            使用SET SESSION AUTHORIZATION命令而非ALTER OWNER命令设置所有权
  --exclude-function                         不转储函数和存储过程
  --gen-key                                  若无可用密钥,可设置此选项生成密钥并加密转储数据以供后续使用
  --include-extensions                       在转储中包含扩展
  --binary-upgrade                           仅限升级工具使用
  --binary-upgrade-usermap="USER1=USER2"     仅限升级工具用于用户名映射
  --non-lock-table                           仅限OM工具使用
  --include-depend-objs                      转储依赖于输入对象的对象
  --exclude-self                             不转储输入对象本身

示例

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

Plain 复制代码
# 在恢复前清除数据库对象(删除索引、表、序列等)
[omm@openGauss01 ~]$ gs_dump -h localhost -p 15400 -U omm -W Wl123456# postgres -F p --clean -f /data/backup/postgres.sql 
# 直接恢复数据,如果库内存在相同内容会报错
[omm@openGauss01 ~]$ gs_dump -h localhost -p 15400 -U omm -W Wl123456# postgres -F p -f /data/backup/postgres.sql 

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

Plain 复制代码
[omm@openGauss01 ~]$ gs_dump -h localhost -p 15400 -U omm -W Wl123456# postgres -F t -f /data/backup/postgres.tar

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

Plain 复制代码
[omm@openGauss01 ~]$ gs_dump -h localhost -p 15400 -U omm -W Wl123456# postgres -F c --clean -f /data/backup/postgres.dmp

示例4:执行gs_dump,只导出postgres数据库中的public模式中的sbtest1表

bash 复制代码
gs_dump -h localhost -p 15400 -U omm -W Wl123456# postgres -F c \
--schema=public --table=sbtest1 \
-f /data/backup/postgres_public_sbtest1.dmp

gs_restore

  1. gs_restore是openGauss提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。
  2. gs_restore工具由操作系统用户omm执行。
  3. gs_restore工具目前支持进度打印,会根据已经恢复的对象数比上需要恢复的总对象数打印进度。

选项说明

bash 复制代码
gs_restore 用于从 gs_dump 创建的归档文件中恢复 openGauss 数据库。

[基本用法]
  gs_restore [选项]... 备份文件

[通用选项]
  -d, --dbname=数据库名        指定要恢复到的目标数据库名称
  -f, --file=文件名            将恢复内容输出到指定文件(默认为标准输出)
  -F, --format=格式            指定备份文件格式(c=自定义/d=目录/t=tar,通常自动识别)
  -l, --list                  列出备份文件中的内容概要(不实际执行恢复)
  -v, --verbose               显示详细的恢复过程信息
  -V, --version               显示版本信息后退出
  -?, --help                  显示本帮助信息

[恢复控制选项]
  -a, --data-only             仅恢复数据,不恢复表结构等元数据
  -c, --clean                 恢复前先删除数据库中已存在的对象
  -C, --create                恢复时自动创建目标数据库
  -e, --exit-on-error         遇到错误时立即退出(默认会继续)
  -I, --index=索引名          仅恢复指定的索引
  -j, --jobs=数量             使用多线程并行恢复(加快大数据库恢复速度)
  -L, --use-list=文件         按照指定文件中的列表顺序恢复对象
  -n, --schema=模式名         仅恢复指定模式下的对象
  -O, --no-owner              不恢复对象的所有权信息
  -P, --function=函数名       仅恢复指定的函数
  -s, --schema-only           仅恢复数据库结构,不恢复实际数据
  -S, --sysadmin=用户名       指定用于禁用触发器的管理员账号
  -t, --table=表名            仅恢复指定的表
  -T, --trigger=触发器名      仅恢复指定的触发器
  -x, --no-privileges         不恢复权限设置(Grant/Revoke)
  -1, --single-transaction    在单个事务中执行恢复

[连接选项]
  -h, --host=主机名           数据库服务器地址
  -p, --port=端口号           数据库服务器端口
  -U, --username=用户名       连接数据库的用户名
  -w, --no-password           不提示输入密码
  -W, --password=密码         指定连接密码
  --role=角色名               恢复前先切换到指定角色
  --rolepassword=角色密码     指定角色的密码

[加密选项]
  --with-decryption=类型      指定解密算法类型
  --with-key=密钥             指定解密密钥(Base64编码)
  --with-salt=盐值            指定解密盐值(16字节)

[其他选项]
  --disable-triggers          在数据恢复期间禁用触发器
  --no-data-for-failed-tables 跳过创建失败表的数据恢复
  --no-tablespaces            不恢复表空间信息
  --section=部分              指定恢复的部分(pre-data/data/post-data)
  --pipeline                  使用管道传递密码(禁止在终端使用)

示例

示例1:执行gsql程序,恢复(纯文本格式)纯文本格式 的sql文件到postgres数据库

bash 复制代码
gsql -h localhost -p 15400 -U omm -W Wl123456# -d postgres -f /data/backup/postgres.sql

示例2:执行gs_restore,将导出的dmp文件(自定义归档格式)导入到postgres数据库。

Plain 复制代码
gs_restore -h localhost -p 15400 -U omm -W Wl123456# -d postgres /data/backup/postgres.dmp --clean --jobs=8

示例3:执行gs_restore,只导入某表

Plain 复制代码
gs_restore -h localhost -p 15400 -U omm -W Wl123456# -d postgres /data/backup/postgres.dmp --clean --jobs=8 --schema=public --table=sbtest1
相关推荐
老纪的技术唠嗑局2 小时前
硬件成本降52%,快钱支付引入OceanBase后的降本增效
数据库·架构
不是二师兄的八戒3 小时前
阿里云KMS完全指南:从零开始的密钥管理实践
数据库·阿里云·云计算
小云数据库服务专线3 小时前
GaussDB 数据库架构师修炼(十三)安全管理(1)-账号的管理
gaussdb
朱皮皮呀4 小时前
Redis缓存详解:内存淘汰和缓存的预热、击穿、雪崩、穿透的原理与策略
数据库·redis·缓存
小句4 小时前
MySQL索引
数据库·mysql
TDengine (老段)5 小时前
TDengine IDMP 基本功能(3.数据三化处理)
大数据·数据库·物联网·ai·语言模型·时序数据库·tdengine
GreatSQL6 小时前
GreatSQL备份报错"PROCESS权限不足"分析与解决
数据库
言笑非6 小时前
ClickHouse物化视图
数据库
专注VB编程开发20年7 小时前
C#教程之NPOI读写excel文件XLS,XLSX格式
数据库·microsoft·c#·excel·xlsx·xls