vbr 配置文件将备份设置分为多个部分,列在对应部分的标题下。例如 [Database]
和 [CloudStorage]
,它们分别包含数据库访问设置和云存储位置设置。各部分可以按任何顺序显示且可重复。例如,多个 [Database]
部分。
配置文件参考
- 1: [CloudStorage]
- 2: [database]
- 3: [mapping]
- 4: [misc]
- 5: [NodeMapping]
- 6: [transmission]
- 7: 密码配置文件
1 - [CloudStorage]
重要
[CloudStorage] 部分替换了早期版本中的 [S3] 部分(现已弃用)。同样,云存储特定的配置变量替换了等效的 S3 配置变量。
请勿在同一个配置文件中包含 [S3] 和 [CloudStorage] 部分;否则,vbr 将使用 [S3] 配置设置且忽略 [CloudStorage] 设置,这可能会产生意外结果。
设置在受支持的云存储位置中备份数据存储所需的选项。
注意
[CloudStorage] 和 [Mapping] 配置部分相互排斥。如果两者均包含,则备份将会失败并显示以下错误消息:
Config has conflicting sections (Mapping, CloudStorage), specify only one of them.
- cloud_storage_backup_file_system_path
- 指定在备份过程中用于处理文件锁定的主机和路径。vbr 必须能够创建无密码 ssh 连接(连接到您在此处指定的位置)。
要使用本地 NFS 文件系统,请指定以下值:
cloud_storage_backup_file_system_path = []:path
要使用主机,请指定以下值:
cloud_storage_backup_file_system_path = [host-name]:path
- cloud_storage_backup_path
- 指定备份位置。对于与 S3 兼容的位置或云位置,请提供存储桶名称和备份路径。对于 HDFS 位置,请提供相应协议和备份路径。
备份到云存储时,所有节点均会备份到相同的云存储桶。执行备份之前,您必须在云存储中创建备份位置。以下示例指定 S3 存储的备份路径:
cloud_storage_backup_path = s3://backup-bucket/database-backup-path/
备份到 HDFS 位置时,如果使用线路加密,请使用
swebhdfs
协议。如果不使用线路加密,请使用webhdfs
协议。以下示例使用加密:cloud_storage_backup_path = swebhdfs://backup-nameservice/database-backup-path/
- cloud_storage_ca_bundle
- 指定 SSL 服务器证书捆绑包的路径。
注意
密钥 (*pem
) 文件必须位于数据库群集所有节点中的同一路径上。例如:
cloud_storage_ca_bundle = /home/user/ssl-folder/ca-bundle
- cloud_storage_concurrency_backup
- 备份到云存储的最大并发备份线程数。对于非常庞大的数据量(超过 10TB),您可能需要减小此值以避免 vbr 失败。
默认值: 10
- cloud_storage_concurrency_delete
- 从云存储中删除文件的最大并发删除线程数。如果 vbr 配置文件包含 [CloudStorage] 部分,则此值默认设置为 10。
默认值: 10
- cloud_storage_concurrency_restore
- 从云存储还原的最大并发还原线程数。对于非常庞大的数据量(超过 10TB),您可能需要减小此值以避免 vbr 失败。
默认值: 10
- cloud_storage_encrypt_at_rest
- 仅限 S3 存储。要启用对 S3 备份的静态加密,请指定
sse
值。有关详细信息,请参阅对 Amazon S3 上的备份进行加密。此值采用以下形式:
cloud_storage_encrypt_at_rest = sse
- cloud_storage_encrypt_transport
- 布尔值,如果设置为 true,则使用 SSL 加密对在 Vertica 群集和云存储实例之间移动的数据进行加密。
如果从以下位置备份或还原,则必须将此参数设置为 true:
-
Amazon EC2 群集
-
Google Cloud Storage (GCS)
-
Eon 模式下的内部部署数据库(使用 HDFS 公共存储和线路加密)。
默认值: true
-
- cloud_storage_sse_kms_key_id
- 仅限 S3 存储。如果使用 Amazon Key Management Security,请使用此参数提供密钥 ID。如果启用加密但不包含此参数,则 vbr 将使用 SSE-S3 加密。
此值采用以下形式:
cloud_storage_sse_kms_key_id = key-id
2 - [database]
设置用于访问数据库的选项。
- dbName
- 要备份的数据库名称。如果不提供数据库名称,vbr 将选择当前数据库进行备份。
Micro Focus 建议您提供数据库名称。
- dbPromptForPassword
- 布尔值,指定 vbr 是否提示输入密码。如果设置为 false(即:运行时不提示),则密码配置文件中的 dbPassword 参数必须提供密码;否则,vbr 将在运行时提示输入密码。
最佳做法:如果 dbUseLocalConnection 设置为 true,则将 dbPromptForPassword 设置为 false。
默认值: true
- dbUser
- 识别对数据库操作执行 vbr 操作的 Vertica 用户。对于复制任务,此用户为源数据库用户。必须以数据库管理员身份登录,才能备份数据库。用户密码可以存储在密码配置文件的 dbPassword 参数中;否则,vbr 将在运行时提示输入密码。
默认值: 当前用户名
- dbUseLocalConnection
- 布尔值,指定 vbr 是否使用用户的 Vertica 密码通过本地连接访问目标数据库。如果启用 dbUseLocalConnection,则 vbr 可以在本地数据库上操作,而无需在 vbr 配置中设置用户密码。vbr 将忽略 passwordFile 参数以及密码配置文件中的任何设置,其中包括 dbPassword。
如果启用 dbUseLocalConnection,则必须向 vbr 用户(通常是 dbadmin)授予身份验证方法,其中方法类型设置为 trust,访问权限设置为“本地 (local)”:
=> CREATE AUTHENTICATION h1 method 'trust' local; => GRANT AUTHENTICATION h1 to dbadmin;
默认值:false
仅当复制备用群集中的对象时,才需设置目标数据库参数:
- dest_dbName
- 目标数据库的名称。
- dest_dbPromptForPassword
- 布尔值,控制 vbr 是否提示输入目标数据库密码。如果设置为 false(即:运行时不提示),则密码配置文件中的 dest_dbPassword 参数必须提供密码;否则,vbr 将在运行时提示输入密码。
- dest_dbUser
- 目标数据库中用于加载复制数据的 Vertica 用户名。此用户必须具有超级用户权限。
3 - [mapping]
vbr 配置文件有一个 [Mapping] 部分,用于指定备份中包含的所有数据库节点。它还包括每个节点的备份主机和目录。如果正在将对象复制到备用数据库,[Mapping] 部分会将目标数据库节点映射到源数据库备份位置。
如果您编辑现有配置文件,并以当前样式添加一个映射,新部分必须组合所有现有映射的信息。
注意
[CloudStorage] 和 [Mapping] 配置部分相互排斥。如果二者均包含,则备份将失败。与其他配置文件部分不同,[Mapping] 部分不使用命名参数。相反,它使用以下格式的条目:
dbNode = backupHost:backupDir
下表介绍了这三个元素。
- dbNode
- Vertica 识别的数据库节点的名称。此值不是节点的主机名称,而是 Vertica 用于在内部识别节点的名称,其格式通常是:
v_dbname_node000int
要在群集中查找数据库节点名称,请查询 NODES 系统表的
node_name
列。 - backupHost
- 存储该节点的备份的目标主机名称或 IP 地址。
backupHost
名称与dbNode
不同。copycluster
命令使用此值来确定目标数据库节点主机名称。重要
尽管支持备份到 NFS 主机,但此举性能较低,这在与重新同步操作共享的网络中尤其如此。 - backupDir
- 存储备份的备份主机或节点上的目录的完整路径。此目录具有以下要求:
-
运行具有
--task backup
选项的 vbr 时,目录已经存在 -
可由用于运行 vbr 的用户帐户写入。
-
专用于正在备份的数据库。多个数据库不能共享同一个备份目录。
-
此位置的文件系统支持
fcntl lockf
文件锁定。
-
例如:
[Mapping]
v_sec_node0001 = pri_bsrv01:/archive/backup
v_sec_node0002 = pri_bsrv02:/archive/backup
v_sec_node0003 = pri_bsrv03:/archive/backup
映射到 localhost
vbr 不支持将特殊的 localhost 名称作为备份主机。要将数据库节点备份到其自己的磁盘,在配置文件的 [Mapping] 部分中对主机名使用空方括号。
[Mapping]
NodeName = []:/backup/path
映射到相同的数据库
以下示例显示了用于指定要备份的单个节点的 [Mapping] 部分:v_vmart_node0001
。该节点被分配到备份主机 srv01
以及备份目录 /home/dbadmin/backups
。尽管备份的是单节点群集,并且备份主机和数据库节点是同一个系统,但是您可以分开指定它们。
指定备份主机和目录,并使用冒号 (:
) 作为分隔符:
[Mapping]
v_vmart_node0001 = srv01:/home/dbadmin/backups
映射到备用数据库
注意
将对象复制到备用数据库时,需要 vbr 配置文件以包含 [NodeMapping] 部分。此部分会将源节点指向目标数据库节点。要还原备用数据库,请按如下所示添加映射信息:
[Mapping]
targetNode = backupHost:backupDir
例如:
[Mapping]
v_sec_node0001 = pri_bsrv01:/archive/backup
v_sec_node0002 = pri_bsrv02:/archive/backup
v_sec_node0003 = pri_bsrv03:/archive/backup
4 - [misc]
本部分收集了一些基本设置,其中包括备份的名称和位置。本部分还会指出您是否正在保留多个备份文件(通过 restorePointLimit 参数指定)。
- passwordFile
- 指定密码配置文件的路径名称。
如果 dbUseLocalConnection 设置为 true,则会忽略此参数。
- restorePointLimit
- 与最近备份一起保留的早期备份的数量。如果设置为 1(默认值),则 Vertica 会保留两个备份:最近备份和之前的备份。
注意
vbr 将多个备份保存到同一个位置,这些备份可通过硬链接进行共享。在这种情况下,listbackup 会显示带有唯一时间的通用备份前缀和日期后缀:
my_archive20111111_205841
默认值: 1
- snapshotName
- vbr 为每个节点创建的目录树结构中使用的备份基本名称,最多包含 240 个字符,且仅限以下字符:
-
a–z
-
A–Z
-
0-9
-
连字符 (-)
-
下划线 (_)
此系列中的每次迭代(直到 restorePointLimit)均包含
snapshotName
和备份时间戳。每个系列的备份均应有描述性的唯一快照名称。完整备份和对象级别备份不能共享名称。对于大多数 vbr 任务,snapshotName
在诊断和系统表中充当有用的标识符。对于对象还原和复制任务,snapshotName
用于在共存模式操作中构建架构名称。默认值:
snapshotName
-
- tempDir
- 指定群集节点上某个临时存储区域的绝对路径。
tmp
路径在所有数据库群集节点上必须相同。当 vbr 将文件从源群集节点复制到目标备份位置时,它会将此目录用作日志文件、锁定文件和其他簿记信息的临时存储。此外,vbr 还会将备份日志写入此位置。当心
请勿使用与数据库的数据或编录目录相同的位置。在数据库启动或还原期间,数据或编录位置中的意外文件和目录可能会导致错误。位于此位置的文件系统必须支持 fcntl lockf (POSIX) 文件锁定。
默认值:
/tmp/vbr
- drop_foreign_constraints
- 布尔值。如果设置为 true,则所有外键约束均会在对象级别还原期间无条件删除。然后,您可以仅还原数据库对象,而不还原其外键依赖项。
重要
您必须将 objectRestoreMode 设置为“共存 (coexist)”,否则 Vertica 将忽略此设置。默认值:false
- enableFreeSpaceCheck
- 布尔值。如果设置为 true(默认)或“忽略 (omitted)”,则 vbr 会确认指定的备份位置是否具有足够的可用空间以允许成功备份。如果备份位置资源不足,则 vbr 会显示错误消息并取消备份。如果 vbr 无法确定备份目录中的可用空间量或节点数,则会显示警告并继续备份。
默认值: true
- excludeObjects
- 识别要从 includeObjects 指定的集合中排除的数据库对象和通配符模式。Unicode 字符区分大小写;其他则不区分。
此参数仅可与 includeObjects 一起使用。
- hadoop_conf_dir
- (仅限 HDFS 中的 Eon 模式)高可用性 (HA) 节点。该目录路径包含从 Hadoop 中复制的 XML 配置文件。
如果 vbr 操作包括多个 HA HDFS 群集,请使用以冒号分隔的列表,提供每个 HA HDFS 群集 XML 配置文件的目录路径。例如:
hadoop_conf_dir = path/to/xml-config-hahdfs1:path/to/xml-config-hahdfs2
此值必须与安装期间创建的引导文件中设置的 HadoopConfDir 值匹配。
- includeObjects
- 识别备份任务要包括的数据库对象和通配符模式。您可以将此参数与 excludeObjects 一起使用。Unicode 字符区分大小写;其他则不区分。
重要
includeObjects 和 objects 参数相互排斥。 - kerberos_keytab_file
- (仅限 HDFS 中的 Eon 模式)keytab 文件的位置,其中包含 Vertica Kerberos 主体的凭据。
此值必须与安装期间创建的引导文件中设置的 KerberosKeytabFile 值匹配。
- kerberos_realm
- (仅限 HDFS 中的 Eon 模式)Vertica Kerberos 主体的领域部分。
此值必须与安装期间创建的引导文件中设置的 KerberosRealm 值匹配。
- kerberos_service_name
- (仅限 HDFS 中的 Eon 模式)Vertica Kerberos 主体的服务名称部分。
此值必须与安装期间创建的引导文件中设置的 KerberosServiceName 值匹配。
默认值: vertica
- objectRestoreMode
- 指定在还原架构或表备份时 vbr 如何处理具有相同名称的对象,可以是以下操作之一:
-
createOrReplace
:vbr 创建任何不存在的对象。如果对象已存在,vbr 会使用存档中的版本覆盖该对象。 -
create
:vbr 创建任何不存在的对象且不替换现有对象。如果正在还原的对象确实存在,则还原失败。 -
coexist
:vbr 创建每个对象的还原版本,其名称格式如下:backup_timestamp_objectname
此方法允许现有对象和还原对象同时存在。如果附加的信息导致架构名称超过最大长度 128 个字符,则 Vertica 会截断该名称。可通过查询系统表 TRUNCATED_SCHEMATA 对原始架构名称执行反向查找。
在所有模式下,vbr 会还原当前时期的数据。对象还原模式设置不会应用于备份和完整还原。
默认值:
createOrReplace
-
- objects
- 对于对象级别备份或对象复制,指定要包含的对象(架构或表)名称。要指定多个对象,请以逗号分隔的列表形式输入多个名称。如果您未指定任何对象,则 vbr 将创建一个完整备份。
您可以按如下方式指定对象:
-
以
schema.objectname
形式指定表名称。例如,要从架构“finance”创建表“customers”的备份,请输入:finance.customers
如果公共表和架构具有相同的名称,则 vbr 仅备份架构。请使用
schema.objectname
约定,以避免混淆。 -
对象名称可包括 UTF-8 字母数字字符。对象名称不能包括转义字符、单引号 (
'
) 或双引号 ("
) 字符。 -
使用反斜线 () 后跟一个十六进制值指定非字母数字字符。例如,如果表名称为
my table
(my
后跟一个空格字符和table
),请按以下方式输入对象名称:objects=my\20table
-
如果对象名称包含句点,请用双引号将名称括起来。
-
5 - [NodeMapping]
vbr
会独占使用节点映射部分,以将对象从一个数据库的备份还原到另一个数据库。请确保更新配置文件的 [Mapping] 部分,将目标数据库节点指向源备份位置。目标数据库必须具有至少与源数据库相同数量的“开启 (Up)”节点。
使用以下格式指定节点映射:
source_node = target_node
例如,可以使用以下映射将内容从一个 4 节点数据库还原至另一个 4 节点数据库。
[NodeMapping]
v_sourcedb_node0001 = v_targetdb_node0001
v_sourcedb_node0002 = v_targetdb_node0002
v_sourcedb_node0003 = v_targetdb_node0003
v_sourcedb_node0004 = v_targetdb_node0004
有关完整示例,请参阅将数据库还原到备用群集。
6 - [transmission]
在使用备份主机时设置用于传输数据的选项。
- concurrency_backup
- 每个节点的最大备份 TCP 重新同步连接线程数。要提高本地和远程备份、复制和复制群集的性能,您可以增加执行备份可用的线程数。
增加线程数可向备份任务分配更多 CPU 资源,且可增加远程备份使用的带宽量。在很大程度上,此设置的最佳值取决于您的特定配置和要求。如果值高于 16,则不会带来额外的益处。
默认值: 1
- concurrency_delete
- 每个节点的最大删除 TCP 重新同步连接数。要提高本地和远程还原、复制和 copycluster 的性能,请增加可用于删除的线程数。
增加线程数可向删除任务分配更多 CPU 资源,且可增加远程备份的删除操作使用的带宽量。此设置的最佳值取决于您的特定配置和要求。
默认值: 16
- concurrency_restore
- 每个节点的最大还原 TCP 重新同步连接数。要提高本地和远程还原、复制和 copycluster 的性能,请增加可用于执行还原的线程数。
增加线程数可向还原任务分配更多 CPU 资源,且可增加远程备份的还原操作的带宽量。在很大程度上,此设置的最佳值取决于您的特定配置和要求。如果值高于 16,则不会带来额外的益处。
默认值: 1
- copyOnHardLinkFailure
- 如果硬链接本地备份无法创建链接,请改为复制数据。复制比链接花费的时间更长,因此如果无法在任何节点上创建链接,则默认行为是返回错误。
默认值:false
- encrypt
- 布尔值,指定在将传输的数据复制到目标备份位置时是否对其进行加密。仅在使用不受信的网络执行备份操作时(如通过 Internet 备份到远程主机),将此参数设置为 true。
重要
对数据传输进行加密将产生大量的处理开销并且会降低传输速度。在加密过程中会消耗每个数据库节点的一个处理器内核。仅当您很关心传输备份数据时所用的网络的安全性时,才使用此选项。对于硬链接本地备份,忽略配置文件中的此参数。如果在同一个配置文件中将 encrypt 和 hardLinkLocal 都设置为 true,则 vbr 会发出警告并忽略加密。
默认值:false
- hardLinkLocal
- 布尔值,指定是否使用本地文件系统上的硬文件链接创建一个完整备份或对象级别备份,而不是将数据库文件复制到远程备份主机。将此配置参数手动添加到配置文件的“事务 (Transaction)”部分。
有关用法的详细信息,请参阅硬链接的完整备份/还原。
默认值:false
- port_rsync
- rsync 协议的默认端口号。如果默认 rsync 端口正在您的群集上使用或者您需要让 rsync 使用另一个端口来避免防火墙限制,请更改此值。
默认值: 50000
- serviceAccessUser
- 用于重新同步连接的简单身份验证的用户名。此用户既不是 Linux 用户名,也不是 Vertica 用户名,而是 rsync 协议使用的一个任意标识符。如果您省略设置此参数,则 rsync 无需身份验证即可运行,这可能会导致潜在的安全风险。如果您选择保存密码,则系统会将其保存在密码配置文件中。
- total_bwlimit_backup
- 备份连接的总带宽限制(单位为 KBp)。Vertica 将此带宽均匀地分布在 concurrency_backup 中设置的各个连接上。如果默认值为 0,则带宽不受限制。
此值允许的总网络负载为节点数乘以此参数的值。例如,群集节点数为 3 且 total_bwlimit_backup 值为 100,则网络流量为 300K 字节/秒。
默认值: 0
- total_bwlimit_restore
- 用于还原连接的总带宽限制(以 KBps 为单位)。系统将此带宽均匀地分布在 concurrency_backup 中设置的各个连接上。如果默认值为 0,则带宽不受限制。
此值允许的总网络负载为节点数乘以此参数的值。例如,群集节点数为 3 且
total_bwlimit_restore
值为 100,则网络流量为 300K 字节/秒。默认值: 0
7 - 密码配置文件
为了提高安全性,请将密码存储在密码配置文件中,然后限制该文件的读取访问权限。将 vbr 配置文件中的 passwordFile 参数设置为此文件。
[passwords] 密码设置
所有密码配置参数均位于该文件的 [Passwords] 部分中。
- dbPassword
- 数据库管理员的 Vertica 密码,当 dbPromptForPassword 参数为 false 时使用此密码。如果 dbUseLocalConnection 设置为 true,则会忽略此参数。
- dest_dbPassword
- dest_dbuser Vertica 帐户的密码,仅限复制任务。
- serviceAccessPass
- rsync 用户帐户的密码。
示例
请参阅密码文件。