这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
备份和还原数据库
当心
保护备份位置并严格限制已有权访问数据库中所有数据的用户对备份的访问权限,这一点十分重要。破坏备份意味着破坏数据库。
定期备份数据库是基本维护任务的重要组成部分。为此,Vertica 提供了一个全面的实用程序:vbr
。 vbr
它支持您执行以下操作。除非另有说明,Enterprise 模式和 Eon 模式均支持以下操作:
运行 vbr
时,您需要指定配置 (.ini) 文件。在此文件中,您可以指定操作的所有配置参数:备份内容、备份位置、保留的备份数量、是否加密传输等等。Vertica 提供了多个示例 vbr 配置文件,您可将其用作模板。
您可以使用 vbr
还原由 vbr
创建的备份。通常,可以针对这两个操作使用相同的配置文件。 常见用例 引入了最常见的 vbr
操作。
执行备份时,可将数据保存到以下位置之一:
您无法先备份 Enterprise 模式数据库,然后在 Eon 模式下还原它,反之亦然。
受支持的云存储
Vertica 支持在以下云存储位置进行备份和还原操作:
-
Amazon Web Services (AWS) S3
-
与 S3 兼容的私有云存储,例如 Pure Storage 或 Minio
-
Google Cloud Storage (GCS)
-
Azure Blob 存储
如果您要备份 Eon 模式数据库,则必须使用受支持的云存储位置。
您无法在不同的云提供商之间执行备份或还原操作。例如,您无法从 GCS 备份或还原到 S3 位置。
HDFS 存储位置的其他注意事项
如果您的数据库在 HDFS 上有任何存储位置,则需额外进行配置,才能启用这些存储位置来执行备份操作。请参阅备份和还原 HDFS 存储位置的要求。
1 - 常见用例
您可以使用 vbr
执行许多与备份和还原相关的任务。vbr 引用详细介绍了所有任务。此部分总结了常见用例。但是,此处并未列出每个用例的额外要求。请务必阅读链接的主题以获取详细信息。
这并非备份/还原功能的完整列表。
Enterprise 模式下的例行备份
完整备份将您的数据副本存储在另一个位置。理想情况下,该位置与数据库位置分隔开(例如,不同的硬件或云中)。您需为备份命名(快照名称),这样可以拥有不同的备份和备份类型,且二者互不干扰。在配置文件中,您可以将数据库节点映射到备份位置,并设置其他参数。
在第一次备份之前,运行 vbr init 任务。
使用 vbr backup 任务执行完整备份。外部完整备份/还原示例为您的配置提供了起点。有关完整备份的完整文档,请参阅创建完整备份。
Eon 模式下的例行备份
在大多数情况下,Eon 模式下的备份与 Enterprise 模式下的备份方法相同。Eon 模式有一些额外要求(如Eon 模式数据库的要求中所述),且对于备份到云存储,一些配置参数有所不同。您可以使用受支持的云存储位置来备份或还原在云中或内部部署中运行的 Eon 模式数据库。
使用 vbr backup 任务执行完整备份。备份/还原到云存储示例为您的配置提供了起点。有关完整备份的完整文档,请参阅创建完整备份。
检查点备份:在重大操作之前进行备份
在执行删除表等破坏性操作或将 Vertica 升级到新版本等主要操作之前,最好先对数据库进行备份。
为此,您可以执行定期完整备份,但更快捷的方法是创建硬链接本地备份。这种备份将复制编录,并将数据文件链接到每个节点的本地文件系统中的另一个位置。(您也可以对特定对象(而不是整个数据库)进行硬链接备份。)硬链接本地备份提供的保护与外部存储的备份不同。例如,它不能保护您免受本地系统故障的影响。不过,如果您仅暂时需要备份,则硬链接本地备份不失为权宜之计。请勿使用硬链接本地备份代替在其他节点上进行的定期备份。
硬链接备份使用与其他备份相同的 vbr backup 任务,但配置不同。硬链接的完整备份/还原示例为您的配置提供了起点。有关详细信息,请参阅创建硬链接本地备份。
还原选定对象
有时您需要还原特定对象(例如,您删除的表),而不是整个数据库。您可以从包含这些对象的任何备份(无论是完整备份还是对象备份)中还原单个表或架构。
使用 vbr restore 任务和 --restore-objects
参数指定要还原的内容。通常,您使用的配置文件与创建备份所用的配置文件相同。有关详细信息,请参阅还原单个对象。
还原整个数据库
您可以通过完整备份还原 Enterprise 模式和 Eon 模式数据库。您无法通过还原来更改数据库的模式。在 Eon 模式下,您可以还原到主子群集,而无需考虑辅助子群集。
使用 vbr restore 任务还原数据库。与还原选定对象一样,您使用的配置文件通常与创建备份所用的配置文件相同。有关详细信息,请参阅从完整备份中还原数据库和还原硬链接本地备份。
复制群集
您可能需要将数据库复制到另一个计算机群集,例如,当您将数据库从临时环境升级到生产环境时便是如此。从本质上来说,将数据库复制到另一个群集是同时在进行备份和还原操作。数据将从源数据库群集中备份,然后通过单个操作还原到目标群集。
使用 vbr copycluster 任务复制群集。将数据库复制到备用群集示例为您的配置提供了起点。有关详细信息,请参阅将数据库复制到其他群集。
将选定对象复制到另一个数据库
您可能需要将特定的表或架构从一个数据库复制到另一个数据库。例如,您需要将数据从生产数据库复制到测试数据库,以单独调查问题。另外,当您在单个数据库中加载大量数据之后,复制到另一个数据库可能比在其他数据库中重复执行加载操作更高效。
使用 vbr replicate 任务复制对象。您可以在配置文件中指定要复制的对象。将对象复制到备用数据库示例为您的配置提供了起点。有关详细信息,请参阅将对象复制到备用群集。
2 - 示例 vbr 配置文件
vbr 实用程序使用配置文件提供所需的必要信息,以备份和还原完整备份或对象级别备份或者复制群集。不存在默认配置文件。您必须始终使用 vbr 命令指定配置文件。
Vertica 包含示例配置文件,您可以为各种 vbr 任务复制、编辑和部署这些文件。Vertica 会自动将这些文件安装在:
/opt/vertica/share/vbr/example_configs
2.1 - 外部完整备份/还原
backup_restore_full_external.ini
外部(分布式)备份将每个数据库节点备份到不同的备份主机。节点映射到 [Mapping] 部分中的主机。
要还原,请使用与创建备份时相同的配置文件。
; This sample vbr configuration file shows full or object backup and restore to a separate remote backup-host for each respective database host.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; !!Mandatory!! This section defines what host and directory will store the backup for each node.
; node_name = backup_host:backup_dir
; In this "parallel backup" configuration, each node backs up to a distinct external host.
; To backup all database nodes to a single external host, use that single hostname/IP address in each entry below.
v_exampledb_node0001 = 10.20.100.156:/home/dbadmin/backups
v_exampledb_node0002 = 10.20.100.157:/home/dbadmin/backups
v_exampledb_node0003 = 10.20.100.158:/home/dbadmin/backups
v_exampledb_node0004 = 10.20.100.159:/home/dbadmin/backups
[Misc]
; !!Recommended!! Snapshot name. Object and full backups should always have different snapshot names.
; Backups with the same snapshotName form a time sequence limited by restorePointLimit.
; SnapshotName is used for naming archives in the backup directory, and for monitoring and troubleshooting.
; Valid characters: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; If true, vbr attempts to connect to the database using a local connection.
; dbUseLocalConnection = False
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Specifies the number of historical backups to retain in addition to the most recent backup.
; 1 current + n historical backups
; restorePointLimit = 1
; Full path to the password configuration file
; Store this file in directory readable only by the dbadmin
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; When enabled, Vertica confirms that the specified backup locations contain
; sufficient free space and inodes to allow a successful backup. If a backup
; location has insufficient resources, Vertica displays an error message explaining the shortage and
; cancels the backup. If Vertica cannot determine the amount of available space
; or number of inodes in the backupDir, it displays a warning and continues
; with the backup.
; enableFreeSpaceCheck = True
[Transmission]
; Specifies the default port number for the rsync protocol.
; port_rsync = 50000
; Total bandwidth limit for all backup connections in KBPS, 0 for unlimited. Vertica distributes
; this bandwidth evenly among the number of connections set in concurrency_backup.
; total_bwlimit_backup = 0
; The maximum number of backup TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_backup = 1
; The total bandwidth limit for all restore connections in KBPS, 0 for unlimited
; total_bwlimit_restore = 0
; The maximum number of restore TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_restore = 1
; The maximum number of delete TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_delete = 16
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator
; dbUser = current_username
2.2 - 备份/还原到云存储
backup_restore_cloud_storage.ini
您可以将 Enterprise 模式和 Eon 模式数据库备份和还原到云存储位置。您必须将 Eon 模式数据库备份到受支持的云存储位置。对于 Enterprise 模式和 Eon 模式,[CloudStorage] 部分中的配置设置完全相同。
第一次备份到新的云存储位置之前,您必须完成一些一次性配置。有关详细信息,请参阅云存储的其他注意事项。
备份到内部部署云存储目标时,还需要对 Enterprise 模式和 Eon 数据库额外进行配置。有关额外要求的详细信息,请参阅配置与云存储之间的备份。
要还原,请使用与创建备份时相同的配置文件。要还原选定对象(而不是整个数据库),请使用 --restore-objects
在 vbr
命令行上指定要还原的对象。
; This sample vbr configuration file shows backup to Cloud Storage e.g AWS S3, GCS, HDFS or on-premises (e.g. Pure Storage)
; This can be used for Vertica databases in Enterprise or Eon mode.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; Option and values are separated by an equal sign.
; Only arguments marked as '!!Mandatory!!' must be specified explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[CloudStorage]
; This section replaces the [Mapping] section and is required to back up to cloud storage.
; !!Mandatory!! Backup location on Cloud or HDFS (no default).
cloud_storage_backup_path = gs://backup_bucket/database_backup_path/
; cloud_storage_backup_path = s3://backup_bucket/database_backup_path/
; cloud_storage_backup_path = webhdfs://backup_nameservice/database_backup_path/
; cloud_storage_backup_path = azb://backup_account/backup_container/
; !!Mandatory!! directory used to manage locking during a backup (no default). If the directory is mounted on the initiator host, you
; should use "[]" instead of the local host name. The file system must support POSIX fcntl flock.
cloud_storage_backup_file_system_path = []:/home/dbadmin/backup_locks_dir/
[Misc]
; !!Recommended!! Snapshot name
; Backups with the same snapshotName form a time sequence limited by restorePointLimit.
; SnapshotName is used for naming archives in the backup directory, and for monitoring and troubleshooting.
; Valid values: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
; Specifies how Vertica handles objects of the same name when restoring schema or table backups.
; objectRestoreMode = createOrReplace
; Specifies which tables and/or schemas to copy. For tables, the containing schema defaults to public.
; Note: 'objects' is incompatible with 'includeObjects' and 'excludeObjects'.
; (no default)
; objects = mytable, myschema, myothertable
; Specifies the set of objects to backup/restore; wildcards may be used.
; Note: 'includeObjects' is incompatible with 'objects'.
; includeObjects = public.mytable, customer*, s?
; Subtracts from the set of objects to backup/restore; wildcards may be used
; Note: 'excludeObjects' is incompatible with 'objects'.
; excludeObjects = public.*temp, etl.phase?
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; If true, vbr attempts to connect to the database using a local connection.
; dbUseLocalConnection = False
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[CloudStorage]
; Specifies encryption-at-rest on S3
; cloud_storage_encrypt_at_rest = sse
; cloud_storage_sse_kms_key_id = <key_id>
; Specifies SSL encrypted transfer.
; cloud_storage_encrypt_transport = True
; Specifies the number of threads for upload/download - backup
; cloud_storage_concurrency_backup = 10
; Specifies the number of threads for upload/download - restore
; cloud_storage_concurrency_restore = 10
; Specifies the number of threads for deleting objects from the backup location
; cloud_storage_concurrency_delete = 10
; Specifies the path to a custom SSL server certificate bundle
; cloud_storage_ca_bundle = /home/user/ssl_folder/ca_bundle.pem
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Specifies the number of historical backups to retain in addition to the most recent backup.
; 1 current + n historical backups
; restorePointLimit = 1
; Full path to the password configuration file
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; Specifies the service name of the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_service_name = vertica
; Specifies the realm (authentication domain) of the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_realm = your_auth_domain
; Specifies the location of the keytab file which contains the credentials for the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_keytab_file = /path/to/keytab_file
; Specifies the location of the Hadoop XML configuration files of the HDFS clusters. Only set this when your cluster is on HA. This only applies to HDFS.
; If you have multiple conf directories, please separate them with ':'.
; hadoop_conf_dir = /path/to/conf or /path/to/conf1:/path/to/conf2
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator
; dbUser = current_username
2.3 - 硬链接的完整备份/还原
backup_restore_full_hardlink.ini
配置硬链接本地备份时,需满足以下要求:
-
在 [Transmission]
部分下,添加参数 hardLinkLocal:
hardLinkLocal = True
-
备份目录必须与数据库数据目录位于相同的文件系统中。
-
省略加密参数。如果配置文件将加密参数和 hardLinkLocal 参数都设置为 true,则 vbr 会发出警告并忽略加密参数。
; This sample vbr configuration file shows backup and restore using hard-links to data files on each database host for that host's backup.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; For each database node there must be one [Mapping] entry to indicate the directory to store the backup.
; !!Mandatory!! Backup host name (no default) and Backup directory (no default).
; node_name = backup_host:backup_dir
; Must use [] for hardlink backups
v_exampledb_node0001 = []:/home/dbadmin/backups
v_exampledb_node0002 = []:/home/dbadmin/backups
v_exampledb_node0003 = []:/home/dbadmin/backups
v_exampledb_node0004 = []:/home/dbadmin/backups
[Misc]
; !!Recommended!! Snapshot name. Object and full backups should always have different snapshot names.
; Backups with the same snapshotName form a time sequence limited by restorePointLimit.
; Valid characters: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
[Transmission]
; !!Mandatory!! Identifies the backup as a hardlink style backup.
hardLinkLocal = True
; If copyOnHardLinkFailure is True, when a hard-link local backup cannot create links the data is copied instead.
copyOnHardLinkFailure = False
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Full path to the password configuration file
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile =
; Specifies the number of historical backups to retain in addition to the most recent backup.
; 1 current + n historical backups
; restorePointLimit = 1
; When enabled, Vertica confirms that the specified backup locations contain
; sufficient free space and inodes to allow a successful backup. If a backup
; location has insufficient resources, Vertica displays an error message explaining the shortage and
; cancels the backup. If Vertica cannot determine the amount of available space
; or number of inodes in the backupDir, it displays a warning and continues
; with the backup.
; enableFreeSpaceCheck = True
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator.
; dbUser = current_username
2.4 - 完整的本地备份/还原
backup_restore_full_local.ini
; This is a sample vbr configuration file for backup and restore using a file system on each database host for that host's backup.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; !!Mandatory!! For each database node there must be one [Mapping] entry to indicate the directory to store the backup.
; node_name = backup_host:backup_dir
; [] indicates backup to localhost
v_exampledb_node0001 = []:/home/dbadmin/backups
v_exampledb_node0002 = []:/home/dbadmin/backups
v_exampledb_node0003 = []:/home/dbadmin/backups
v_exampledb_node0004 = []:/home/dbadmin/backups
[Misc]
; !!Recommended!! Snapshot name
; Backups with the same snapshotName form a time sequence limited by restorePointLimit.
; SnapshotName is used for naming archives in the backup directory, and for monitoring and troubleshooting.
; Valid values: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Specifies the number of historical backups to retain in addition to the most recent backup.
; 1 current + n historical backups
; restorePointLimit = 1
; Full path to the password configuration file
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; When enabled, Vertica confirms that the specified backup locations contain
; sufficient free space and inodes to allow a successful backup. If a backup
; location has insufficient resources, Vertica displays an error message explaining the shortage and
; cancels the backup. If Vertica cannot determine the amount of available space
; or number of inodes in the backupDir, it displays a warning and continues
; with the backup.
; enableFreeSpaceCheck = True
[Transmission]
; The total bandwidth limit for all restore connections in KBPS, 0 for unlimited
; total_bwlimit_restore = 0
; The maximum number of restore TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_restore = 1
; Total bandwidth limit for all backup connections in KBPS, 0 for unlimited. Vertica distributes
; this bandwidth evenly among the number of connections set in concurrency_backup.
; total_bwlimit_backup = 0
; The maximum number of backup TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_backup = 1
; The maximum number of delete TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_delete = 16
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator
; dbUser = current_username
2.5 - Enterprise 模式下的对象级别本地备份/还原
backup_restore_object_local.ini
对象备份仅备份由参数对象或参数 includeObjects 和 excludeObjects 在 [Misc]
部分中指定的架构或表。
对于对象还原,请使用与创建备份相同的配置文件,并使用 vbr 命令行参数指定要还原的对象
--restore-objects
。
; This sample vbr configuration file shows object-level backup and restore
; using a file system on each database host for that host's backup.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; Option and values are separated by an equal sign.
; Only arguments marked as '!!Mandatory!!' must be specified explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; There must be one [Mapping] section for all of the nodes in your database cluster.
; !!Mandatory!! Backup host name (no default) and Backup directory (no default)
; node_name = backup_host:backup_dir
; [] indicates backup to localhost
v_exampledb_node0001 = []:/home/dbadmin/backups
v_exampledb_node0002 = []:/home/dbadmin/backups
v_exampledb_node0003 = []:/home/dbadmin/backups
v_exampledb_node0004 = []:/home/dbadmin/backups
[Misc]
; !!Recommended!! Snapshot name. Object and full backups should always have different snapshot names.
; Backups with the same snapshotName form a time sequence limited by restorePointLimit.
; SnapshotName is used for naming archives in the backup directory, and for monitoring and troubleshooting.
; Valid values: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
; Specifies how Vertica handles objects of the same name when restoring schema or table backups.
; objectRestoreMode = createOrReplace
; Specifies which tables and/or schemas to copy. For tables, the containing schema defaults to public.
; Note: 'objects' is incompatible with 'includeObjects' and 'excludeObjects'.
; (no default)
objects = mytable, myschema, myothertable
; Specifies the set of objects to backup/restore; wildcards may be used.
; Note: 'includeObjects' is incompatible with 'objects'.
; includeObjects = public.mytable, customer*, s?
; Subtracts from the set of objects to backup/restore; wildcards may be used
; Note: 'excludeObjects' is incompatible with 'objects'.
; excludeObjects = public.*temp, etl.phase?
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr will prompt user for database password every time.
; If set to False, specify location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Specifies the number of historical backups to retain in addition to the most recent backup.
; 1 current + n historical backups
; restorePointLimit = 1
; Full path to the password configuration file
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; When enabled, Vertica confirms that the specified backup locations contain
; sufficient free space and inodes to allow a successful backup. If a backup
; location has insufficient resources, Vertica displays an error message explaining the shortage and
; cancels the backup. If Vertica cannot determine the amount of available space
; or number of inodes in the backupDir, it displays a warning and continues
; with the backup.
; enableFreeSpaceCheck = True
[Transmission]
; The total bandwidth limit for all restore connections in KBPS, 0 for unlimited
; total_bwlimit_restore = 0
; The maximum number of restore TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_restore = 1
; Total bandwidth limit for all backup connections in KBPS, 0 for unlimited. Vertica distributes
; this bandwidth evenly among the number of connections set in concurrency_backup.
; total_bwlimit_backup = 0
; The maximum number of backup TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_backup = 1
; The maximum number of delete TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_delete = 16
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator.
; dbUser = current_username
2.6 - 将对象从备份还原到备用群集
object_restore_to_other_cluster.ini
; This sample vbr configuration file shows object restore to another cluster from an existing full or object backup.
; To restore objects from an existing backup(object or full), you must use the "--restore-objects" vbr command line option.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; There must be one [Mapping] section for all of the nodes in your database cluster.
; !!Mandatory!! Backup host name (no default) and Backup directory (no default)
; node_name = backup_host:backup_dir
v_exampledb_node0001 = backup_host0001:/home/dbadmin/backups
v_exampledb_node0002 = backup_host0002:/home/dbadmin/backups
v_exampledb_node0003 = backup_host0003:/home/dbadmin/backups
v_exampledb_node0004 = backup_host0004:/home/dbadmin/backups
[NodeMapping]
; !!Recommended!! This section is required when performing an object restore from a full/object backup to a different cluster and node names are different between source (backup) and destination (restoring) databases.
v_sourcedb_node0001 = v_exampledb_node0001
v_sourcedb_node0002 = v_exampledb_node0002
v_sourcedb_node0003 = v_exampledb_node0003
v_sourcedb_node0004 = v_exampledb_node0004
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to backup/restore.
; dbName = current_database
; If this parameter is True, vbr prompts the user for database password every time.
; If False, specify location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; !!Recommended!! Snapshot name.
; SnapshotName is useful for monitoring and troubleshooting.
; Valid characters: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
; Specifies how Vertica handles objects of the same name when restoring schema or table backups. Options are coexist, createOrReplace or create.
; objectRestoreMode = createOrReplace
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Full path to the password configuration file.
; Store this file in a directory only readable by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; When enabled, Vertica confirms that the specified backup locations contain
; sufficient free space and inodes to allow a successful backup. If a backup
; location has insufficient resources, Vertica displays an error message and
; cancels the backup. If Vertica cannot determine the amount of available space
; or number of inodes in the backupDir, it displays a warning and continues
; with the backup.
; enableFreeSpaceCheck = True
[Transmission]
; Sets options for transmitting the data when using backup hosts.
; Specifies the default port number for the rsync protocol.
; port_rsync = 50000
; The total bandwidth limit for all restore connections in KBPS, 0 for unlimited
; total_bwlimit_restore = 0
; The maximum number of backup TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_restore = 1
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator.
; dbUser = current_username
2.7 - 将对象复制到备用数据库
replicate.ini
; This sample vbr configuration file shows the replicate vbr task.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; There must be one [Mapping] section for all of the nodes in your database cluster.
; !!Mandatory!! Target host name (no default)
; node_name = new_host
v_exampledb_node0001 = destination_host0001
v_exampledb_node0002 = destination_host0002
v_exampledb_node0003 = destination_host0003
v_exampledb_node0004 = destination_host0004
[Misc]
; !!Recommended!! Snapshot name.
; SnapshotName is useful for monitoring and troubleshooting.
; Valid characters: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
; Specifies which tables and/or schemas to copy. For tables, the containing schema defaults to public.
; objects for replication. You must specify only one of either objects or includeObjects.
; Use comma-separated list for multiple objects
; (no default)
objects = mytable, myschema, myothertable
; Specifies the set of objects to replicate; wildcards may be used.
; Note: 'includeObjects' is incompatible with 'objects'.
; includeObjects = public.mytable, customer*, s?
; Subtracts from the set of objects to replicate; wildcards may be used
; Note: 'excludeObjects' is incompatible with 'objects'.
; excludeObjects = public.*temp, etl.phase?
; Specifies how Vertica handles objects of the same name when copying schema or tables.
; objectRestoreMode = createOrReplace
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to replicate.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; !!Mandatory!! These settings are all mandatory for replication. None of which have defaults.
dest_dbName = target_db
dest_dbUser = dbadmin
dest_dbPromptForPassword = True
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Full path to the password configuration file containing database password credentials
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
; Specifies the service name of the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_service_name = vertica
; Specifies the realm (authentication domain) of the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_realm = your_auth_domain
; Specifies the location of the keytab file which contains the credentials for the Vertica Kerberos principal. This only applies to HDFS.
; kerberos_keytab_file = /path/to/keytab_file
; Specifies the location of the Hadoop XML configuration files of the HDFS clusters. Only set this when your cluster is on HA. This only applies to HDFS.
; If you have multiple conf directories, please separate them with ':'.
; hadoop_conf_dir = /path/to/conf or /path/to/conf1:/path/to/conf2
[Transmission]
; Specifies the default port number for the rsync protocol.
; port_rsync = 50000
; Total bandwidth limit for all backup connections in KBPS, 0 for unlimited. Vertica distributes
; this bandwidth evenly among the number of connections set in concurrency_backup.
; total_bwlimit_backup = 0
; The maximum number of replication TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_backup = 1
; The maximum number of restore TCP rsync connection threads per node.
; Results vary depending on environment, but values between 2 and 16 are sometimes quite helpful.
; concurrency_restore = 1
; The maximum number of delete TCP rsync connection threads per node.
; Results vary depending on environment, but values between 2 and 16 are sometimes quite helpful.
; concurrency_delete = 16
[Database]
; Vertica user name for vbr to connect to the database.
; This is very rarely be needed since dbUser is normally identical to the database administrator.
; dbUser = current_username
2.8 - 将数据库复制到备用群集
copycluster.ini
; This sample vbr configuration file is configured for the copycluster vbr task.
; Copycluster supports full database copies only, not specific objects.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; An equal sign separates options and values.
; Specify arguments marked '!!Mandatory!!' explicitly.
; All commented parameters are set to their default value.
; ------------------------------------------- ;
;;; BASIC PARAMETERS ;;;
; ------------------------------------------- ;
[Mapping]
; For each node of the source database, there must be a [Mapping] entry specifying the corresponding hostname of the destination database node.
; !!Mandatory!! node_name = new_host/ip (no defaults)
v_exampledb_node0001 = destination_host1.example
v_exampledb_node0002 = destination_host2.example
v_exampledb_node0003 = destination_host3.example
v_exampledb_node0004 = destination_host4.example
; v_exampledb_node0001 = 10.0.90.17
; v_exampledb_node0002 = 10.0.90.18
; v_exampledb_node0003 = 10.0.90.19
; v_exampledb_node0004 = 10.0.90.20
[Database]
; !!Recommended!! If you have more than one database defined on this Vertica cluster, use this parameter to specify which database to copy.
; dbName = current_database
; If this parameter is True, vbr prompts the user for the database password every time.
; If False, specify the location of password config file in 'passwordFile' parameter in [Misc] section.
; dbPromptForPassword = True
; ------------------------------------------- ;
;;; ADVANCED PARAMETERS ;;;
; ------------------------------------------- ;
[Misc]
; !!Recommended!! Snapshot name.
; SnapshotName is used for monitoring and troubleshooting.
; Valid characters: a-z A-Z 0-9 - _
; snapshotName = backup_snapshot
; The temp directory location on all database hosts.
; The directory must be readable and writeable by the dbadmin, and must implement POSIX style fcntl lockf locking.
; tempDir = /tmp/vbr
; Full path to the password configuration file containing database password credentials
; Store this file in directory readable only by the dbadmin.
; (no default)
; passwordFile = /path/to/vbr/pw.txt
[Transmission]
; Specifies the default port number for the rsync protocol.
; port_rsync = 50000
; Total bandwidth limit for all copycluster connections in KBPS, 0 for unlimited. Vertica distributes
; this bandwidth evenly among the number of connections set in concurrency_backup.
; total_bwlimit_backup = 0
; The maximum number of backup TCP rsync connection threads per node.
; Optimum settings depend on your particular environment.
; For best performance, experiment with values between 2 and 16.
; concurrency_backup = 1
; The maximum number of restore TCP rsync connection threads per node.
; Results vary depending on environment, but values between 2 and 16 are sometimes quite helpful.
; concurrency_restore = 1
; The maximum number of delete TCP rsync connection threads per node.
; Results vary depending on environment, but values between 2 and 16 are sometimes quite helpful.
; concurrency_delete = 16
[Database]
; Vertica user name for vbr to connect to the database.
; This setting is rarely needed since dbUser is normally identical to the database administrator
; dbUser = current_username
2.9 - 密码文件
password.ini
与其他配置(.ini
)文件不同,密码配置文件必须通过其密码文件参数由另一个配置文件引用。
; This is a sample password configuration file.
; Point to this file in the 'passwordFile' parameter of the [Misc] section.
; Section headings are enclosed by square brackets.
; Comments have leading semicolons (;) or pound signs (#).
; Option and values are separated by an equal sign.
[Passwords]
; The database administrator's password, and used if dbPromptForPassword is False.
; dbPassword=myDBsecret
; The password for the rsync user account.
; serviceAccessPass=myrsyncpw
; The password for the dest_dbuser Vertica account, for replication tasks only.
; dest_dbPassword=destDBsecret
3 - Eon 模式数据库的要求
Eon 模式数据库执行的备份和还原操作与 Enterprise 模式数据库相同。Eon 模式还有一些额外的要求,因为它使用不同的架构。
注意
这些要求适用于
备份和还原数据库中列出的云存储位置,以及在 HDFS 上具有公共存储的内部部署存储。
必需的配置文件参数
您必须将 Eon 模式数据库备份到受支持的云存储位置。Vertica 要求您在 vbr
配置文件中设置以下值:
一个备份路径仅对一个数据库有效。您不能使用相同的路径来存储多个数据库的备份。有关这些配置参数的详细信息,请参阅 [CloudStorage]。
使用与 S3 兼容的内部部署云存储的 Eon 模式数据库可以备份到 Amazon Web Services (AWS) S3。
云存储访问
除了访问用于数据库公共存储的云存储桶外,您还必须访问云存储备份位置。验证您用于访问公共存储的凭据是否也有权访问备份位置。有关为 Vertica 配置云存储访问的详细信息,请参阅配置与云存储之间的备份。
对于 AWS,请注意,尽管您的备份位置可能位于不同的区域,但跨不同 S3 区域的备份和还原操作与虚拟私有云 (VPC) 端点不兼容。
S3 内部部署和私有云存储
如果数据库在内部部署中运行,则您的公共存储不在 AWS 上,而是在另一个使用 S3 协议的存储平台上。这意味着可能有两个端点和两组凭据,具体取决于您备份的位置。这一额外信息存储在环境变量中,而不是配置文件的参数中。有关详细信息,请参阅配置与云存储之间的备份。
Eon 模式的内部部署数据库的备份不支持 AWS IAM 配置文件。
Eon 模式的内部部署数据库支持以下 vbr
任务:
-
备份
-
还原
-
列表备份
-
复制
-
快速检查
-
完整检查
-
快速修复
-
回收垃圾
-
移除
HDFS 内部部署存储
要备份使用 HDFS 内部部署存储的 Eon 模式数据库,公共存储和备份位置必须使用相同的 HDFS 凭据和域。支持所有 vbr 操作(除了 copycluster 以外)。
Vertica 支持用于 vbr 操作的 Kerberos 身份验证、高可用性名称节点和线路加密。Vertica 不支持 Hadoop 存储的静态加密。
有关详细信息,请参阅配置与 HDFS 之间的备份。
数据库还原要求
还原 Eon 模式数据库的备份时,还原数据库必须满足以下要求:
您可以将从具有主子群集和辅助子群集的数据库中获取的完整备份或对象备份还原到目标数据库中的主子群集。数据库可以只有主子群集,也可以有任意数量的辅助子群集。辅助子群集不需要匹配备份数据库。复制数据库也是如此;只要求是主子群集即可。这些要求与恢复 Eon 模式数据库群集的要求类似。
使用配置文件中的 [Mapping]
部分指定主子群集的映射。
4 - 备份和还原 HDFS 存储位置的要求
备份和还原 HDFS 存储位置时,有一些注意事项:
-
存储位置的 HDFS 目录必须已启用快照。您可以直接自行配置此功能,或者让数据库管理员的 Hadoop 帐户自动为您执行此操作。有关详细信息,请参阅用于备份和还原的 Hadoop 配置。
-
如果 Hadoop 群集使用 Kerberos,则 Vertica 节点必须有权访问某些 Hadoop 配置文件。请参阅下面的配置 Kerberos。
-
要还原 HDFS 存储位置,Vertica 群集必须能够运行 Hadoop distcp
命令。请参阅下文的在 Vertica 群集上配置 distcp。
-
HDFS 存储位置不支持对象级别备份。您必须执行完整数据库备份,才能备份 HDFS 存储位置中的数据。
-
HDFS 存储位置中的数据将备份至 HDFS。此备份可防止数据的意外删除或损坏。但如果整个 Hadoop 群集发生灾难性故障,它并不能防止数据丢失。为了防止数据丢失,您必须为 Hadoop 群集制定备份和灾难恢复计划。
存储在 Linux 本机文件系统上的数据仍将备份到您在备份配置文件中指定的位置。该数据和 HDFS 存储位置中的数据将由 vbr
备份脚本分别处理。
配置 Kerberos
如果 HDFS 使用 Kerberos,则要备份 HDFS 存储位置,需额外执行以下步骤:
-
向每个 Vertica 节点的 Kerberos 主体授予 Hadoop 超级用户权限。
-
按照访问 Hadoop 配置文件中所述,将 Hadoop 配置文件复制到您的数据库节点。Vertica 需要访问 core-site.xml
、hdfs-site.xml
和 yarn-site.xml
以进行备份和还原。如果 Vertica 节点共置于 HDFS 节点上,则这些文件已经存在。
-
将 HadoopConfDir 参数设置为包含这些文件的目录的位置。如果文件位于多个目录中,则该值可以是路径。例如:
=> ALTER DATABASE exampledb SET HadoopConfDir = '/etc/hadoop/conf:/etc/hadoop/test';
这三个配置文件必须全部存在于每个数据库节点的此路径上。
如果您的 Vertica 节点共置于 HDFS 节点上,而且您使用 Kerberos,则还必须更改某些 Hadoop 配置参数。要想从备份还原为工作状态,就需要执行这些更改。在每个 Vertica 节点上的 yarn-site.xml
中,设置以下参数:
无需在不属于 Vertica 节点的 HDFS 节点上做任何更改。
在 Vertica 群集上配置 distcp
Vertica 群集必须能够运行 Hadoop distcp
命令,才能还原 HDFS 存储位置的备份。要使群集能够运行此命令,最简单的方法是在每个节点上安装几个 Hadoop 程序包。这些程序包必须来自同一个发行版,而且其 Hadoop 版本必须与 Hadoop 群集上运行的版本相同。
您需要遵循的步骤取决于:
注意
安装运行 distcp
所必需的 Hadoop 程序包不会将 Vertica 数据库变成 Hadoop 群集。这个过程仅在您的群集上安装足以运行 distcp
命令的 Hadoop 支持文件。除 Hadoop 支持文件消耗少量额外的磁盘空间以外,Vertica 群集上没有任何额外开销。
配置概述
配置 Vertica 群集以还原 HDFS 存储位置备份的步骤如下:
-
如有必要,在 Vertica 群集中的主机上安装并配置 Java 运行时。
-
找到 Hadoop 发行版包存储库的位置。
-
在群集中的所有主机上,将 Hadoop 发行版的包存储库添加到 Linux 程序包管理器中。
-
在 Vertica 主机上安装必要的 Hadoop 程序包。
-
在 Vertica 数据库中设置两个与 Java 和 Hadoop 有关的配置参数。
-
确认 Hadoop distcp
命令可在 Vertica 主机上运行。
以下各节将更加详尽地介绍上述步骤。
安装 Java 运行时
Vertica 群集必须安装 Java 虚拟机 (JVM) 才能运行 Hadoop distcp
命令。如果您已出于以下目的配置群集,则其已经安装了 JVM:
如果 Vertica 数据库安装了 JVM,则验证您的 Hadoop 发行版是否支持它。请参阅 Hadoop 发行版的文档,以确定其所支持的 JVM。
如果您的 Hadoop 发行版不支持 Vertica 群集上安装的 JVM,您必须卸载该 JVM。然后,您必须安装 Vertica 和 Hadoop 发行版均支持的 JVM。有关与 Vertica 兼容的 JVM 列表,请参阅 Vertica SDK。
如果您的 Vertica 群集没有 JVM(或其现有 JVM 与您的 Hadoop 发行版不兼容),请按照在 Vertica 群集上安装 Java 运行时中的说明进行操作。
找到 Hadoop 发行版的包存储库
许多 Hadoop 发行版均具有自己的安装系统,如 Cloudera Manager 或 Ambari。但它们同样支持使用本机 Linux 程序包(如 RPM 和 .deb
文件)执行手动安装。这些程序包文件均保存在存储库中。您可以配置 Vertica 主机以访问此存储库,以便下载并安装 Hadoop 程序包。
请查阅 Hadoop 发行版的文档,以找到其 Linux 包存储库的位置。这一信息通常可在文档中介绍手动安装技巧的部分找到。
每个 Hadoop 发行版均针对各个主要的 Linux 程序包管理系统维护不同的存储库。请为 Vertica 群集上运行的 Linux 发行版找到特定的存储库。请确保您选择的包存储库与 Hadoop 群集上使用的版本相匹配。
配置 Vertica 节点以访问 Hadoop 发行版的包存储库
配置 Vertica 群集中的节点,使其可以访问 Hadoop 发行版的包存储库。Hadoop 发行版的文档应该说明如何将存储库添加到 Linux 平台。如果该文档没有说明如何将存储库添加到打包系统,请参阅 Linux 发行版的文档。
您需要遵循的步骤取决于 Linux 平台使用的程序包管理系统。通常而言,此过程包括:
您必须将 Hadoop 存储库添加到 Vertica 群集中的所有主机。
安装所需的 Hadoop 程序包
存储库配置完毕后,您就可以安装 Hadoop 程序包。您需要安装的程序包有:
-
hadoop
-
hadoop-hdfs
-
hadoop-client
通常情况下,这些程序包的名称在所有 Hadoop 和 Linux 发行版中都是相同的。这些程序包往往具有其他相关性。请务必接受 Linux 程序包管理器要求安装的所有额外的程序包。
要安装这些程序包,请针对您的 Linux 发行版使用程序包管理器命令。您需要使用的程序包管理器命令取决于您的 Linux 发行版:
-
在 Red Hat 和 CentOS 上,程序包管理器命令为 yum
。
-
在 Debian 和 Ubuntu 上,程序包管理器命令为 apt-get
。
-
在 SUSE 上,程序包管理器命令为 zypper
。
有关安装程序包的说明,请查阅 Linux 发行版的文档。
设置配置参数
您必须设置两个 Hadoop 配置参数,才能使 Vertica 还原 HDFS 数据:
-
JavaBinaryForUDx 是指到 Java 可执行文件的路径。您可能已经设置此值,以使用 Java UDx 或 HCatalog 连接器。您可以使用以下命令,从 Bash 命令外壳中找到默认 Java 可执行文件的路径:
$ which java
-
HadoopHome 是包含 bin/hadoop
的目录(包含 Hadoop 可执行文件的 bin 目录)。此参数的默认值为 /usr
。如果您的 Hadoop 可执行文件位于 /usr/bin/hadoop
,则默认值是正确的。
以下示例展示了如何设置并随后查看这些参数的值:
=> ALTER DATABASE DEFAULT SET PARAMETER JavaBinaryForUDx = '/usr/bin/java';
=> SELECT current_value FROM configuration_parameters WHERE parameter_name = 'JavaBinaryForUDx';
current_value
---------------
/usr/bin/java
(1 row)
=> ALTER DATABASE DEFAULT SET HadoopHome = '/usr';
=> SELECT current_value FROM configuration_parameters WHERE parameter_name = 'HadoopHome';
current_value
---------------
/usr
(1 row)
您还可以设置以下参数:
-
HadoopFSReadRetryTimeout 和 HadoopFSWriteRetryTimeout 指定失败前的等待时长。二者的默认值均为 180 秒。如果确信您的文件系统失败速度更快,降低这些值有助于您提高性能。
-
HadoopFSReplication 指定 HDFS 生成的副本数量。Hadoop 客户端默认选择此参数;Vertica 将相同的值用于所有节点。
当心
除非 Vertica 支持人员另有指示,否则请勿更改此设置。
-
HadoopFSBlockSizeBytes 是要写入到 HDFS 的数据块大小;较大的文件将被划分成这般大小的数据块。默认值为 64MB。
确认 distcp 可以运行
程序包在群集中的所有主机上安装完毕后,数据库应该能够运行 Hadoop distcp
命令。要进行测试:
-
以
数据库超级用户身份登录到群集中的任何主机。
-
在 Bash 外壳,输入以下命令:
$ hadoop distcp
-
该命令应打印出与下面类似的消息:
usage: distcp OPTIONS [source_path...] <target_path>
OPTIONS
-async Should distcp execution be blocking
-atomic Commit all changes or none
-bandwidth <arg> Specify bandwidth per map in MB
-delete Delete from target, files missing in source
-f <arg> List of files that need to be copied
-filelimit <arg> (Deprecated!) Limit number of files copied to <= n
-i Ignore failures during copy
-log <arg> Folder on DFS where distcp execution logs are
saved
-m <arg> Max number of concurrent maps to use for copy
-mapredSslConf <arg> Configuration for ssl config file, to use with
hftps://
-overwrite Choose to overwrite target files unconditionally,
even if they exist.
-p <arg> preserve status (rbugpc)(replication, block-size,
user, group, permission, checksum-type)
-sizelimit <arg> (Deprecated!) Limit number of files copied to <= n
bytes
-skipcrccheck Whether to skip CRC checks between source and
target paths.
-strategy <arg> Copy strategy to use. Default is dividing work
based on file sizes
-tmp <arg> Intermediate work path to be used for atomic
commit
-update Update target, copying only missingfiles or
directories
-
在数据库中的其他主机上重复上述步骤,以验证所有主机均可运行 distcp
。
故障排除
如果您无法运行 distcp
命令,请尝试执行以下步骤:
-
如果 Bash 找不到 hadoop
命令,您可能需要将 Hadoop 的 bin
目录手动添加到系统搜索路径。另一种方法是,在到 hadoop
二进制文件的搜索路径(如 /usr/bin
)的现有目录中创建符号链接。
-
请确保 Vertica 群集上安装的 Java 版本与您的 Hadoop 发行版兼容。
-
审查 Linux 程序包安装工具的日志中是否存在错误。在某些情况下,程序包可能没有完全安装,或者由于网络问题而没有被下载。
-
请确保数据库管理员帐户具有执行 hadoop
命令的权限。您可能必须将该帐户添加到特定的组,才能使其运行必要的命令。
5 - 设置备份位置
当心
保护备份位置并严格限制已有权访问数据库中所有数据的用户对备份的访问权限,这一点十分重要。破坏备份意味着破坏数据库。
完整备份和对象级别备份都驻留在备份主机上,即存储备份和存档的计算机系统。在备份主机上,Vertica 将备份保存在特定的备份位置(目录)中。
您必须先设置备份主机,然后才能创建备份。
备份位置中的存储格式类型必须支持 fcntl lockf (POSIX) 文件锁定。
5.1 - 配置备份主机和连接
您可以使用 vbr
将数据库备份到一个或多个主机(称为备份主机),这些主机可位于数据库群集之外。
您可以使用一个或多个备份主机或单个云存储桶来备份数据库。使用 vbr
配置文件可指定群集中的每个节点应使用哪个备份主机。
在备份到本地群集之外的主机之前,先配置 vbr
要使用的目标备份位置。所用的备份主机必须满足以下条件:
在数据库主机上配置 TCP 转发
vbr
依赖 TCP 转发将连接从数据库主机转发到备份主机。对于 copycluster 和复制任务,必须在两组主机上均启用 TCP 转发。与备份主机的 SSH 连接不需要 SSH 转发。
如果默认情况下尚未设置,请在 /etc/ssh/sshd_config 中设置 AllowTcpForwarding = Yes
,然后向每个主机上的 sshd 发送 SIGHUP 信号。有关更多信息,请参阅 Linux sshd 文档。
如果未启用 TCP 转发,则需要该转发的任务将会失败,并显示以下消息:“连接到远程主机时出错: 请检查 SSH 设置,且所有节点上均已安装相同的 Vertica 版本。(Errors connecting to remote hosts: Check SSH settings, and that the same Vertica version is installed on all nodes.)”
在单节点群集上,vbr
使用随机的大数字端口创建本地 ssh 隧道。如果将 PermitOpen
设置为限制该端口,则上述操作将会失败。注释掉 sshd_config 中的 PermitOpen
行。
为备份主机创建配置文件
为完整备份或对象级别备份创建单独的配置文件,每个配置文件采用不同的名称。此外,使用相同的节点、备份主机和目录位置对。为每个数据库指定不同的备份目录位置。
注意
为了在创建备份时获得最佳网络性能,Vertica 建议群集中的每个节点均使用专用备份主机。
准备备份主机目录
您必须先准备目标备份目录,然后 vbr
才能备份数据库。运行任务类型为 init
的 vbr
,为备份过程创建必需清单。您只需执行一次 init 进程。之后,Vertica 将自动维护清单。
估计备份主机磁盘要求
无论计划在何处保存数据备份,均需考虑站点对历史备份的磁盘要求。此外,如果使用多个存档,则多个存档可能需要更多的磁盘空间。Vertica 建议每个备份主机的空间至少是数据库节点占用空间大小的两倍。无论站点备份计划和保留要求的具体情况如何,均应遵循此建议。
要估计数据库大小,请使用 storage_containers
系统表的 used_bytes
列,如下例所示:
=> SELECT SUM(used_bytes) FROM storage_containers WHERE node_name='v_mydb_node0001';
total_size
------------
302135743
(1 row)
使备份主机可访问
您必须验证源数据库节点和目标备份主机之间的任何防火墙均允许连接,以便在端口 50000 上执行 SSH 和 rsync。
备份主机运行的 rsync 和 Python 版本必须与 Vertica 安装包中提供的版本相同。
设置免密码 SSH 访问
要允许 vbr
访问备份主机,
数据库超级用户必须满足两个要求:
如何满足这些要求取决于您的平台和基础设施。
备份主机之间的 SSH 访问以及从备份主机到数据库节点的访问并不是必需的。
如果您的站点未使用集中登录系统(例如 LDAP),则通常可使用 useradd
命令或通过 GUI 管理工具添加用户。有关详细信息,请参阅您的 Linux 分发版文档。
若平台支持,可使用 ssh-copy-id
命令将数据库管理员的 SSH 标识文件从其中一个数据库节点复制到备份位置,从而启用免密码 SSH 登录。例如,若要将 SSH 标识文件从某个节点复制到名为 backup01
的备份主机:
$ ssh-copy-id -i dbadmin@backup01|
Password:
尝试使用 "ssh dbadmin@backup01"
登录到计算机。然后,检查 ~/.ssh/authorized_keysfile
的内容,确认未添加您不想包括的额外键。
$ ssh backup01
Last login: Mon May 23 11:44:23 2011 from host01
重复上述步骤,将数据库管理员的 SSH 标识复制到用于备份数据库的所有备份主机中。
复制数据库管理员的 SSH 标识后,您应能够从群集中的任意节点登录到备份主机,而不收到输入密码的提示。
增加备份主机的 SSH 最大连接设置
如果配置要求将多个节点备份到一个备份主机 (n:1),请增加 SSH 后台程序 (sshd
) 的并发 SSH 连接数。默认情况下,每个主机上的并发 SSH 连接数为 10
,该值是在 sshd_config
文件中通过 MaxStartups
关键字设置的。每个备份主机的 MaxStartups
值应大于要备份到此备份主机的主机总数。有关配置 MaxStartups
的详细信息,请参考该参数的手册页。
另请参阅
5.2 - 配置硬链接本地备份主机
为硬链接本地配置文件指定 backupHost
参数时,请使用 Admintools 所知的数据库主机名(或 IP 地址)。不要使用节点名称。设置群集时使用的是主机名(或 IP 地址)。backupHost
参数请勿使用 localhost
。
列出主机名
要查询节点名称和主机名:
=> SELECT node_name, host_name FROM node_resources;
node_name | host_name
------------------+----------------
v_vmart_node0001 | 192.168.223.11
v_vmart_node0002 | 192.168.223.22
v_vmart_node0003 | 192.168.223.33
(3 rows)
由于您要创建本地备份,请使用方括号 [] 将主机映射到本地主机。有关详细信息,请参考 [mapping]。
[Mapping]
v_vmart_node0001 = []:/home/dbadmin/data/backups
v_vmart_node0002 = []:/home/dbadmin/data/backups
v_vmart_node0003 = []:/home/dbadmin/data/backups
5.3 - 配置与云存储之间的备份
要将 Enterprise 模式或 Eon 模式数据库备份到受支持的云存储位置,需将参数添加到备份配置文件中。可以从本地群集或云提供商的虚拟服务器中创建这些备份。但还需要一些额外的配置。
有关配置身份验证和加密的信息,请参阅云存储的其他注意事项。
配置文件要求
要将任何 Eon 模式或 Enterprise 模式群集备份到云存储目标,备份配置文件必须包含 [CloudStorage] 部分。Vertica 提供了一个示例云存储配置文件,您可以复制和编辑该文件。
环境变量要求
环境变量支持采用安全方式传递备份位置的凭据。在以下备份场景中,Eon 和 Enterprise 模式数据库需要环境变量:
-
在 Google Cloud Platform (GCP) 上,从 Vertica 备份到 Google Cloud Storage (GCS)。
如果要备份到 GCS,则需具有基于哈希的消息身份验证代码 (HMAC) 密钥,其中包含访问 ID 和秘密访问密钥。有关如何创建 HMAC 密钥的说明,请参阅 GCP 上 Eon 模式的先决条件。
-
从内部部署数据库备份到以下任何存储位置:
内部部署数据库备份要求您使用环境变量传递凭据。您不能对跨端点备份使用其他认证方法。
-
任何不使用 Azure 托管标识管理资源的 Azure 用户环境。
vbr 日志将记录您何时发送环境变量。出于安全目的,不会记录环境变量所代表的值。有关查看 vbr 日志的详细信息,请参阅备份和还原故障排除。
Enterprise 模式和 Eon 模式
所有 Enterprise 模式和 Eon 模式数据库都需要下表中所述的环境变量:
仅限 Eon 模式
Eon 模式数据库需要下表中描述的环境变量:
仅限 Azure Blob 存储
如果用户环境不使用 Azure 托管标识管理资源,则必须使用环境变量提供凭据。如果在使用 Azure 托管标识的环境中设置环境变量,则使用环境变量设置的凭据优先于 Azure 托管标识凭据。
您可以在两个单独的 Azure 帐户之间进行备份和还原。跨帐户操作需要每个帐户的凭据配置 JSON 对象和端点配置 JSON 对象。每个环境变量都接受一个或多个以逗号分隔的 JSON 对象的集合。
跨帐户和跨区域的备份和还原操作可能会导致性能下降。有关性能和成本的详细信息,请参阅 Azure 文档。
Azure Blob 存储环境变量如下表所述:
以下命令将 Azure Blob 存储环境变量导出到当前 shell 会话:
$ export VbrCredentialConfig=[{"accountName": "account1","blobEndpoint": "host[:port]","accountKey": "account-key1","sharedAccessSignature": "sas-token1"}]
$ export VbrEndpointConfig=[{"accountName": "account1", "blobEndpoint": "host[:port]", "protocol": "http"}]
5.4 - 云存储的其他注意事项
如果您要备份到受支持的云存储位置,则需额外执行一些一次性配置。如果备份的群集正在云中的实例上运行,则还需额外执行一些步骤。对于 Amazon Web Services (AWS),您可能会选择加密备份。这需要额外执行一些步骤。
默认情况下,存储桶访问仅限于公共存储桶。对于其他存储桶的一次性操作(例如备份和还原数据库),请使用适当的凭据。有关其他信息,请参阅 Google Cloud Storage 参数和 S3 参数。
为备份配置云存储
与任何存储位置一样,您必须使用 vbr
init
任务对云存储位置进行初始化。
由于云存储不支持文件锁定,因此 Vertica 使用本地文件系统或云存储文件系统处理备份期间的文件锁定。您可以使用 vbr 配置文件中的
cloud_storage_backup_file_system_path
参数来识别此位置。在备份期间,Vertica 将在您的本地或云实例上创建一个锁定的标识文件,并在云存储备份位置创建一个重复文件。只要文件匹配,Vertica 就会继续备份,并在备份完成时释放锁定文件。只要文件始终保持相同,您就可以使用云存储位置来执行备份和还原任务。
如果锁定位置中的文件与备份位置中的文件不同步,则备份和还原任务将会失败并显示错误消息。您可以使用 --cloud-force-init
参数重新运行 init
任务,从而解决锁定不一致问题:
$ /opt/vertica/bin/vbr --task init --cloud-force-init -c filename.ini
注意
如果备份失败,请确认 Vertica 群集有权访问您的云存储位置。
为 Google Cloud Storage 配置身份验证
如果您要从基于 Google Cloud Platform 的群集备份到 Google Cloud Storage (GCS),则必须向 GCS 公共存储位置提供身份验证。按照配置与云存储之间的备份中的详细说明设置环境变量,以对 GCS 存储进行身份验证。
有关其他身份验证信息(包括如何创建基于哈希的消息身份验证代码 (HMAC) 密钥),请参阅 GCP 上 Eon 模式的先决条件。
为 Amazon S3 配置 EC2 身份验证
如果从基于 EC2 的群集备份到 S3,则必须向 S3 主机提供身份验证。无论选择何种身份验证类型,您的凭据均不会离开 EC2 群集。Vertica 支持以下身份验证类型:
AWS 凭据文件 - 您可以通过 ~/.aws/credentials 在 EC2 启动程序主机上手动创建配置文件。
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
有关凭据文件的更多信息,请参考 Amazon Web Services 文档。
环境变量 - Amazon Web Services 提供以下环境变量:
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
在启动程序上使用这些变量为您的 S3 主机提供身份验证。当会话结束时,AWS 会删除这些变量。有关更多信息,请参考 AWS 文档。
IAM 角色 - 创建 AWS IAM 角色,并授予该角色访问您的 EC2 群集和 S3 资源的权限。建议使用此方法管理长期访问权限。有关更多信息,请参考 Amazon Web Services 文档。
对 Amazon S3 上的备份进行加密
使用本机服务器端 S3 加密功能,可以对 Amazon S3 的备份进行加密。有关 Amazon S3 加密的更多信息,请参考 Amazon 文档。
注意
Vertica 仅支持服务器端加密。不支持客户端加密。
Vertica 支持以下形式的 S3 加密:
启用备份加密之后,Vertica 将在创建备份时对其进行加密。如果在创建初始备份后启用加密,则仅对启用加密后添加的增量备份进行加密。为了确保备份完全加密,请在启用加密之后创建新备份。
要启用加密,请将以下设置添加到配置文件中:
-
cloud_storage_encrypt_transport:在传输期间将备份加密。如果使用 SSE-KMS 加密,则必须启用此参数。
-
cloud_storage_encrypt_at_rest:启用备份加密。如果启用加密但不提供 KMS 密钥,则 Vertica 将使用 SSE-S3 加密。
-
cloud_storage_sse_kms_key_id:如果使用 KMS 加密,请使用此参数提供密钥 ID。
有关这些设置的更多信息,请参阅 [CloudStorage]。
以下示例显示了备份的 KMS 加密的典型配置。
[CloudStorage]
cloud_storage_encrypt_transport = True
cloud_storage_encrypt_at_rest = sse
cloud_storage_sse_kms_key_id = 6785f412-1234-4321-8888-6a774ba2aaaa
5.5 - 配置与 HDFS 之间的备份
仅限 Eon 模式
要备份使用 HDFS 内部部署存储的 Eon 模式数据库,公共存储和备份位置必须使用相同的 HDFS 凭据和域。支持所有 vbr 操作(除了 copycluster 以外)。
Vertica 支持用于 vbr 操作的 Kerberos 身份验证、高可用性名称节点和 TLS(线路加密)。
创建云存储配置文件
要使用 HDFS 上的公共存储在内部部署备份 Eon 模式,则需提供备份配置文件。在 [CloudStorage] 部分中,提供 cloud_storage_backup_path 和 cloud_storage_backup_file_system_path 值。
如果您在 Hadoop 群集中使用 Kerberos 身份验证或高可用性 NameNode,则 vbr 实用程序要求访问您在引导文件(此文件在数据库安装期间创建)中设置的相同值。在备份文件的 [misc] 部分中包含这些值。
下表将 vbr 配置选项映射到其关联的引导文件参数:
例如,如果 KerberosServiceName 在引导文件中设置为 principal-name,则在 [Misc] 中将 kerberos_service_name 设置为 principal-name 配置文件的部分。
公共存储和备份位置之间的加密
Vertica 支持在公共存储和备份位置之间使用线路加密的 vbr 操作。使用备份配置文件的[CloudStorage]部分中的 cloud_storage_encrypt_transport 参数来配置加密。
要启用加密:
如果不使用加密:
Vertica 不支持 Hadoop 存储的静态加密。
6 - 创建备份
当心
保护备份位置并严格限制已有权访问数据库中所有数据的用户对备份的访问权限,这一点十分重要。破坏备份意味着破坏数据库。
何时备份数据库
您应定期对数据库执行完整备份。此外,在以下情况下,您也应执行完整备份:
进行以下操作之前:
-
将 Vertica 升级到另一个版本。
-
删除分区。
-
添加、移除或替换数据库群集中的节点。
进行以下操作之后:
如果:
- 最新备份的时期早于当前的 Ancient History Mark。
最好计划持续备份来备份数据。可以从 cron
作业或其他任务调度程序运行 Vertica vbr
。
您还可以备份选定对象。使用对象备份来补充(而不是替换)完整备份。备份类型中介绍了备份类型。
运行 vbr
不会影响活动的数据库应用程序。 vbr
支持在创建备份的同时,并发运行执行 DML 语句(包括 COPY、INSERT、UPDATE、DELETE 和 SELECT)的应用程序。
备份位置和内容
完整备份和对象级别备份都驻留在备份主机上,即存储备份和存档的计算机系统。
Vertica 将备份保存在特定的备份位置中,即备份主机的目录。此位置可以包含多个备份(包括完整备份和对象级别备份),其中包括关联的存档。备份也可兼容,允许您从完整的数据库备份中还原任何对象。Eon 模式数据库的备份位置必须位于 S3 上。
注意
Vertica 不建议执行并发备份。如果您必须同时运行多个备份,请为每个备份使用单独的备份和临时目录。单独的备份目录将导致无法在历史备份之间共享数据。
在开始备份之前,您必须使用 vbr init 任务准备备份位置,如下例所示:
$ vbr -t init -c full_backup.ini
有关备份位置的详细信息,请参阅设置备份位置。
备份包含备份开始时备份对象的所有已提交数据。备份不包含未提交数据或备份期间提交的数据。备份不会延迟合并或加载活动。
备份 HDFS 存储位置
如果 Vertica 群集使用 HDFS 存储位置,则必须先进行一些额外配置,然后才能执行备份。请参阅备份和还原 HDFS 存储位置的要求。
HDFS 存储位置仅支持完整备份和还原。您无法在使用 HDFS 存储位置的群集上执行对象备份或还原。
备份对 Vertica 节点的影响
进行备份时,备份过程可能会占用额外的存储空间。占用的空间量取决于编录的大小以及备份期间删除的任何对象。备份完成后,备份过程将释放此存储。
创建备份的最佳实践
创建备份配置文件时:
选定的备份对象可以包括一个或多个架构、表或这两者。例如,您可以将架构 S1
、表 T1
和 T2
包括在对象级备份中。可将多个备份合并成一个备份。架构级备份可与数据库备份集成(而表备份可与架构级备份集成,以此类推)。
6.1 - 备份类型
vbr
支持以下类型的备份:
vbr
配置文件包含 snapshotName
参数。对于不同类型的备份(包括对象级别备份中对象的不同组合),使用不同的快照名称。具有相同快照名称的备份形成了一个由 restorePointLimit
限制的时序,因此如果您为所有备份指定相同的快照名称,最终它们相互之间会出现干扰。
完整备份
完整备份是数据库编录及其架构、表和其他对象的完整副本。此类型的备份提供数据库在备份时点的一致映像。您可以将完整备份用于灾难恢复,以便还原损坏的或不完整的数据库。您还可以从完整备份中还原单个对象。
当完整备份已经存在时,vbr
将备份自上次完整备份以来新增数据或更改的数据,而不是生成另一个完整的副本。您可以指定要保留的历史备份数量。
存档包括相同名称的备份的集合。每个存档可以有不同的保留策略。例如,假设 TBak
是表 T 的对象级别备份名称,并且您在每周都创建了每日备份。那么 TBak
存档包括七个备份。保留备份存档有助于您恢复到存档中任何一个已保存的备份。
对象级备份
对象级别备份包含一个或多个架构或表,或一组此类对象。将对象级备份联合起来并不会构成整个数据库。如果存在对象级别备份,您可以还原其中的所有内容或单个对象。
注意
使用 Hadoop 文件系统 (HDFS) 存储位置的 Enterprise 模式数据库不支持对象级别备份。
对象级别备份包含以下对象类型:
硬链接本地备份
您可以直接在数据库节点上,更快速地对完整数据库或特定对象进行本地备份。通常,您将在执行破坏性操作之前临时使用此类备份。不要长期依赖这种备份。它无法使您免受节点故障的影响,因为数据和备份位于同一节点上。
检查点备份称为硬链接本地备份。它包括数据库编录的完整副本,以及指向相应数据文件的一组硬文件链接。您必须将硬链接本地备份保存在编录和数据库文件使用的文件系统中。
仅 Enterprise 模式支持硬链接本地备份。
6.2 - 创建完整备份
创建数据库备份之前,请确认满足以下条件:
-
已使用 vbr init 任务准备了备份目录:
$ vbr -t init -c full_backup.ini
-
您的数据库正在运行。在 K-safe 数据库中,所有节点无需都处于正常运行状态。但是,出现故障的节点不会被备份。
-
所有备份主机可正常运行且可供使用。
-
备份主机(位于数据库群集上或其他位置)具有足够的磁盘空间来存储备份。
-
启动 vbr
用户的用户帐户对主机备份位置上的目标目录具有写入访问权限。此用户可以是 dbadmin
或其他分配的角色。但是,您无法以 root 身份运行 vbr
。
-
每个备份都具有唯一的文件名。
-
如果要保留较早的备份,请在配置文件中将 restorePointLimit
设置为大于 1 的数字。
-
如果您正在备份 Eon 模式数据库,您可能已满足Eon 模式数据库的要求。
从终端运行 vbr
。使用数据库群集启动程序节点中的数据库管理员帐户。该命令仅需要 --task backup
和 --config-file
实参(或其缩写形式,-t
和 -c
)。
如果您的配置文件不包含数据库管理员密码,则 vbr
会提示您输入该密码。系统不会显示您键入的内容。
vbr
在调用后无需进一步的交互操作。
以下示例显示完整备份:
$ vbr -t backup -c full_backup.ini
Starting backup of database VTDB.
Participating nodes: v_vmart_node0001, v_vmart_node0002, v_vmart_node0003, v_vmart_node0004.
Snapshotting database.
Snapshot complete.
Approximate bytes to copy: 2315056043 of 2356089422 total.
[==================================================] 100%
Copying backup metadata.
Finalizing backup.
Backup complete!
默认情况下,屏幕中除了进度条之外不显示任何输出。要包含附加的进度信息,请使用 --debug
选项,其值为 1、2 或 3。
6.3 - 创建对象级别备份
使用对象级别备份可备份单个架构或表。对象级备份特别适用于多租户数据库站点。例如,一个国际机场可以使用多租户数据库来表示其架构中的不同航线。然后,可以使用表来维护不同类型的航线信息,其中包括“抵达 (ARRIVALS)”、“出港 (DEPARTURES)”以及“乘客 (PASSENGER)”信息。对于此类组织,通过创建特定架构的对象级备份,您可以按航线租户或任何其他重要数据分段进行还原。
若要创建一个或多个对象级备份,请创建一个配置文件,该文件用于指定备份位置、对象级备份名称以及要包括的对象的列表(一个或多个架构和表)。您可以将 includeObjects
和 excludeObjects
参数与通配符一起使用,以指定所需对象。有关指定要包含对象的详细信息,请参阅包括和排除对象。
有关完整备份或对象级别备份的配置文件的详细信息,请参阅示例 vbr 配置文件和配置文件参考。
尽管并非必须,但 Vertica 建议您首先创建一个完整备份,然后再创建任何对象级别备份。
注意
Apache Kafka 使用内部配置设置来维护数据的完整性。备份 Kafka 数据时,Vertica 建议您执行
完整数据库备份,而不是对象级别备份。
执行备份
在您可以创建备份之前,必须先使用 vbr -init 任务准备备份目录。您还必须创建一个配置文件来指定要备份的对象。
使用数据库群集中某个节点的数据库管理员帐户,从终端运行 vbr
。您无法以 root 身份运行 vbr
。
您可以创建对象级别备份,如下例所示。
$ vbr --task backup --config-file objectbak.ini
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
Committing changes on all backup sites...
backup done!
命名约定
为每个对象级备份配置文件提供一个独特的描述性名称。例如,在机场航站楼,基于架构的备份配置文件使用的命名约定为:带有航线前缀,后跟进一步的描述。例如:
AIR1_daily_arrivals_backup
AIR2_hourly_arrivals_backup
AIR2_hourly_departures_backup
AIR3_daily_departures_backup
当存在数据库和对象级别备份时,您就可以对所选的备份进行恢复。
当心
如果备份已存在,请不要在对象级别配置文件中更改对象名称。此操作会覆盖原始配置文件,且您无法从先前的备份中还原它。因此,请创建一个不同的配置文件。
了解对象级别备份的内容
对象级别备份仅包含还原架构或表所需的元素,其中包括选定对象、依赖对象和主体对象。对象级别备份包括以下内容:
例如,AIR2 包含的某些元素是其父架构、表、命名序列、主键和外键约束等。要创建此类备份,vbr
将保存与该表直接关联的对象。它还保存任何依赖项(如外键 (FK) 表),并创建要从中还原备份的对象映射。
注意
由于本地临时表中的数据仅存在于会话中,因此当您创建对象级别备份时会排除本地临时表。对于全局临时表,vbr
会存储表的定义。
在对象级别备份之后进行更改
请注意对象级别备份后所做的更改如何影响后续备份。假设您创建一个对象级别备份,然后从数据库中删除架构和表。在这种情况下,您删除的对象也会从后续备份中删除。如果您未保存对象备份的存档,则此类对象可能会永久丢失。
如果在创建表备份之后更改表名,还原备份之后,对表名的更改将失效。假设您在创建一个备份后删除了一位用户,而该用户拥有该备份中的任何选定对象或依赖对象。在这种情况下,还原备份会重新创建对象并将所有权分配给执行还原操作的用户。如果某个已还原对象的所有者仍然存在,则该用户会保留这个已还原对象的所有权。
要从备份中还原已删除的表:
-
将新创建的表从 t1 重命名为 t2。
-
还原包含 t1 的备份。
-
还原 t1。表 t1 和 t2 现在同时存在。
有关 Vertica 如何处理对象覆盖的信息,请参考 [misc] 中的 objectRestoreMode
参数。
完成对象备份后,K-safety 可能会提高。如果同时出现以下两种情况,则备份还原失败:
-
K-safety 提高。
-
备份中的任何表都没有足够的投影。
更改主体对象和依赖对象
如果您先创建一个备份,然后删除一个主体对象,则还原备份会还原该主体对象。如果已还原对象的所有者也被删除,则 Vertica 会将已还原对象分配给当前 dbadmin。
您可以在 vbr
配置文件中指定 Vertica 如何处理对象覆盖。有关详细信息,请参考 [misc] 中的 objectRestoreMode 参数。
标识和自动增量序列是依赖对象,因为它们必须与其表同时存在。对象级别备份包括此类对象以及它们所依赖的表。
命名序列不是依赖对象,因为它们自主存在。在您删除使用某个命名序列的表之后,该命名序列仍然存在。在这种情况下,命名序列是一个主体对象。因此,您必须备份命名序列和表。如果在您还原表时命名序列尚不存在,则您可以重新生成序列。如果该序列存在,则 vbr
会使用它,而不会进行修改。如果您还原完整数据库,然后将表备份还原到较新的时期,则序列值可能会重复。
考虑约束引用
当数据库对象通过约束进行关联时,您必须将它们一起备份。例如,如果某架构所含表的约束仅引用该架构中的表,则可以对此架构进行备份。但是,如果某架构包含的表具有另一个架构中某个表的 FK/PK 约束,则无法对此架构进行备份。要备份第二个表,您必须将另一个架构包括在选定对象的列表中。
对象级别备份的配置文件
vbr
会自动将具有不同备份名称但备份位置相同的配置进行关联。
始终创建一个群集范围内的配置文件以及一个或多个指向同一备份位置的对象级配置文件。由于各个备份之间的存储是共享的,因此相同数据不会存在多个副本。对于对象级别备份,使用相同的备份位置会使 vbr
遇到较少的 OID 冲突预防技巧。避免 OID 冲突预防可以减少还原备份时出现的问题。
使用具有相同备份位置的群集和对象配置文件时,vbr
会包括附加配置来确保在完成完整群集还原后可以使用对象级别备份。还原完整群集的一种方法是使用完整数据库备份来启动群集。群集再次处于运行状态后,您即可还原架构和表的最近对象级别备份。
尝试使用对象级别配置文件还原完整数据库失败,导致以下错误:
VMart=> /tmp/vbr --config-file=Table2.ini -t restore
Preparing...
Invalid metadata file. Cannot restore.
restore failed!
有关详细信息,请参阅从对象级别备份中还原所有对象。
备份时期
每个备份都包括可以将其内容还原到的时期。当 vbr
还原数据时,Vertica 会更新到当前时期。
vbr
会在错误出现和备份失败之前尝试创建对象级别备份五次。
6.4 - 创建硬链接本地备份
您可以使用 hardLinkLocal
选项创建具有本地数据库主机上的硬文件链接的完整备份或对象级别备份。
创建硬链接本地备份可以为远程主机备份提供以下优势:
-
速度更快:硬链接本地备份要比远程主机备份的速度快得多。备份时,如果备份目录与数据库目录位于同一文件系统上,则 vbr
不会复制文件。
-
网络活动更少:硬链接本地备份可最大限度减少网络负载,因为它不需要通过重新同步操作将文件复制到远程备份主机。
-
占用的磁盘空间更少:备份包括编录副本和硬文件链接。因此,本地备份使用的磁盘空间明显低于具有数据库数据文件副本的备份。但是,每次运行 vbr
时,硬链接本地备份都会保存编录的完整副本。因此,一段时间后磁盘空间将随着编录大小的增加而增加。
硬链接本地备份在实验设计和开发周期期间很有用。数据库设计和开发人员可以在设计和开发阶段定期创建架构和表的硬链接本地对象备份。如果新的开发工作失败,开发人员可以从备份还原一个或多个对象。
计划硬链接本地备份
如果您计划将硬链接本地备份用作标准站点过程,请对数据库和硬件配置进行相应的设计。考虑将每个节点的所有数据文件存储到一个文件系统中。此类配置具有自动为硬链接本地备份做好设置准备的优势。
指定备份目录位置
配置文件的 backupDir
参数会指定顶级备份目录的位置。硬链接本地备份要求备份目录要位于与数据库数据相同的 Linux 文件系统中。Linux 操作系统无法创建指向其他文件系统的硬文件链接。
请勿在数据库数据存储位置创建硬链接本地备份目录。例如,最佳做法是,数据库数据目录不应位于文件系统的顶级,如以下示例所示:
/home/dbadmin/data/VMart/v_vmart_node0001
相反,Vertica 建议在数据库级别之上为数据添加其他子目录,例如以下示例:
/home/dbadmin/data/dbdata/VMart/v_vmart_node0001
然后,您可以创建硬链接本地备份子目录,将其与您刚刚创建的数据目录配对,例如以下示例:
/home/dbadmin/data/backups
/home/dbadmin/data/dbdata
指定硬链接备份位置时,请确保在将 hardLinkLocal=True
参数添加到配置文件时避免以下常见错误:
创建备份
在创建 Enterprise 模式数据库的完整硬链接本地数据库备份之前,请验证以下内容:
Eon 模式不支持硬链接备份。
当您创建完整或对象级别硬链接本地备份时,备份包含以内容:
使用数据库群集中某个节点的数据库管理员帐户,从终端运行 vbr
脚本。您无法以 root 身份运行 vbr
。
硬链接备份使用与其他备份相同的 vbr
实参。将备份配置为硬链接备份的操作完全在配置文件中执行。以下示例显示语法:
$ vbr --task backup --config fullbak.ini
为外部介质存储创建硬链接本地备份
您可以将硬链接本地备份用作临时机制来备份到磁带或其他形式的存储介质。以下步骤介绍了如何通过简化的方法来保存和还原磁带存储中的硬链接本地备份:
-
复制现有配置文件或示例 vbr 配置文件中所述的示例之一,以此创建配置文件。
-
编辑配置文件(本例中为 localbak.ini
),使其在 [Transmission]
部分中包含 hardLinkLocal=True
参数。
-
使用配置文件运行 vbr
:
$ vbr --task backup --config-file localbak.ini
-
使用一个单独的进程(而非 vbr
)将硬链接本地备份目录复制到磁带或其他外部介质。
-
如果数据库损坏,将磁带中的备份文件传输到原始备份目录,并按照还原硬链接本地备份中的说明进行还原。
注意
Vertica 建议您在将包含硬链接备份的目录复制到其他介质之后保留该目录。如果您删除该目录并稍后将文件从外部介质复制回来,则复制的文件将不再是链接。相反,这些文件将与完整(非硬链接)备份占用同样多的磁盘空间。
还原硬链接本地备份需要一些额外的(手动)步骤。请勿使用其来代替定期完整备份(创建完整备份)。
硬链接本地备份和灾难恢复
硬链接本地备份的可靠性完全取决于存储这些备份的磁盘。如果本地磁盘损坏,硬链接本地备份也会损坏。在这种情况下,您就无法从硬链接本地备份中还原数据库,因为它也会损坏。
所有站点都应该在外部维护完整备份以便用于灾难恢复,因为硬链接本地备份并未实际复制任何数据库文件。
6.5 - 增量备份或重复备份
作为最佳做法,Vertica 建议您在数据库内容出现明显差异时经常备份。在发生了显著修改数据库的任何事件(如执行重新平衡)之后,始终执行备份。将具有明显差异的多个备份混合在一起,将会降低数据的 K-safety。例如,如果多个备份均属于同一存档,建议不要在重新平衡之前和之后进行备份。
每次使用同一配置文件备份数据库时,vbr
均会创建一个额外备份,并且可能会移除最旧的备份。备份操作将复制新的存储容器。这些容器可能包括:
-
上次执行数据库备份时存在的数据
-
自上次完整备份以来的新增数据和更改的数据
使用配置文件中的 restorePointLimit
参数,可增加存储的备份数。如果备份任务可能导致超出此限制,vbr
会在成功备份后删除最旧的备份。
当您运行备份任务时,vbr
会首先在指定位置创建新的备份,这可能会暂时超出限制。然后,它检查备份数是否超过 restorePointLimit
的值,在必要时删除最旧的备份,直到剩下的数量达到 restorePointLimit
为止。如果请求的备份失败或中断,vbr
不会删除任何备份。
还原数据库时,您可以选择从任何保留的备份(而不是最近的备份)进行还原。因此,如果您希望需要访问较旧的备份,请提高限制。
7 - 还原备份
您可以使用 vbr 还原任务从 vbr
创建的备份中还原完整的数据库或选定的对象。通常,您可以为这两个操作使用相同的配置文件。最小的还原命令为:
$ vbr --task restore --config-file config-file.ini
您必须使用数据库管理员的帐户(而不是 root)登录。
对于完整还原,数据库必须为 DOWN 状态。对于对象还原,数据库必须为 UP 状态。
通常,您将还原到备份的群集。但是,如果原始群集不再可用,也可还原到备用群集。
还原操作必须在与您从中还原的备份相同的架构上完成。您无法先备份 Enterprise 模式数据库,然后在 Eon 模式下还原它,反之亦然。
您可以对 Permanent 节点类型执行还原任务。您无法在 Ephemeral、Execute 或 Standby 节点上还原数据。若要还原或复制到这些节点,必须先将目标节点类型更改为 PERMANENT。有关详细信息,请参考 设置节点类型。
Vertica 支持将对象复制和还原到目标数据库,但最多支持比当前数据库版本晚一个次要版本。例如,您可以将对象从 11.0.x 数据库复制或还原到 11.1.x 数据库。不同版本的还原或复制过程与相同版本的过程相同。
注意
此功能仅在还原和复制对象时适用。
如果还原或复制的对象需要数据库中不存在的更高版本的 UDx 库,Vertica 将显示以下错误:
ERROR 2858: Could not find function definition
通过在目标数据库中安装兼容库,您可以解决此问题。
还原 HDFS 存储位置
如果 Vertica 群集使用 HDFS 存储位置,则必须先进行一些额外配置,然后才能还原。请参阅备份和还原 HDFS 存储位置的要求。
HDFS 存储位置仅支持完整备份和还原。您无法在使用 HDFS 存储位置的群集上执行对象备份或还原。
7.1 - 从完整备份中还原数据库
您可以将完整的数据库备份还原到已备份的数据库,或者具有相同架构的备用群集。例如,若要设置测试群集来调查生产群集中的问题,则需要还原到备用群集。
要还原完整数据库备份,必须验证:
您只能使用完整数据库备份还原完整数据库。如果保存了多个备份存档,您可以从最新备份或特定存档进行还原。
从完整数据库备份中还原时,会将每个备份的 OID 注入到完整数据库备份的还原编录中。该编录还接收所有存档。此外,OID 生成器以及当前时期都会设置为当前时期。
此外,您可以将完整备份还原到与您备份的数据库不同的数据库。请参阅将数据库还原到备用群集。
重要
还原 Eon 模式数据库时,即使您还原到新数据库,公共存储也会保留在原始位置。
请勿重新启动原始数据库。使用相同的公共存储运行两个数据库可能会导致数据损坏。
还原最近备份
通常,当节点或群集为 DOWN 状态时,您希望将群集返回到其最近状态。此操作需要还原完整的数据库备份。您可以通过在配置文件中标识名称,从存档还原任何完整数据库备份。
要从最近的备份中还原,请将 vbr 还原任务与配置文件一起使用。如果您的 密码配置文件不包含数据库超级用户密码,vbr
会提示您输入该密码。
以下示例显示如何使用 db.ini
配置文件进行还原:
> vbr --task restore --config-file db.ini
Copying...
1871652633 out of 1871652633, 100%
All child processes terminated successfully.
restore done!
还原存档
如果保存了多个备份,您可以指定要还原的特定存档。要列出已有存档,以便从中选择一个存档进行还原,请使用 vbr \--listbackup
任务并为其指定特定配置文件。请参阅查看备份。
要从存档中还原,请将 --archive
参数添加到命令行。该值是目录名称的 * date_timestamp * 后缀,用于识别要还原的存档。例如:
$ vbr --task restore --config-file fullbak.ini --archive=20121111_205841
--archive
参数识别了在 11-11-2012 (_archive20121111
) 这一天的 205841
(20:58:41) 创建的存档。您只需指定 _archive
后缀,因为配置文件确定了子目录的备份名称,并且 OID 标识符表明了备份是存档。
在 Eon 模式下还原失败
当还原操作失败时,vbr
可能会在公共存储位置留下额外的文件。如果您使用云中的公共存储,这些额外的文件将耗费您的成本。要移除它们,请重新启动数据库并使用实参 true 调用 CLEAN_COMMUNAL_STORAGE。
7.2 - 将数据库还原到备用群集
Vertica 支持将完整备份还原到备用群集。
要求
此过程类似于从完整备份中还原数据库过程,但具有下列额外的要求:
目标数据库必须:
-
处于 DOWN 状态。
-
与源数据库同名。
-
具有与源群集相同数量的节点。
-
具有与源群集相同的节点名称。
-
使用与源数据库相同的编录目录位置。
-
使用与源数据库相同的端口号。
过程
-
将用于创建备份的 vbr 配置文件复制到目标群集上的任意节点。
-
如果使用存储密码,请将密码配置文件复制到与 vbr 配置文件相同的位置。
-
在目标节点上,发出 vbr 还原命令。
$ vbr -t restore -c full.ini
-
还原完成后,启动还原的数据库。
7.3 - 从对象级别备份中还原所有对象
要将对象级别备份中的所有对象还原到其最初提取时的数据库,请使用 vbr 还原任务以及创建备份所使用的配置文件,如以下示例所示:
$ vbr --task restore --config-file MySchema.ini
Copying...
1871652633 out of 1871652633, 100%
All child processes terminated successfully.
restore done!
数据库必须处于开启状态。
通过配置配置文件中的 objectRestoreMode
参数,您可以指定 Vertica 如何对重复的对象作出反应。
HDFS 存储位置不支持对象级别备份和还原。
将对象还原到已更改的群集
与从完整数据库备份进行还原不同,vbr
支持在向群集添加节点后还原对象级别备份。创建对象级别备份时不在群集中的任何节点都不参与还原。您可以在还原后重新平衡群集,从而在新节点之间分配数据。
删除节点、更改节点名称或更改 IP 地址后,不能还原对象级别备份。若尝试在执行此类更改后还原对象级别备份,将导致 vbr
失败并显示以下消息:
Preparing...
Topology changed after backup; cannot restore.
restore failed!
还原后的投影时期
所有对象级别备份和还原事件都被视为 DDL 事件。如果某个表不参与对象级别备份(可能由于节点处于关闭状态),还原备份会对投影产生以下影响:
还原期间的编录锁
与其他数据库一样,Vertica 事务将遵循严格的锁定协议,以便保持数据完整性。
将对象级别备份还原到处于 UP 状态的群集时,vbr
会首先复制数据并管理存储容器。如有必要,vbr
会拆分容器。此进程不需要任何数据库锁。
完成数据复制任务后,vbr
首先需要一个表对象锁 (O-lock),然后需要一个全局编录锁 (GCLX)。
在某些情况下,当该进程尝试获取表中的 O 锁时,其他数据库操作(例如 DML 语句)会保持正在进行。在这种情况下,vbr
进程会被阻止,直到 DML 语句完成并释放锁为止。依次获得 O-lock 和 GCLX 锁之后,vbr
会阻止其他在同一个表上需要锁的操作。
当 vbr
持有其锁时,将阻止同时修改表。为了允许完成对象级别的还原,将取消数据库系统操作(例如将数据从内存传输到磁盘的 Tuple Mover (TM))。
编录还原事件
每个对象级别备份都包含一个数据库编录部分,称为片段。片段包含选定对象、其依赖对象和主体对象。编录片段在结构上类似于数据库编录,但包含一个表示对象信息的子集。可以从编录片段中读取所还原的对象,并使用此类对象来更新全局和局部编录。
已还原备份中的每个对象将在编录中进行更新。如果对象不再存在,vbr
会将该对象从编录中删除。不在备份中的任何依赖对象也将从编录中删除。
vbr
实用程序将使用现有的依赖项验证方法来检查编录,并将还原事件添加到每个已还原表的编录中。该事件还包括发生该事件的时期。如果某个节点缺少还原表事件,则该节点将还原锚定在给定表上的投影。
Vertica 支持将对象复制和还原到目标数据库,但最多支持比当前数据库版本晚一个次要版本。例如,您可以将对象从 11.0.x 数据库复制或还原到 11.1.x 数据库。不同版本的还原或复制过程与相同版本的过程相同。
注意
此功能仅在还原和复制对象时适用。
如果还原或复制的对象需要数据库中不存在的更高版本的 UDx 库,Vertica 将显示以下错误:
ERROR 2858: Could not find function definition
通过在目标数据库中安装兼容库,您可以解决此问题。
执行还原时,如果编录大小大于节点中可用总内存的 5%,则对象级还原可能会失败。在这种情况下,Vertica 建议从备份中还原单个对象。有关详细信息,请参考 还原单个对象。
另请参阅
7.4 - 还原单个对象
您可以使用 vbr
从完整或对象级别备份中还原单个表和架构:使用 ‑‑restore-objects
限定 restore
任务,并将要还原的对象指定为以逗号分隔的列表:
$ vbr --task=restore --config-file=filename --restore-objects='objectname[,...]' [--archive=archive-id]
具有以下要求和限制:
如果架构具有磁盘配额且还原表将超过配额,则该操作将会失败。
默认情况下,‑‑restore-objects
将从最近的备份中还原指定的对象。您可以使用
‑‑archive
参数从较早的备份中还原。
以下示例使用 db.ini
配置文件,该文件包含数据库管理员的密码:
> vbr --task restore --config-file=db.ini --restore-objects=salesschema,public.sales_table,public.customer_info
Preparing...
Found Database port: 5433
Copying...
[==================================================] 100%
All child processes terminated successfully.
All extract object child processes terminated successfully.
Copying...
[==================================================] 100%
All child processes terminated successfully.
restore done!
对象相关性
当您还原某个对象时,Vertica 不会自动还原任何依赖对象。例如,如果您还原一个包含视图的架构,则 Vertica 不会自动还原这些视图的表。有一个例外:如果数据库表通过外键链接,则必须将其一起还原,但配置文件 vbr
中的
drop_foreign_constraints
设置为 true 时则除外。
重复对象
通过配置
objectRestoreMode
,您可以指定还原操作如何处理重复对象。默认情况下,它已设置为 createOrReplace
。因此,如果存在重复对象,还原操作将使用存档版本覆盖它。
Eon 模式的注意事项
将对象还原到 Eon 模式数据库时,可能会将不需要的文件留在云存储中。这些文件并不会影响数据库的性能或数据的完整性。但是,它们可能会产生额外的云存储费用。要移除这些文件,请重新启动数据库并使用实参 true 调用 CLEAN_COMMUNAL_STORAGE。
另请参阅
7.5 - 将对象还原到备用群集
您可以使用还原任务将对象从一个数据库复制到另一个数据库。例如,您可以将表从开发环境“提升”到生产环境。还原到备用群集时,还原单个对象 中所述的所有限制均适用。
要还原到备用数据库,您必须更改用于创建备份的配置文件副本。更改位于 [Mapping] 和 [NodeMapping] 部分。从本质上来说,您为还原操作创建了一个配置文件。vbr
看起来就像目标数据库的备份,但它实际上描述了源数据库的备份。有关示例配置文件,请参阅将对象从备份还原到备用群集。
以下示例使用两个数据库,名为源数据库和目标数据库。源数据库包含一个名为 sales 的表。以下 source_snapshot.ini 配置文件用于备份源数据库:
[Misc]
snapshotName = source_snapshot
restorePointLimit = 2
objectRestoreMode = createOrReplace
[Database]
dbName = source
dbUser = dbadmin
dbPromptForPassword = True
[Transmission]
[Mapping]
v_source_node0001 = 192.168.50.168:/home/dbadmin/backups/
target_snapshot.ini 文件开始为 source_snapshot.ini 的副本。由于 [Mapping] 部分描述了 vbr
运行所在的数据库,因此我们必须更改节点名称以指向目标节点。此外,我们还必须添加 [NodeMapping] 部分并更改数据库名称:
[Misc]
snapshotName = source_snapshot
restorePointLimit = 2
objectRestoreMode = createOrReplace
[Database]
dbName = target
dbUser = dbadmin
dbPromptForPassword = True
[Transmission]
[Mapping]
v_target_node0001 = 192.168.50.151:/home/dbadmin/backups/
[NodeMapping]
v_source_node0001 = v_target_node0001
就 vbr
而言,我们正在从目标数据库的备份中还原对象。而事实上,我们是从源数据库中还原的。
以下命令将 sales 表从源数据库备份还原到目标数据库:
$ vbr --task restore --config-file target_snapshot.ini --restore-objects sales
Starting object restore of database target.
Participating nodes: v_target_node0001.
Objects to restore: sales.
Enter vertica password:
Restoring from restore point: source_snapshot_20160204_191920
Loading snapshot catalog from backup.
Extracting objects from catalog.
Syncing data from backup to cluster nodes.
[==================================================] 100%
Finalizing restore.
Restore complete!
7.6 - 还原硬链接本地备份
使用还原任务从硬链接本地备份中还原时,其方式与从完整备份中还原的方式相同。如果您使用硬链接本地备份来备份到外部介质,则还需额外执行一些步骤。
与远程存储之间传输备份
当存在完整的硬链接本地备份时,您可以将备份传输到其他存储介质,例如磁带或本地安装的 NFS 目录。将硬链接本地备份传输到其他存储介质可能会复制与硬文件链接关联的数据文件。
将备份文件返回到硬链接本地备份主机时,可以使用其他目录。但在还原备份之前,还必须更改配置文件中的 backupDir
参数值。
完成以下步骤,可从外部介质还原硬链接本地备份:
-
如果原始备份目录不再存在,在一个或多个本地备份主机节点上,重新创建该目录。
用于还原硬链接备份文件的目录结构必须与创建备份时存在的目录结构完全相同。例如,如果在以下备份目录中创建硬链接本地备份,您可以重新创建该目录结构:
/home/dbadmin/backups/localbak
-
将备份文件复制到原始备份目录,如配置文件中为每个节点所指定的一样。有关详细信息,请参考 [Mapping](/zh-cn/admin/backup-restore/config-file-reference/mapping/)。
-
使用以下三个选项之一还原备份:
-
要还原备份的最新版本,请将备份文件移动到以下目录:
/home/dbadmin/backups/localbak/node_name/snapshotname
-
若要还原其他备份版本,请将备份文件移动到此目录:
/home/dbadmin/backups/localbak/node_name/snapshotname_archivedate_timestamp
-
备份文件返回到原始备份目录后,请使用原始配置文件调用 vbr
。验证配置文件是否指定 hardLinkLocal = true
。然后,按如下方式还原备份:
$ vbr --task restore --config-file localbak.ini
7.7 - 已还原对象的所有权
对于完整还原,对象拥有备份数据库中的所有者。
执行还原时,Vertica 将数据插入现有数据库对象中。还原默认不会影响被还原对象的所有权或权限。但是,如果还原的对象尚不存在,Vertica 将重新创建该对象。这种情况下,被还原对象由执行还原的用户所有。Vertica 不会还原与被还原对象相关的授予、角色或客户端身份验证。
如果还原对象的存储策略无效,vbr
将应用默认存储策略。由于 HDFS 存储位置、表不兼容以及还原时最小-最大值不可用等原因,还原的存储策略可能会变得无效。
有时,Vertica 会遇到不需要还原的编录对象。当这种情况发生时,Vertica 会为该对象生成一条警告消息,然后继续还原。
示例
假设您具有归用户 Alice 所有的完全备份,包括 Schema1。Schema1 包含 Table1(归 Bob 所有),他最终会将所有权传递给 Chris。用户 dbadmin 会执行还原。以下场景可能会影响这些对象的所有权。
场景 1:
Schema1.Table1 已在自从创建备份后的某个点移除。dbadmin 执行还原时,Vertica 将重新创建 Schema1.Table1。作为执行还原的用户,dbadmin 将取得 Schema1.Table1 的所有权。由于 Schema1 仍存在,Alice 将保留该架构的所有权。
场景 2:
Schema1 及包含的所有对象已移除。当 dbadmin 执行还原时,Vertica 会重新创建架构和所有包含的对象。dbadmin 获得 Schema1 和 Schema1.Table1 的所有权。
场景 3:
Schema1 和 Schema1.Table1 都存在于当前数据库中。当 dbadmin 回退到较早的备份时,对象的所有权仍保持不变。Alice 拥有 Schema1,Bob 拥有 Schema1.Table1。
场景 4:
Schema1.Table1 存在,且 dbadmin 要回退到较早的版本。在执行备份之后,Schema1.Table1 的所有权已更改为 Chris。当 dbadmin 还原 Schema1.Table1 时,Alice 仍为 Schema1 的所有者,Chris 仍为 Schema1.Table1 的所有者。还原不会将 Schema1.Table1 的所有权从 Chris 还原为 Bob。
8 - 将数据库复制到其他群集
当心
保护备份位置并严格限制已有权访问数据库中所有数据的用户对备份的访问权限,这一点十分重要。破坏备份意味着破坏数据库。
可使用 vbr
将整个数据库复制到其他 Vertica 群集。此功能可帮助您执行诸如在开发和生产环境之间复制数据库之类的任务。从本质上来说,将数据库复制到另一个群集,是同时在进行备份和还原操作。数据将从源数据库群集中备份,然后通过单个操作还原到目标群集。
注意
copycluster 任务与 HDFS 存储位置不兼容。copycluster 使用 Linux rsync
工具将文件从源群集复制到目标群集。HDFS 存储备份和还原以使用快照为基础。HDFS 存储位置中的数据备份至 HDFS 本身。Vertica 不能将数据以与传输至 Linux 群集相同的方式传输至远程 HDFS 群集。
Vertica 编录、数据和临时目录的目录位置在源和目标数据库上必须相同。可使用以下 vsql 查询查看源数据库目录位置。此示例出于演示目的设置了扩展显示,并列出最受关注的各列:node_name
、storage_path
和 storage_usage
。
=> \x
Expanded display is on.
=> select node_name,storage_path, storage_usage from disk_storage;
-[ RECORD 1 ]-+-----------------------------------------------------
node_name | v_vmart_node0001
storage_path | /home/dbadmin/VMart/v_vmart_node0001_catalog/Catalog
storage_usage | CATALOG
-[ RECORD 2 ]-+-----------------------------------------------------
node_name | v_vmart_node0001
storage_path | /home/dbadmin/VMart/v_vmart_node0001_data
storage_usage | DATA,TEMP
-[ RECORD 3 ]-+-----------------------------------------------------
node_name | v_vmart_node0001
storage_path | home/dbadmin/SSD/schemas
storage_usage | DATA
-[ RECORD 4 ]-+-----------------------------------------------------
node_name | v_vmart_node0001
storage_path | /home/dbadmin/SSD/tables
storage_usage | DATA
-[ RECORD 5 ]-+-----------------------------------------------------
node_name | v_vmart_node0001
storage_path | /home/dbadmin/SSD/schemas
storage_usage | DATA
-[ RECORD 6 ]-+-----------------------------------------------------
node_name | v_vmart_node0002
storage_path | /home/dbadmin/VMart/v_vmart_node0002_catalog/Catalog
storage_usage | CATALOG
-[ RECORD 7 ]-+-----------------------------------------------------
node_name | v_vmart_node0002
storage_path | /home/dbadmin/VMart/v_vmart_node0002_data
storage_usage | DATA,TEMP
-[ RECORD 8 ]-+-----------------------------------------------------
node_name | v_vmart_node0002
storage_path | /home/dbadmin/SSD/tables
storage_usage | DATA
.
.
.
注意编录、数据和临时存储的目录路径。这些路径在源数据库中的所有节点上均相同,在目标数据库中也必须相同。
注意
在将数据库复制到其他群集时,如果目标数据不同,vbr
将覆盖所有现有数据。若要保留目标群集上的现有数据,请在调用 copycluster``vbr
任务之前为目标创建完整数据库备份。
识别目标群集的节点名称
在配置目标群集之前,您需要知道 admintools
为源数据库中所有节点提供的确切名称。
要查看节点名称,请运行如下查询:
=> select node_name from nodes;
node_name
------------------
v_vmart_node0001
v_vmart_node0002
v_vmart_node0003
(3 rows)
您还可以通过从命令行运行 admintools
来查找节点名称。例如,对于 VMart 数据库,您可以输入如下命令:
$ /opt/vertica/bin/admintools -t node_map -d VMART
DATABASE | NODENAME | HOSTNAME
-----------------------------------------------
VMART | v_vmart_node0001 | 192.168.223.xx
VMART | v_vmart_node0002 | 192.168.223.yy
VMART | v_vmart_node0003 | 192.168.223.zz
配置目标群集
配置目标以允许源数据库与之连接,然后还原该数据库。目标群集必须满足以下条件:
-
运行具有与源群集相同版本的热修复程序。例如,如果源群集和目标群集都运行版本 9.1.1-1,您可以还原数据库。
-
具有与源群集相同数量的节点。
-
具有与源数据库同名的数据库。目标数据库可以完全为空。
-
具有与源群集相同的节点名称。NODES 系统表中列出的节点名称在两个群集上必须匹配。
-
可从源群集访问。
-
具有相同的数据库管理员帐户,并且所有节点必须允许源群集的数据库管理员通过不需要密码的 SSH 登录。
注意
在群集内执行免密码访问与在群集之间执行免密码访问不同。源群集和目标群集上的管理员帐户的 SSH ID 可能不一样。您必须配置目标群集中的每个主机,才能接受源群集的 SSH 身份验证。
-
具有足够的磁盘空间来完成 vbr \--task copycluster
命令。
为 CopyCluster 创建配置文件
要将数据库复制到其他群集,您必须专门创建一个配置文件。在该配置文件中,将目标群集中节点的主机名称指定为备份主机。您必须定义 backupHost
;但是,vbr
会忽略 backupDir
选项,并始终将数据存储在目标数据库的编录和数据目录中。
您无法使用 copycluster
命令执行对象级别备份。相反,您必须执行完整数据库备份。
以下示例显示了如何设置 vbr
,从而将 3 节点群集 v_vmart 上的数据库复制到另一个群集 test-host。
[Misc]
snapshotName = CopyVmart
tempDir = /tmp/vbr
[Database]
dbName = vmart
dbUser = dbadmin
dbPassword = password
dbPromptForPassword = False
[Transmission]
encrypt = False
port_rsync = 50000
[Mapping]
; backupDir is not used for cluster copy
v_vmart_node0001= test-host01
v_vmart_node0002= test-host02
v_vmart_node0003= test-host03
复制数据库
您必须在调用 copycluster
之前停止目标群集。
要复制群集,请使用数据库管理员帐户从源数据库中的节点运行 vbr
:
$ vbr -t copycluster -c copycluster.ini
Starting copy of database VMART.
Participating nodes: vmart_node0001, vmart_node0002, vmart_node0003, vmart_node0004.
Enter vertica password:
Snapshotting database.
Snapshot complete.
Determining what data to copy.
[==================================================] 100%
Approximate bytes to copy: 987394852 of 987394852 total.
Syncing data to destination cluster.
[==================================================] 100%
Reinitializing destination catalog.
Copycluster complete!
如果 copycluster 任务被中断,目标群集则会保留已传输的任何数据文件。如果您再次尝试该操作。Vertica 不需要重新发送这些文件。
9 - 将对象复制到备用群集
您可以在组织中将表和架构从一个数据库复制到备用数据库。例如,要在测试、临时和生产群集之间复制表和架构,您可能需要使用对象复制。此外,在发生重要更改(例如加载数据)之后,您可立即复制某些对象,而无需等待下一个计划作业。
您使用 vbr replicate
任务来执行对象复制。
该复制操作不会复制所有对象类型。复制期间未复制的编录对象包括:
-
用户和角色
-
授权
-
访问策略(列和行)
-
客户端身份验证和配置文件
要复制整个数据库,请使用
copycluster
任务,然后使用 replicate
任务来更新表和架构,而不是执行另一次完整复制。
备用数据库复制的优势
复制对象通常比导出和导入对象的速度更快。第一次复制对象时会复制整个对象。后续复制操作仅复制自上次复制之后发生更改的数据。Vertica 会复制截至目标数据库当前时期的数据。与 cron 作业一起使用,您可以复制关键对象以创建备份数据库。
在目标数据库出现故障或您计划复制整个数据库的情况下,Vertica 建议您尝试将数据库复制到其他群集。
DOWN 节点如何影响复制
如果源数据库或目标数据库中的某些节点已关闭,只要这些节点本身仍然可用,您就可以复制对象。此处的 DOWN 节点是指节点上正在关闭、但网络上仍可见的 Vertica 进程。
DOWN 节点对复制任务的影响取决于这些节点处于源数据库还是目标数据库中。
复制到备用数据库的步骤
要将对象复制到备用数据库,请从源数据库开始操作,并完成以下步骤:
-
验证复制要求
-
编辑 vbr 配置文件
-
复制对象
-
监控对象复制
验证复制要求
以下要求适用于源数据库和目标数据库:
-
它们具有与 dbadmin 帐户关联的相同 Linux 用户。
-
两者中的所有节点都必须为 UP 状态。
-
在 Enterprise 模式中,它们具有相同数量的节点。
-
在 Eon 模式中,两个数据库的主子群集具有相同的节点子订阅数。目标数据库与源数据库的主子群集具有相同数量(或更多)的节点。
-
源群集数据库管理员无需密码,即可通过 SSH 登录所有节点。
注意
在群集内执行免密码访问与在群集之间执行免密码访问不同。源群集和目标群集上的管理员帐户的 SSH ID 可能不一样。您必须配置目标群集中的每个主机,才能接受源群集的 SSH 身份验证。
编辑 vbr 配置文件以进行复制
将以下参数添加到用于复制对象的配置文件中:
-
在 [misc] 部分中,添加以下参数:
; Identify the objects that you want to replicate
objects = schema.objectName
-
在 [misc] 部分中,设置唯一的快照名称。复制任务可以与其他某些 vbr 任务同时运行,但前提是快照名称必须不同。
snapshotName = name
-
在 [database] 部分中,设置以下参数:
; parameters used to replicate objects between databases
dest_dbName =
dest_dbUser =
dest_dbPromptForPassword =
如果使用的是存储密码,请确保在密码配置文件中配置 dest_dbPassword
参数。
-
在 [mapping] 部分中,将源节点映射到目标主机:
[Mapping]
v_source_node0001 = targethost01
v_source_node0002 = targethost02
v_source_node0003 = targethost03
复制对象
要复制对象,请使用 vbr replicate
任务:
vbr -t replicate -c configfile.ini
replicate
任务可以在任一方向上与备份和对象复制任务同时运行。复制不能与要求关闭数据库的任务(完整还原和 copycluster)同时运行。每个并发任务必须具有唯一的快照名称。因此,作为最佳实践,请为每个对象复制创建一个单独的配置文件。如果需要许多表,请考虑复制架构,而不是单个表。
Vertica 支持将对象复制和还原到目标数据库,但最多支持比当前数据库版本晚一个次要版本。例如,您可以将对象从 11.0.x 数据库复制或还原到 11.1.x 数据库。不同版本的还原或复制过程与相同版本的过程相同。
注意
此功能仅在还原和复制对象时适用。
如果还原或复制的对象需要数据库中不存在的更高版本的 UDx 库,Vertica 将显示以下错误:
ERROR 2858: Could not find function definition
通过在目标数据库中安装兼容库,您可以解决此问题。
监控对象复制
您可以使用以下方式监控对象复制:
10 - 包括和排除对象
您可以使用 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
不区分大小写。
11 - 管理备份
当心
保护备份位置并严格限制已有权访问数据库中所有数据的用户对备份的访问权限,这一点十分重要。破坏备份意味着破坏数据库。
vbr
提供了几个与管理备份相关的任务:列出备份、检查备份的完整性、选择性删除备份等。此外,vbr
还提供了一些参数,允许您限制其使用系统资源。
11.1 - 查看备份
您可以通过以下三种方式查看备份:
-
使用 vbr
,列出驻留在本地或远程备份主机上的备份(需要配置文件)。
-
使用 DATABASE_BACKUPS 系统表,查看有关备份的历史信息。因为 database_backups
系统表包含历史信息,因此当您删除备份时不会更新此系统表
-
打开 vbr 日志文件检查备份的状态。该日志文件存在于您从中运行 vbr 的节点上,且位于 vbr 配置参数 tempDir 指定的目录/tmp/vbr
。
使用 vbr 列出备份
若要列出备份主机上的备份,请将 vbr \--task listbackup
与特定配置文件组合使用。以下示例显示了如何使用完整备份配置文件 bak.ini
列出备份:
$ vbr --task listbackup --config-file /home/dbadmin/bak.ini
下表包含有关从 vbr
listbackup 任务返回的每个输出列的信息:
以下示例显示了一个从三节点群集到单个备份主机 bkhost 的完整备份列表。
backup backup_type epoch objects include_patterns exclude_patterns nodes (hosts) version file_system_type
bak_20160414_134452 full 749 v_vmart_node0001(bkhost), v_vmart_node0002(bkhost), v_vmart_node0003(bkhost) v10.0.0 [Linux]
bak_20160413_174544 full 659 v_vmart_node0001(bkhost), v_vmart_node0002(bkhost), v_vmart_node0003(bkhost) v10.0.0 [Linux]
注意
使用
[] 快捷方式 对本地主机进行备份时,如果您尝试在不含数据库的群集上查看备份,则 listbackup 任务将会失败。Vbr 需要一个数据库来提供映射的本地主机的位置。
查看某个位置中的所有备份
将 --list-all
参数与 listbackup
任务一起使用,查看指定配置文件中列出的主机和路径上存储的所有快照的列表。
$ vbr --task listbackup --list-all --config-file /home/dbadmin/Nightly.ini
以下示例显示了使用配置文件 Nightly.ini 的 --list-all
任务。该配置文件引用主机 doca01、doca02 和 doca03 以及路径 /vertica/backup
。输出显示这些位置不仅包含使用 Nightly 创建的备份,而且还包含使用名为 Weekly.ini 的配置文件创建的备份。
backup backup_type epoch objects include_patterns exclude_patterns nodes(hosts) version file_system_type
Weekly_20170508_183249 full 3449 vmart_1(doca01), vmart_2(doca01), vmart_3(doca01) v10.0.0 [Linux]
Weekly_20170508_182816 full 2901 vmart_1(doca01), vmart_2(doca02), vmart_3(doca03) v10.0.0 [Linux]
Weekly_20170508_182754 full 2649 vmart_1(doca01), vmart_2(doca02), vmart_3(doca03) v10.0.0 [Linux]
Nightly_20170508_183034 object 1794 sales_schema vmart_1(doca01), vmart_2(doca02), vmart_3(doca03) v10.0.0 [Linux]
Nightly_20170508_181808 object 1469 sales_schema vmart_1(doca01), vmart_2(doca02), vmart_3(doca03) v10.0.0 [Linux]
Nightly_20171117_193906 object 173 sales_schema vmart_1(doca01), vmart_2(doca02), vmart_3(doca03) v10.0.0 [Linux]
您还可以将 --json
和 --list-output-file
参数与 listbackup
任务一起使用,以 JSON 分隔格式将相同的内容输出到显示器或输出文件。有关详细信息,请参考 vbr 引用。
查询数据库备份 (database_backups)
可使用以下查询列出有关备份的历史信息。objects
列列出了在对象级别备份中包括了哪些对象。请不要在还原存档时使用 backup_timestamp
值。相反,应在还原存档时使用 vbr \--task listbackup
提供的值。
=> SELECT * FROM v_monitor.database_backups;
-[ RECORD 1 ]----+------------------------------
backup_timestamp | 2013-05-10 14:41:12.673381-04
node_name | v_vmart_node0003
snapshot_name | schemabak
backup_epoch | 174
node_count | 3
file_system_type | [Linux]
objects | public, store, online_sales
-[ RECORD 2 ]----+------------------------------
backup_timestamp | 2013-05-13 11:17:30.913176-04
node_name | v_vmart_node0003
snapshot_name | kantibak
backup_epoch | 175
node_count | 3
file_system_type | [Linux]
objects |
-[ RECORD 13 ]---+------------------------------
backup_timestamp | 2013-05-16 07:02:23.721657-04
node_name | v_vmart_node0003
snapshot_name | objectbak
backup_epoch | 180
node_count | 3
file_system_type | [Linux]
objects | test, test2
-[ RECORD 14 ]---+------------------------------
backup_timestamp | 2013-05-16 07:19:44.952884-04
node_name | v_vmart_node0003
snapshot_name | table1bak
backup_epoch | 180
node_count | 3
file_system_type | [Linux]
objects | test
-[ RECORD 15 ]---+------------------------------
backup_timestamp | 2013-05-16 07:20:18.585076-04
node_name | v_vmart_node0003
snapshot_name | table2bak
backup_epoch | 180
node_count | 3
file_system_type | [Linux]
objects | test2
11.2 - 检查备份完整性
Vertica 可以确认备份文件以及识别这些文件的清单的完整性。备份完整性检查默认将结果输出到命令行。
执行快速检查
quick-check
任务会从配置文件指定的备份位置收集所有备份元数据,并将该元数据与备份清单进行比较。快速检查不会验证对象本身。此任务会输出备份位置的对象与备份清单中列出的对象之间的任何差异的例外列表。
使用以下格式执行快速检查任务:
$ vbr -t quick-check -c configfile.ini
例如:
$ vbr -t quick-check -c backupconfig.ini
执行完整检查
full-check
任务会对照文件系统元数据验证备份清单中列出的所有对象。全面检查包含与快速检查相同的步骤。您可以包括可选的 --report-file
参数,以便将结果输出到分隔的 JSON 文件中。此任务将输出标识以下不一致性的例外列表:
-
不完整的还原点
-
损坏的还原点
-
缺少的备份文件
-
未引用的文件
使用以下模板执行完整检查任务:
$ vbr -t full-check -c configfile.ini --report-file=path/filename
例如:
$ vbr -t full-check -c backupconfig.ini --report-file=logging/fullintegritycheck.json
11.3 - 修复备份
Vertica 可以重建备份清单,并移除不需要的备份对象。
执行快速修复
quick-repair
任务将基于备份位置中包含的清单来重新构建备份清单。
使用以下模板执行快速修复任务:
$ vbr -t quick-repair -c configfile.ini
执行垃圾回收
collect-garbage
任务将重新构建备份清单,并删除清单中没有的备份对象。您可以包括可选的 --report-file
参数,以便将结果输出到分隔的 JSON 文件中。
使用以下模板执行垃圾回收任务:
$ vbr -t collect-garbage -c configfile.ini --report-file=path/filename
11.4 - 移除备份
您可以使用 vbr
移除现有的备份和还原点。使用 remove
任务时,vbr
将更新受移除影响的清单,并维持其完整性。如果备份存档包含多个还原点,移除一个还原点不会影响其他还原点。移除最后一个还原点时,vbr
会完全移除备份。
注意
Vertica 不支持通过文件系统移除备份。
使用以下表单执行移除任务:
$ vbr -t remove -c configfile.ini --archive timestamp
可以使用存档参数移除多个还原点。要获取特定还原点的时间戳,请使用 listbackup 任务。
以下示例展示了如何从现有备份中移除还原点的过程:
$ vbr -t remove -c backup.ini --archive 20160414_134452
Removing restore points: 20160414_134452
Remove complete!
11.5 - 估计日志文件磁盘要求
vbr
配置参数之一是 tempDir。此参数指定 vbr
写入日志文件和其他某些临时文件(大小可忽略不计)的数据库主机位置。默认位置为每个数据库主机上的 /tmp/vbr
目录。可通过在配置文件中指定其他路径来更改此默认位置。
临时存储目录还包含用于描述进度、吞吐量和每个节点遇到的任何错误的本地日志文件。每次运行 vbr
时,脚本均会创建一个单独的日志文件,每个文件均以时间戳命名。使用默认设置时,日志文件通常在每个备份的每个节点占用大约 4 KB 的空间。
vbr
日志文件不会自动移除,因此您必须根据需要手动移除较旧的日志文件。
11.6 - 分配资源
默认情况下,vbr
允许单个 rsync 连接(用于 Linux 文件系统)、10 个并发线程(用于云存储连接)以及无限带宽(用于任何备份或还原操作)。您可以在配置文件中更改这些值。有关这些参数的详细信息,请参阅配置文件参考。
连接数
您可能需要增加并发连接数。如果有很多 Vertica 文件,更多连接可以显著提升性能,因为每个连接可以增加并发文件传输数。
有关详细信息,请参考 [transmission] 中的以下参数:
-
total_bwlimit_backup
-
total_bwlimit_restore
-
concurrency_backup
-
concurrency_restore
另请参考 [CloudStorage] 中的以下参数:
带宽限制
您可以通过 total_bwlimit_backup
和 total_bwlimit_restore
数据传输参数限制网络带宽使用。有关详细信息,请参考 [transmission]。
12 - 备份和还原故障排除
这些提示有助于您避免与使用 Vertica 进行备份和还原相关问题,并对产生的任何问题进行故障排除。
检查日志
vbr
日志与 Vertica 日志彼此分开。默认位置为 /tmp/vbr,但您可以通过设置 vbr 配置参数 tempDir 来更改此位置。 vbr
日志不包含在 Scrutinize 报告中。
如果在日志中找不到错误或意外结果的解释,请尝试提高日志记录级别。您可以使用 vbr
命令行上的 --debug
选项设置级别。指定一个从 0(默认值)到 3(最详细)的整数值。例如:
$ vbr -t backup -c full_backup.ini --debug 3
随着您增加日志记录级别,日志的文件大小也会增加。
检查备份节点的状态
如果备份主机上的磁盘空间不足,或者 vbr
无法访问所有备份主机,则备份将失败。检查每个备份主机上是否具有足够的空间,能否通过 ssh 访问每个主机。
有时,vbr
会将 rsync 进程留在数据库或备份节点上运行。这些进程可能会干扰新进程。如果您在控制台中收到 rsync 错误,请查找失控进程并将其终止。
对象复制失败
确认对象复制中已排除所有 DOWN 节点。
如果不排除 DOWN 节点,复制会失败并出现以下错误:
Error connecting to a destination database node on the host <hostname> : <error> ...
还原存档会产生错误
还原存档时,您可能会看到以下错误:
$ vbr --task restore --archive prd_db_20190131_183111 --config-file /home/dbadmin/backup.ini
IOError: [Errno 2] No such file or directory: '/tmp/vbr/vbr_20190131_183111_s0rpYR/prd_db.info'
问题在于:存档名称的格式不正确。按照还原存档中所述,仅指定识别待还原存档目录名称的日期/时间戳后缀。例如:
$ vbr --task restore --archive 20190131_183111 --config-file /home/dbadmin/backup.ini
使用 HDFS 存储位置时备份或还原失败
对含有 HDFS 存储位置的群集进行备份时,您可能会看到以下类似错误:
ERROR 5127: Unable to create snapshot No such file /usr/bin/hadoop:
check the HadoopHome configuration parameter
导致此错误的原因是,备份脚本不能备份 HDFS 存储位置。您必须配置 Vertica 和 Hadoop,使备份脚本能够备份这些位置。请参阅备份和还原 HDFS 存储位置的要求。
HDFS 存储位置不支持对象级别备份和还原。您必须使用完整备份和还原。
无法连接到端点 URL(Eon 模式)
执行跨端点操作时,如果无法为公共存储 (VBR_COMMUNAL_STORAGE_ENDPOINT_URL
) 指定端点 URL,则会看到连接错误。如果端点丢失,但您已为公共存储指定凭据,则 vbr
会尝试使用这些凭据来访问 AWS。此访问失败,因为这些凭据是用于您的内部部署存储,而不是 AWS。执行跨端点操作时,请验证是否已正确设置 Eon 模式下的跨端点备份 中所述的所有环境变量。
13 - vbr 引用
vbr
让您能够备份和还原完整数据库,或者一个或多个相关的架构和表对象。您还可以复制一个群集以及列出之前创建的备份。
大多数任务不能同时运行;但是,复制任务既可彼此同时运行,也可以与备份任务同时运行。并发任务不能使用相同的快照名称。
vbr
位于 Vertica 二进制目录中(在大多数安装中,为
/opt/vertica/bin/vbr
)。
语法
/opt/vertica/bin/vbr { command }
[ --archive timestamp ]
[ --config-file file ]
[ --debug level]
[ --nodes node[,...] ]
[ --showconfig ]
command 是以下命令之一:
‑‑help | -h
- 显示命令的简短用法指南。
‑‑showconfig
- 显示当前配置设置。
‑‑task | -t { backup | collect-garbage | copycluster | full-check | init | listbackup | quick-check | quick-repair | remove | replicate | restore }
- 执行指定任务:
-
backup
根据配置文件规范创建完整数据库或对象级别备份。
-
collect-garbage
重建备份清单并删除备份位置中的任何未引用对象。
-
copycluster
(Eon 模式数据库不支持)将数据库复制到另一个 Vertica 群集。
-
full-check
根据文件系统元数据验证备份清单中列出的所有对象,然后输出缺失的和未引用的对象。
-
init
创建新的备份目录,或者准备现有的备份目录以供使用,并创建必要的备份清单。您必须在第一次创建备份目录之前执行此任务。
-
listbackup
显示与您提供的配置文件关联的现有备份。查看此显示以获取要还原的备份的名称。
-
quick-check
确认所有备份对象均显示在备份清单中,然后输出备份位置中的对象与备份清单中列出的对象之间的差异。
-
quick-repair
根据存储位置和对象构建替换备份清单。
-
remove
移除指定备份或还原点。
-
replicate
将对象从一个群集复制到备用群集。此任务可以与备份和其他复制任务同时运行。
-
restore
还原完整数据库备份或对象级别数据库备份;需要创建备份的配置文件。
参数
-
‑‑archive timestamp
- 与
‑‑task restore
和 ‑‑task remove
命令一起使用,待还原或移除的备份的时间戳:
> vbr ‑‑task restore ‑‑config-file myconfig.ini ‑‑archive=20160115_182640
-c file ‑‑config-file file
- 用作从中启动
vbr
的位置的绝对或相对路径的配置文件。如果文件不存在,则会发生错误且 vbr
无法继续。
-
‑‑nodes node[,...]
- 在其上执行
vbr
任务的节点的逗号分隔列表。列出的节点与配置文件的映射部分中的名称匹配。
当心
请勿尝试从根据节点子集创建的部分数据库备份还原整个数据库群集。可能导致数据丢失。
-
‑‑debug level
vbr
提供的调试消息的级别(从 0 到 3)。级别 3 表示详细,而级别 0 为默认值,表示没有消息。
-
‑‑report-file path/filename
- (可选)输出已分隔的 JSON 文件,它描述了关联的完整备份的完整性检查或垃圾回收任务的结果。
-
‑‑restore-objects objects
- 从完整备份或对象级别备份还原的单个对象。如果您使用通配符,请改为使用“‑‑include-objects”和
‑‑exclude-objects
。
‑‑s3-force-init
- 与
‑‑task init
命令一起使用,当标识/锁定文件不匹配时,强制 init
任务在 S3 存储目标上成功运行。
‑‑showconfig
- 用于执行任务的配置值,在
vbr
开始之前以原始 JSON 格式显示。
‑‑list-all
- 与
‑‑task listbackup
命令一起使用,显示指定配置文件中列出的主机和路径上存储的所有备份的列表。
‑‑json
- 与
‑‑task listbackup
命令一起使用,显示指定配置文件中列出的主机和路径上存储的所有备份的 JSON 分隔列表。
-
‑‑list-output-file path/filename
- 与
‑‑task listbackup
命令一起使用,输出一个文件,其中包含指定配置文件中列出的主机和路径上存储的所有备份的 JSON 分隔列表。
‑‑dry-run
- 与
‑‑task
命令一起使用,用于备份、还原和复制任务,且对指定的命令进行测试运行,而不实际执行该任务。您可以使用此命令来评估特定 vbr 命令的影响,而不实际执行该命令。例如,您可以查看潜在备份的大小,或该备份中包含的对象。使用 dry-run
参数执行的任何任务均不会影响您的数据库。
-
‑‑include-objects include-list
- 指定以逗号分隔的数据库对象或 对象模式的列表,以便从完整备份或对象级别备份中还原。
不能将 ‑‑restore-objects
参数与此参数一起使用。
-
‑‑exclude-objects exclude-list
- 数据库对象或 对象模式 与“‑‑include-objects”一起使用时,可从完整备份或对象级别备份中还原,而与参数“--restore-objects”结合使用则无效。
您可以使用 ‑‑include-objects
指定一组对象,然后使用 ‑‑exclude-objects
从该集合中移除对象。使用逗号分隔多个对象和通配符模式。
不能将 ‑‑restore-objects
参数与此参数一起使用。
-
‑‑restore‑objects='restore‑list'
- 这是表和架构的逗号分隔列表,可从给定备份中还原,但与参数
‑‑include-objects
和 ‑‑exclude-objects
结合使用时则无效。
有关用法详细信息,请参阅还原单个对象。
中断 vbr
要取消备份,请使用 Ctrl+C 或向运行 vbr
的 Python 进程发送 SIGINT。 vbr
在复制完数据后停止备份进程。使用 Ctrl+C 取消 vbr
备份时,将立即关闭会话。
中断的备份进程生成的文件仍在目标备份位置目录中。下一个备份进程会从中断的进程停止的位置开始。
备份操作是原子的,因此中断备份操作不会影响上一个备份。Vertica 仅将上一个备份替换为备份数据库的最后一个步骤。
restore
或 copycluster
操作会覆盖数据库编录目录。中断其中任一进程会使数据库不可用,直至您重新启动该进程并允许其完成。
另请参阅
14 - 配置文件参考
vbr 配置文件将备份设置分为多个部分,列在对应部分的标题下。例如 [Database]
和 [CloudStorage]
,它们分别包含数据库访问设置和云存储位置设置。各部分可以按任何顺序显示且可重复。例如,多个 [Database]
部分。
重要
部分标题区分大小写。
14.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:
默认值: true
- cloud_storage_sse_kms_key_id
- 仅限 S3 存储。如果使用 Amazon Key Management Security,请使用此参数提供密钥 ID。如果启用加密但不包含此参数,则 vbr 将使用 SSE-S3 加密。
此值采用以下形式:
cloud_storage_sse_kms_key_id = key-id
14.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 用户名。此用户必须具有超级用户权限。
14.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
14.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
-
如果对象名称包含句点,请用双引号将名称括起来。
14.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
有关完整示例,请参阅将数据库还原到备用群集。
14.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
14.7 - 密码配置文件
为了提高安全性,请将密码存储在密码配置文件中,然后限制该文件的读取访问权限。将 vbr 配置文件中的 passwordFile 参数设置为此文件。
[passwords] 密码设置
所有密码配置参数均位于该文件的 [Passwords] 部分中。
- dbPassword
- 数据库管理员的 Vertica 密码,当 dbPromptForPassword 参数为 false 时使用此密码。如果 dbUseLocalConnection 设置为 true,则会忽略此参数。
- dest_dbPassword
- dest_dbuser Vertica 帐户的密码,仅限复制任务。
- serviceAccessPass
- rsync 用户帐户的密码。
示例
请参阅密码文件。