包括和排除对象
您可以使用 vbr
配置和命令行参数 includeObject
s 和 ‑‑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 引用。
备份时使用通配符
您可以使用配置文件中的 includeObjects
和 excludeObjects
参数来识别对象备份任务中要包括的对象。典型的配置文件可能包含以下内容:
[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
参数来识别还原任务中要包括的对象。
注意
使用通配符模式还原数据库对象时要格外小心。根据您的对象还原模式设置,还原对象可能会覆盖现有对象。在执行实际任务之前,请使用‑‑dry-run``vbr
参数测试通配符还原的影响。
备份时,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
不区分大小写。