包括和排除对象

您可以使用 vbr 配置和命令行参数 includeObjects 和 ‑‑include-objects,分别指定备份、还原和复制操作中要包括的对象。指定操作中要包括的对象之后,您可以选择使用 vbr 配置和命令行参数 excludeObjects‑‑exclude-objects,分别指定要从同一操作中排除的一组对象。在这两种情况下,您都可以使用通配符表达式来包括和排除对象组。 vbr.ini 文件和 vbr 命令行参数中均支持通配符。

例如,您可以备份架构 store 中的所有表,然后从备份中排除表 store.orders 以及同一架构中所有名称包含字符串 account 的表:

vbr --task=backup --config-file=db.ini --include-objects 'store.*' --exclude-objects 'store.orders,store.*account*'

通配符字符

匹配架构

任何不带句点 (.) 字符的字符串模式都表示架构。例如,以下 includeObjects 列表可以匹配任何以字符串 customer 开头的架构名称,以及任何以字母 s 开头的双字符架构名称:

includeObjects = customer*,s?

vbr 操作包括架构且架构引用省略任何表引用时,该操作包括该架构的所有表。在这种情况下,您不能从同一架构中排除单个表。例如,以下 vbr.ini 条目无效:

; invalid:
includeObjects = VMart
excludeObjects = VMart.?table?

您可以通过使用模式 schemaname.* 识别架构,以从包含的架构中排除表。在这种情况下,该模式使用通配符 * 明确指定包括该架构中的所有表。在以下示例中,include‑objects 参数包括 VMart 架构中的所有表,然后排除特定表,具体地说,是指排除表 VMart.sales 以及所有包含字符串 account 的 VMart 表:


--include-objects 'VMart.*'
--exclude-objects 'VMart.sales,VMart.*account*'

匹配表

任何包含句点 (.) 的模式都代表一个表。例如,在配置文件中,以下 includeObjects 列表匹配表名称 sales.newclients 和同一架构中的任何双字符表名称:

includeObjects = sales.newclients,sales.??

您还可以使用模式 . 来匹配数据库或备份中的所有架构和表。例如,您可以使用以下命令来还原备份中的所有表和架构:

--include-Objects '*.*'

由于 vbr 参数是在命令行中计算,因此您必须将通配符括在单引号中,防止 Linux 误读它们。

测试通配符模式

您可以将 --dry-run 参数与备份或还原命令一起使用,以测试任何模式的结果。包含 --dry-run 的命令不会影响您的数据库。相反,vbr 会在不执行命令的情况下,显示命令的结果。有关 --dry-run 的详细信息,请参考 vbr 引用

备份时使用通配符

您可以使用配置文件中的 includeObjectsexcludeObjects 参数来识别对象备份任务中要包括的对象。典型的配置文件可能包含以下内容:

[Misc]
snapshotName = dbobjects
restorePointLimit = 1
enableFreeSpaceCheck = True
includeObjects = VMart.*,online_sales.*
excludeObjects = *.*temp*

在此示例中,备份将包括来自 VMart 和 online_sales 架构的所有表,同时排除属于任何架构且名称中包含字符串“temp”的任何表。

在评估包括的对象之后,vbr 会评估排除对象并从包括的集中移除它们。例如,如果您包括 schema1.table1,然后排除了 schema1.table1,则该对象将被排除。如果任务中没有包括其他对象,则任务将失败。通配符也是如此。如果排除模式移除了所有包括的对象,则任务失败。

还原时使用通配符

您可以使用 ‑‑include-objects‑‑exclude-objects 参数来识别还原任务中要包括的对象。

备份时,vbr 会在评估包括的对象之后评估排除对象,并从包括的集中移除排除对象。如果没有剩余对象,则任务失败。

典型的还原命令可能包含此内容。(为了便于阅读,文档中包含换行。但事实上,这是一条完整的命令。)

$ vbr -t restore -c verticaconfig --include-objects 'customers.*,sales??'
    --exclude-objects 'customers.199?,customers.200?'

此示例包括架构客户,减去名称匹配 199 和 200 加一个字符的任何表,以及所有匹配“sales”加两个字符的任何架构。

另一个典型的还原命令可能包含此内容。

$ vbr -t restore -c replicateconfig --include-objects '*.transactions,flights.*'
    --exclude-objects 'flights.DTW*,flights.LAS*,flights.LAX*'

此示例包括任何名为 transactions 的表(无论架构如何),以及任何以 DTW、LAS 或 LAX 开头且属于架构 flights 的表。尽管这些三个字母的机场代码在示例中大写,但 vbr 不区分大小写。