sd_dumpall
sd_dumpall¶
将SeaboxMPP数据库系统中的所有数据库提取到单个脚本文件或其他归档文件中。
- 语法
-
``` bash sd_dumpall [connection-option …] [dump_option …]
sd_dumpall -? | –help
sd_dumpall -V | –version ```
- 描述
-
sd_dumpall
是一个标准工具,用于备份SeaboxMPP数据库实例中的所有数据库,SeaboxMPP数据库也支持该实用程序。它创建一个(非并行)转储文件。sd_dumpall
创建一个包含SQL命令的脚本文件, 该命令可用作ssql
还原数据库的输入。它通过为每个数据库调用sd_dump
来做到这一点。sd_dumpall
还转储所有数据库通用的全局对象。 (sd_dump
不会保存这些对象。)当前包括有关数据库用户和组的信息,以及整体上适用于数据库的访问权限。由于
sd_dumpall
从所有数据库读取表,因此您很可能必须以数据库超级用户身份连接才能产生完整的转储。另外,您将需要超级用户特权才能执行保存的脚本,以便被允许添加用户和组以及创建数据库。SQL脚本将被写入标准输出。 使用
[-f | --file]
选项或shell运算符将其重定向到文件中。sd_dumpall
需要多次连接到SeaboxMPP数据库coordinator服务器(每个数据库一次)。如果使用密码验证,则很可能每次都要求输入密码。在这种情况下,使用
~/.sdpass
文件很方便。 - 选项
-
以下选项均为转储选项:
- -a | –data-only
- 仅转储数据,而不转储模式(数据定义)。 此选项仅对纯文本格式有意义。 对于归档格式,可以在调用
sd_restore
时指定该选项。 - -c | –clean
- 在创建数据库对象(用于创建它们的命令)之前,输出用于清理(删除)数据库对象的命令。 此选项仅对纯文本格式有意义。
对于归档格式,可以在调用
sd_restore
时指定该选项。 - -E | –encoding=ENCODING
- 将数据以编码 ENCODING 转储
- -f
filename
| –file=filename
- 将输出发送到指定文件。
- -g | –globals-only
- 仅转储全局对象(角色和表空间),而不转储数据库。
- -O | –no-owner
-
不要输出命令来设置对象的所有权以匹配原始数据库。 默认情况下,
sd_dump
发出ALTER OWNER
或SET SESSION AUTHORIZATION
语句来设置创建的数据库对象的所有权。除非由超级用户(或拥有脚本中所有对象的同一用户)启动脚本,否则运行脚本时这些语句将失败。
要使脚本可以被任何用户恢复,但将赋予该用户所有对象的所有权,请指定
-O
。 此选项仅对纯文本格式有意义。对于归档格式,可以在调用
sd_restore
时指定该选项。 - -r | –roles-only
- 仅转储角色,而不是数据库或表空间。
- -s | –schema-only
- 仅转储对象定义(模式),而不转储数据。
- -S
username
| –superuser=username
- 指定禁用触发器时要使用的超级用户名。 仅在使用
--disable-triggers
时才有意义。最好不要这样做,而是以超级用户身份启动生成的脚本。 - -t | –tablespaces-only
- 仅转储表空间,而不是数据库或角色。
- -v | –verbose
- 指定详细模式。 这将导致
sd_dump
向转储文件输出详细的对象注释和开始/停止时间,并向标准错误输出消息。 - -V | –version
- 打印
sd_dumpall
版本并退出。 - -x | –no-privileges | –no-acl
- 防止转储访问权限(
GRANT/REVOKE
命令)。 - --binary-upgrade
- 此选项供就地升级工具使用。 不建议或不支持将其用于其他目的。 该选项的行为在将来的版本中可能会更改,恕不另行通知。
- --column-inserts | –attribute-inserts
-
将数据转储为带有显式列名(
INSERT INTO table (column, ...) VALUES ...
)的INSERT
命令。 这会使恢复非常缓慢。它主要用于制作可以装入非基于seaboxsqlQL生态的数据库的转储。
同样,由于此选项为每一行生成一个单独的命令,因此在重新加载行时发生错误只会导致该行丢失,而不是整个表内容丢失。
- --disable-dollar-quoting
- 此选项禁止对函数体使用美元引号,并强制使用SQL标准字符串语法对其进行引用。
- --disable-triggers
-
仅当创建仅数据转储时,此选项才相关。 它指示
sd_dumpall
包含一些命令,以在重新加载数据时临时禁用目标表上的触发器。如果不想在数据重装期间调用的表上有触发器,请使用此选项。为
--disable-triggers
发出的命令必须以超级用户身份执行。因此,还应该使用-S
指定超级用户名,或者最好小心地以超级用户身份启动生成的脚本。此选项仅对纯文本格式有意义。 对于归档格式,可以在调用
sd_restore
时指定该选项。 - --inserts
-
将数据转储为
INSERT
命令(而不是COPY
)。 这会使恢复非常缓慢。它主要用于制作可以装入非基于seaboxsqlQL的生态数据库的转储。但是,由于此选项为每一行生成一个单独的命令,因此在重新加载行时发生错误只会导致该行丢失,而不是整个表内容丢失。
请注意,如果您重新排列了列顺序,则还原可能会完全失败。
--column-inserts
选项可以安全地防止列顺序更改,尽管速度更慢。 - --lock-wait-timeout=
timeout
-
不要在转储开始时一直等待获取共享表锁。 相反,如果无法在指定的
timeout
时间内锁定表,则失败。 可以使用SET statement_timeout
接受的任何格式指定超时。允许的值因要从中转储的服务器版本而异,但所有SeaboxMPP数据库版本均接受整数毫秒。
- --no-security-labels
- 不要转储安全标签。
- --no-tablespaces
- 不输出命令以选择表空间。 使用此选项,将在还原期间的默认表空间中创建所有对象。
- --no-unlogged-table-data
- 不要转储未记录表的内容。 此选项对是否转储表定义(模式)没有影响。 它仅禁止转储表数据。 从备用服务器转储时,始终排除未记录表中的数据。
- --quote-all-identifiers
-
强制给所有标识符加上引号。 当从SeaboxMPP数据库主版本不同于
sd_dumpall
的中转储数据库时,或者打算将输出加载到其他主版本的服务器中时,建议使用此选项。默认情况下,
sd_dumpall
仅为在其主版本中为保留字的标识符加引号。在处理其他版本的保留字可能略有不同的服务器时,有时会导致兼容性问题。使用
--quote-all-identifiers
可以防止此类问题,但代价是难以阅读的转储脚本。 - --resource-groups
- 转储资源组定义。
- --use-set-session-authorization
-
输出SQL标准的
SET SESSION AUTHORIZATION
命令而不是ALTER OWNER
命令来确定对象所有权。这使转储更加符合标准,但是依赖转储中对象的历史记录,可能无法正确还原。 使用
SET SESSION AUTHORIZATION
进行的转储将需要超级用户权限才能正确还原,而ALTER OWNER
则需要较少的权限。 - -? | –help
- 显示有关
sd_dumpall
命令行参数的帮助,然后退出。
以下选项均为连接选项,即连接SeaboxMPP数据库的相关信息:
- -d
connstr
| –dbname=connstr
-
指定用于连接到服务器的参数,作为连接字符串。
为了与其他客户端应用程序保持一致,该选项称为
--dbname
,但是由于sd_dumpall
需要连接到许多数据库,因此连接字符串中的数据库名称将被忽略。使用
-l
选项可指定用于转储全局对象并发现应转储其他数据库的数据库的名称。 - -h
host
| --host=host
- 运行SeaboxMPP coordinator数据库服务器的计算机的主机名。如果未指定,则从环境变量
SDHOST
读取或默认为localhost。 - -l
dbname
| –database=dbname
-
指定要在其中连接以转储全局对象的数据库的名称。 如果未指定,则使用
seaboxsql
数据库。如果
seaboxsql
数据库不存在,则使用template1
数据库。 - -p
port
| --port=port
- SeaboxMPP coordinator数据库服务器正在侦听连接的TCP端口。 如果未指定,则从环境变量
SDPORT
读取或默认为3000。 - -U
username
| –username=username
- 要用作连接的数据库角色名称。 如果未指定,则从环境变量
SDUSER
读取或默认为当前系统角色名称。 - -w | --no-password
- 不发出密码提示。 如果服务器要求密码验证,而其他方式(例如
.sdpass
文件)无法使用密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。 - -W | --password
- 强制输入密码提示。
- --role=
rolename
- 指定用于创建转储的角色名称。 此选项使
sd_dump
在连接到数据库后发出SET ROLE rolename
命令。当通过身份验证的用户(由-U
指定)缺少sd_dump
所需的特权,但可以切换到具有所需权限的角色时,此功能很有用。某些安装有禁止直接以超级用户身份登录的策略,并且使用此选项可以在不违反策略的情况下进行转储。
- 注解
-
由于
sd_dumpall
在内部调用sd_dump
, 因此某些诊断消息将引用sd_dump
。恢复后,明智的做法是在每个数据库上运行
ANALYZE
,以便查询优化器可以得到有用的统计信息。 也可以运行vacuumdb -a -z
分析所有数据库。sd_dumpall
要求所有需要的表空间目录在还原之前都存在。 否则,对于非默认位置的数据库,数据库创建将失败。 - 示例
-
转储所有数据库:
sd_dumpall > db.out
要从此文件重新加载数据库,可以使用:
ssql template1 -f db.out
- 相关命令
sd_dump