sd_dumpall
更新时间:2026-06-25
将PalopgMPP数据库系统中的所有数据库提取到单个脚本文件或其他归档文件中。
语法
Bash
1 sd_dumpall [connection-option ...] [dump_option ...]
2
3 sd_dumpall -? | --help
4
5 sd_dumpall -V | --version
6 ```
7
8
9## 描述
10
11`sd_dumpall`是一个标准工具,用于备份PalopgMPP数据库实例中的所有数据库,PalopgMPP数据库也支持该实用程序。它创建一个(非并行)转储文件。
12
13 `sd_dumpall`创建一个包含SQL命令的脚本文件, 该命令可用作`ssql`还原数据库的输入。它通过为每个数据库调用`sd_dump`来做到这一点。`sd_dumpall`还转储所有数据库通用的全局对象。 (`sd_dump`不会保存这些对象。)当前包括有关数据库用户和组的信息,以及整体上适用于数据库的访问权限。
14
15 由于`sd_dumpall`从所有数据库读取表,因此您很可能必须以数据库管理员身份连接才能产生完整的转储。另外,您将需要数据库管理员特权才能执行保存的脚本,以便被允许添加用户和组以及创建数据库。
16
17 SQL脚本将被写入标准输出。 使用`[-f | --file]`选项或shell运算符将其重定向到文件中。
18
19 `sd_dumpall`需要多次连接到PalopgMPP数据库coordinator服务器(每个数据库一次)。
20
21 如果使用密码验证,则很可能每次都要求输入密码。在这种情况下,使用`~/.sdpass`文件很方便。
22
23
24
25 选项
26: 以下选项均为转储选项:
27
28 \-a \| --data-only
29 : 仅转储数据,而不转储模式(数据定义)。 此选项仅对纯文本格式有意义。 对于归档格式,可以在调用`sd_restore`时指定该选项。
30
31 \-c \| --clean
32 : 在创建数据库对象(用于创建它们的命令)之前,输出用于清理(删除)数据库对象的命令。 此选项仅对纯文本格式有意义。
33 对于归档格式,可以在调用`sd_restore`时指定该选项。
34
35 \-E \| --encoding=ENCODING
36 : 将数据以编码 ENCODING 转储
37
38 \-f `filename` | --file=`filename`
39 : 将输出发送到指定文件。
40
41 \-g \| --globals-only
42 : 仅转储全局对象(角色和表空间),而不转储数据库。
43
44 \-O \| --no-owner
45 : 不要输出命令来设置对象的所有权以匹配原始数据库。 默认情况下,`sd_dump`发出`ALTER OWNER`或`SET SESSION AUTHORIZATION`语句来设置创建的数据库对象的所有权。
46
47 除非由数据库管理员(或拥有脚本中所有对象的同一用户)启动脚本,否则运行脚本时这些语句将失败。
48
49 要使脚本可以被任何用户恢复,但将赋予该用户所有对象的所有权,请指定`-O`。 此选项仅对纯文本格式有意义。
50
51 对于归档格式,可以在调用`sd_restore`时指定该选项。
52
53 \-r \| --roles-only
54 : 仅转储角色,而不是数据库或表空间。
55
56 \-s \| --schema-only
57 : 仅转储对象定义(模式),而不转储数据。
58
59 \-t \| --tablespaces-only
60 : 仅转储表空间,而不是数据库或角色。
61
62 \-v \| --verbose
63 : 指定详细模式。 这将导致`sd_dump`向转储文件输出详细的对象注释和开始/停止时间,并向标准错误输出消息。
64
65 \-V \| --version
66 : 打印`sd_dumpall`版本并退出。
67
68 \-x \| --no-privileges \| --no-acl
69 : 防止转储访问权限(`GRANT/REVOKE`命令)。
70
71 \--binary-upgrade
72 : 此选项供就地升级工具使用。 不建议或不支持将其用于其他目的。 该选项的行为在将来的版本中可能会更改,恕不另行通知。
73
74 \--column-inserts \| --attribute-inserts
75 : 将数据转储为带有显式列名(`INSERT INTO table (column, ...) VALUES ...`)的`INSERT`命令。 这会使恢复非常缓慢。
76
77 它主要用于制作可以装入非基于palopgsqlQL生态的数据库的转储。
78
79 同样,由于此选项为每一行生成一个单独的命令,因此在重新加载行时发生错误只会导致该行丢失,而不是整个表内容丢失。
80
81 \--disable-dollar-quoting
82 : 此选项禁止对函数体使用美元引号,并强制使用SQL标准字符串语法对其进行引用。
83
84 \--disable-triggers
85 : 仅当创建仅数据转储时,此选项才相关。 它指示`sd_dumpall`包含一些命令,以在重新加载数据时临时禁用目标表上的触发器。如果不想在数据重装期间调用的表上有触发器,请使用此选项。
86
87 为`--disable-triggers`发出的命令必须以数据库管理员身份执行。因此,还应该使用`-S`指定数据库管理员名,或者最好小心地以数据库管理员身份启动生成的脚本。
88
89 此选项仅对纯文本格式有意义。 对于归档格式,可以在调用`sd_restore`时指定该选项。
90
91
92 \--inserts
93 : 将数据转储为`INSERT`命令(而不是`COPY`)。 这会使恢复非常缓慢。
94
95 它主要用于制作可以装入非基于palopgsqlQL的生态数据库的转储。但是,由于此选项为每一行生成一个单独的命令,因此在重新加载行时发生错误只会导致该行丢失,而不是整个表内容丢失。
96
97 请注意,如果您重新排列了列顺序,则还原可能会完全失败。
98
99 `--column-inserts`选项可以安全地防止列顺序更改,尽管速度更慢。
100
101 \--lock-wait-timeout=`timeout`
102 : 不要在转储开始时一直等待获取共享表锁。 相反,如果无法在指定的`timeout`时间内锁定表,则失败。 可以使用`SET statement_timeout`接受的任何格式指定超时。
103
104 允许的值因要从中转储的服务器版本而异,但所有PalopgMPP数据库版本均接受整数毫秒。
105
106 \--no-security-labels
107 : 不要转储安全标签。
108
109 \--no-tablespaces
110 : 不输出命令以选择表空间。 使用此选项,将在还原期间的默认表空间中创建所有对象。
111
112 \--no-unlogged-table-data
113 : 不要转储未记录表的内容。 此选项对是否转储表定义(模式)没有影响。 它仅禁止转储表数据。 从备用服务器转储时,始终排除未记录表中的数据。
114
115 \--quote-all-identifiers
116 : 强制给所有标识符加上引号。 当从PalopgMPP数据库主版本不同于`sd_dumpall`的中转储数据库时,或者打算将输出加载到其他主版本的服务器中时,建议使用此选项。
117
118 默认情况下,`sd_dumpall`仅为在其主版本中为保留字的标识符加引号。在处理其他版本的保留字可能略有不同的服务器时,有时会导致兼容性问题。
119
120 使用`--quote-all-identifiers`可以防止此类问题,但代价是难以阅读的转储脚本。
121
122 \--resource-groups
123 : 转储资源组定义。
124
125 \--use-set-session-authorization
126 : 输出SQL标准的`SET SESSION AUTHORIZATION`命令而不是`ALTER OWNER`命令来确定对象所有权。
127
128 这使转储更加符合标准,但是依赖转储中对象的历史记录,可能无法正确还原。 使用`SET SESSION AUTHORIZATION`进行的转储将需要数据库管理员权限才能正确还原,而`ALTER OWNER`则需要较少的权限。
129
130 \-? \| --help
131 : 显示有关`sd_dumpall`命令行参数的帮助,然后退出。
132
133 以下选项均为连接选项,即连接PalopgMPP数据库的相关信息:
134
135 \-d `connstr` \| --dbname=`connstr`
136 : 指定用于连接到服务器的参数,作为连接字符串。
137
138 为了与其他客户端应用程序保持一致,该选项称为`--dbname`,但是由于`sd_dumpall`需要连接到许多数据库,因此连接字符串中的数据库名称将被忽略。
139
140 使用`-l`选项可指定用于转储全局对象并发现应转储其他数据库的数据库的名称。
141
142 \-h `host` \| \--host=`host`
143 : 运行PalopgMPP coordinator数据库服务器的计算机的主机名。如果未指定,则从环境变量`SDHOST`读取或默认为localhost。
144
145 \-l `dbname` | --database=`dbname`
146 : 指定要在其中连接以转储全局对象的数据库的名称。 如果未指定,则使用`palopgsql`数据库。
147
148 如果`palopgsql`数据库不存在,则使用`template1`数据库。
149
150 \-p `port` \| \--port=`port`
151 : PalopgMPP coordinator数据库服务器正在侦听连接的TCP端口。 如果未指定,则从环境变量`SDPORT`读取或默认为3000。
152
153 \-U `username` \| --username=`username`
154 : 要用作连接的数据库角色名称。 如果未指定,则从环境变量`SDUSER`读取或默认为当前系统角色名称。
155
156 \-w \| \--no-password
157 : 不发出密码提示。 如果服务器要求密码验证,而其他方式(例如`.sdpass`文件)无法使用密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。
158
159 \-W | \--password
160 : 强制输入密码提示。
161
162 \--role=`rolename`
163 : 指定用于创建转储的角色名称。 此选项使`sd_dump`在连接到数据库后发出`SET ROLE rolename`命令。当通过身份验证的用户(由`-U`指定)缺少`sd_dump`所需的特权,但可以切换到具有所需权限的角色时,此功能很有用。某些安装有禁止直接以数据库管理员身份登录的策略,并且使用此选项可以在不违反策略的情况下进行转储。
164
165
166
167
168注解
169: 由于`sd_dumpall`在内部调用`sd_dump`, 因此某些诊断消息将引用`sd_dump`。
170
171 恢复后,明智的做法是在每个数据库上运行`ANALYZE`,以便查询优化器可以得到有用的统计信息。 也可以运行`vacuumdb -a -z`分析所有数据库。
172
173 `sd_dumpall`要求所有需要的表空间目录在还原之前都存在。 否则,对于非默认位置的数据库,数据库创建将失败。
174
175
176## 示例
177
178转储所有数据库:
179
180 ``` bash
181 sd_dumpall > db.out
182 ```
183
184 要从此文件重新加载数据库,可以使用:
185
186 ``` bash
187 ssql template1 -f db.out
188 ```
189
190
191相关命令
192: ` sd_dump `
评价此篇文章
