逻辑备份工具gs_dump
gs_dump是openGauss提供的用于导出数据库相关信息的工具,用户可自定义导出数据库中的所有内容或指定的对象(schema、table、view等)。gs_dump支持将数据信息导出为纯文本格式的SQL脚本或者其他归档文件中。对于SQL脚本,可通过gsql运行该脚本来将数据库恢复至保存时刻的状态。对于归档格式的文件,需配合gs_restore来进行恢复。
1 简单使用
1.1 备份
1.1.1 常用参数说明
- -h:主机地址
- -p:指定数据库服务端口
- -f:指定输出文件名或输出目录,缺省则使用标准输出
- -F:指定出输出格式,可选参数如下:
| 可选项 | 说明 |
|---|---|
| p | 输出SQL脚本 |
| c | 自定义归档格式, 并以目录形式输出 |
| t | 输出tar格式的归档文件,不支持-Z参数设置压缩级别 |
| d | 该格式会创建一个目录,包含两类文件,一类是目录文件,另一类是blob对应的数据文件 |
- -v:指定
verbose模式,会将处理过程中的详细信息进行输出 - -V:–version,打印版本信息
- -Z:–compression=0-9,指定压缩级别,0表示不压缩。对于自定义归档格式,默认中等级别压缩
- -lock-wait-timeout:指定转储开始时等待共享锁的时间
- -a:–data-only,只输出数据,不输出模式(数据定义)
- -t:指定需要转储的
table,默认导出所有表。如果需要转储多个table,可通过-t tb -t tb1 ···进行设置 - -T:指定不需要转储的
table - -n:指定需要转储的
schema - -N:指定不需要转储的
schema
1.1.2 使用示例
- 输出SQL脚本
gs_dump -h host -p port dbname -F p -f /path/to/file/filename.sql --insert
- 输出归档格式
gs_dump -h host -p port dbname -F c -f /path/to/file/filename.dmp -Z 9
- 输出tar格式文件
gs_dump -h host -p port -F t -f /path/to/file/filename.tar
- 输出目录
gs_dump -h host -p port -F d -f /path/to/file/
说明:加上--insert可将输出文件中的COPY命令转为INSERT INTO tb VALUES()的形式
1.2 恢复
- SQL脚本恢复
对于gs_dump生成的SQL脚本,数据恢复比较简单,可通过gsql连接上服务器后通过-i filename.sql进行恢复,也可以通过gsql -p port -f filename.sql进行恢复 - 归档文件恢复
gs_restore -h host -p port -d dbname file/
说明:gs_restore会自动决定归档格式
2 工作原理
2.1 数据查询命令
gs_dump通过SQL语句对当前时刻下数据库的相关信息进行查询,并将查询信息转储为指定格式的文件
- 使用
--insert
核心查询命令
CURSOR _pg_dump_cursor_ FOR SELECT * FROM ONLY tb;
FETCH 100 FROM _pg_dump_cursor_;
- 不使用
--insert
核心查询命令
COPY tb TO stdout;
2.2 数据一致性保证
通过START TRANSACTION和COMMIT来保证同一个gs_dump命令导出数据的一致性
3 其它
3.1 gs_dumpall
在内部实现上,gs_dumpall通过执行gs_dump命令来进行数据的并行导出:executePopenCommandsParallel(cmd, dbname)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




