跳转至

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 OWNERSET 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