本指南介绍了如何使用 Google Cloud 的 Agent for SAP 的磁盘快照功能备份和恢复 SAP HANA 数据库。
如需了解此功能,请参阅使用磁盘快照为 SAP HANA 执行备份和恢复。
准备工作
- 验证 Google Cloud 的 Agent for SAP 的安装情况。如需查看相关说明,请参阅在 Compute Engine 实例上安装和配置 Google Cloud 的 Agent for SAP。
按如下所示验证您的 SAP HANA 系统是否已部署在 Compute Engine 实例上:
- 它未部署在横向扩容架构中。如需了解详情,请参阅将快照与横向扩容部署搭配使用。
- 它使用经 SAP 认证的操作系统 (OS)。如需了解详情,请参阅对 Google Cloud 上的 SAP HANA 的操作系统支持
/hana/data
卷独立托管在一个或多个基于 SSD 的 Persistent Disk 或 Hyperdisk 卷上。这些磁盘不得托管任何其他 SAP HANA 卷。如 SAP 说明 2039883 - 常见问题解答:SAP HANA 数据库和数据快照(存储快照)中所述,如需能够恢复 SAP HANA 数据库,存储快照不得包含该数据库的日志区域。
如果您使用多个磁盘来托管
/hana/data
卷,则只有在底层磁盘是 Hyperdisk 卷时,您才能使用代理的磁盘快照功能。/hana/data
卷映射到逻辑卷。这样,代理便可在基于磁盘快照的备份或恢复操作期间正确处理装载点。- 未使用基础架构即代码 (IaC) 工具(如 Terraform)部署底层基础架构。如需了解详情,请参阅将快照与基于 IaC 工具的部署搭配使用。
设置权限
如需使用 Google Cloud 的 Agent for SAP 的磁盘快照功能备份和恢复 SAP HANA 数据库,您必须设置以下权限:
如需创建磁盘快照,请授予以下 IAM 权限:
单磁盘
如果您的
/hana/data
卷托管在一个 Persistent Disk 或 Hyperdisk 卷上,请向 Compute Engine 实例授予以下权限:compute.disks.create compute.disks.createSnapshot compute.disks.get compute.disks.setLabels compute.disks.use compute.globalOperations.get compute.instances.attachDisk compute.instances.detachDisk compute.instances.get compute.snapshots.create compute.snapshots.get compute.snapshots.setLabels compute.snapshots.useReadOnly compute.zoneOperations.get
条状磁盘
如果您的
/hana/data
卷托管在多个 Persistent Disk 或 Hyperdisk 卷上,请向 Compute Engine 实例授予以下权限:compute.disks.addResourcePolicies compute.disks.create compute.disks.get compute.disks.list compute.disks.removeResourcePolicies compute.disks.use compute.disks.useReadOnly compute.globalOperations.get compute.instances.attachDisk compute.instances.detachDisk compute.instances.get compute.instantSnapshotGroups.create compute.instantSnapshotGroups.delete compute.instantSnapshotGroups.get compute.instantSnapshotGroups.list compute.instantSnapshots.list compute.instantSnapshots.useReadOnly compute.resourcePolicies.create compute.resourcePolicies.use compute.resourcePolicies.useReadOnly compute.snapshots.create compute.snapshots.get compute.snapshots.list compute.snapshots.setLabels compute.snapshots.useReadOnly compute.zoneOperations.get
如需创建基于磁盘快照的备份,代理使用的 SAP HANA 数据库用户必须具有
BACKUP OPERATOR
或BACKUP ADMIN
权限。如需了解详情,请参阅 SAP 文档备份和恢复所需的授权如需备份和恢复 SAP HANA 数据库,运行代理命令的操作系统用户必须是
root
用户,或者具有sudo
访问权限才能运行以下命令。您还可以通过在/etc/sudoers.d
目录中创建群组来提供sudo
访问权限,例如:%sapagent_snapshot_sudoers ALL=(ALL:ALL) NOPASSWD:/sbin/lvdisplay, /sbin/vgscan, /sbin/dmsetup, /sbin/lvscan, /usr/sbin/xfs_freeze, /usr/bin/google_cloud_sap_agent
创建磁盘一致性组
如果您的 /hana/data
卷托管在一个磁盘上,请跳过本部分。
如果您的 /hana/data
卷托管在多个磁盘上,则必须创建一个一致性组,并将托管 /hana/data
卷的磁盘添加到该一致性组。您必须在磁盘所在的区域中创建一致性组。
如需了解如何执行此操作,请参阅创建一致性组。
记下一致性组名称。代理会在创建基于快照的备份时使用该参数。
创建基于磁盘快照的备份
-
如需为 SAP HANA 数据库的
/hana/data
卷创建基于磁盘快照的备份,请运行 Google Cloud 的 Agent for SAP 的hanadiskbackup
命令:从 3.3 版开始,
-source-disk
和-source-disk-zone
参数是可与hanadiskbackup
命令搭配使用的可选参数。这是因为该代理可以自动检测托管您的/hana/data
目录的磁盘。不过,如果您指定了这些参数,它们会覆盖代理的自动检测。- 如果您想使用
hdbuserstore
密钥进行 SAP HANA 身份验证,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \ -project=DESTINATION_PROJECT_ID \ -sid=SID \ -hdbuserstore-key=HDB_USERSTORE_KEY
- 如果您想使用用户名和 Secret Manager Secret 进行 SAP HANA 身份验证,请运行以下命令:
sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \ -project=DESTINATION_PROJECT_ID \ -host=HANA_HOST_ADDRESS \ -port=HANA_PORT_NUMBER \ -sid=SID \ -hana-db-user=HANA_USERNAME \ -password-secret=HANA_USER_PWD_SECRET_NAME
- 如果您想使用用户名和密码进行 SAP HANA 身份验证,请运行以下命令:
sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \ -project=DESTINATION_PROJECT_ID \ -host=HANA_HOST_ADDRESS \ -port=HANA_PORT_NUMBER \ -sid=SID \ -hana-db-user=HANA_USERNAME \ -password=HANA_PASSWORD
替换以下内容:
DESTINATION_PROJECT_ID
:您要在其中创建磁盘快照的 Google Cloud 项目的 IDHANA_HOST_ADDRESS
:托管 SAP HANA 数据库的 Compute Engine 实例的主机名或 IP 地址在高可用性 (HA) 系统中,指定 SAP HANA 主节点中本地主机的主机名或 IP 地址。请勿使用集群中所用的虚拟 IP (VIP) 来标识主节点。在灾难恢复 (DR) 部署中,指定 SAP HANA 主实例中本地主机的主机名或 IP 地址。
HANA_PORT_NUMBER
:接受备份和恢复请求的 SAP HANA 端口SID
:SAP HANA 系统的 SAP 系统标识符 (SID)HANA_USERNAME
:要用于创建备份的 SAP HANA 数据库用户名HDB_USERSTORE_KEY
:如果您已创建hdbuserstore
密钥以对指定的 SAP HANA 用户进行身份验证,请指定该密钥HANA_USER_PWD_SECRET_NAME
:如果您使用 Secret Manager 存储 SAP HANA 数据库用户的密码,请指定相应的 Secret 名称HANA_PASSWORD
:如果您使用明文密码进行 SAP HANA 身份验证,请指定该密码
下表介绍了
hanadiskbackup
命令支持的参数:参数 说明 -port
指定接受备份和恢复请求的 SAP HANA 端口。 -sid
指定 SAP HANA 系统的 SAP 系统标识符 (SID)。 -hana-db-user
指定要用于创建备份的 SAP HANA 数据库用户名。
如果您指定
-hdbuserstore-key
,则可以跳过指定-hana-db-user
参数。-password
指定用于创建备份的 SAP HANA 数据库用户的密码。
如果您使用了
-password-secret
或-hdbuserstore-key
参数,请勿指定此参数。我们建议您使用以下参数之一,而不要使用-password
。对于 SAP HANA 身份验证,代理使用以下优先顺序:如果指定,
-hdbuserstore-key
参数优先于-password
参数,而-password
参数优先于-password-secret
参数。我们建议您在运行hanadiskbackup
命令时仅指定一个身份验证选项。-password-secret
可选。如果您使用 Secret Manager 存储 SAP HANA 数据库用户的密码,请指定相应的 Secret 名称。
在 Secret Manager 中,请确保 Secret 值(即密码)至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。
对于 SAP HANA 身份验证,代理使用以下优先顺序:如果指定,
-hdbuserstore-key
参数优先于-password
参数,-password
参数优先于-password-secret
参数。我们建议您在运行hanadiskbackup
命令时仅指定一个身份验证选项。-hdbuserstore-key
如需安全地连接到 SAP HANA 系统,请指定您为该系统创建的安全用户存储区 (
hdbuserstore
) 密钥。如需使用
hdbuserstore
密钥进行身份验证,请确保满足以下条件:- SAP 工具
hdbsql
和hdbuserstore
安装在托管代理的计算实例上。 hdbuserstore
密钥对应于一个特定的 SAP HANA 实例。您无法使用包含多个 SAP HANA 实例主机名的密钥。SIDadm
用户可以使用此密钥查询 SAP HANA 数据库。其中,SID
是指您为sid
参数指定的值。您可以通过以SIDadm
用户身份运行以下命令来验证这一点:hdbsql -U HDB_USERSTORE_KEY "SELECT * FROM DUMMY"
此配置参数从代理版本 3.3 开始受支持。
如果您指定
-hdbuserstore-key
,则可以跳过指定-host
、-port
和-hana-db-user
参数。对于 SAP HANA 身份验证,代理使用以下优先顺序:如果指定,
-hdbuserstore-key
参数优先于-password
参数,而-password
参数优先于-password-secret
参数。 我们建议您在运行hanadiskbackup
命令时仅指定一个身份验证选项。-host
可选。指定托管 SAP HANA 系统的 Compute Engine 实例的 IP 地址。默认值为 localhost
。-project
可选。指定运行 SAP HANA 实例的 Google Cloud 项目的 ID。 -abandon-prepared
可选。指定是否忽略任何现有的基于快照的备份。默认值为 false
。-snapshot-name
可选。指定您要创建的磁盘快照的名称。此参数仅适用于
/hana/data
卷托管在一个磁盘上的情况。默认情况下,快照按以下格式命名:
snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
。-snapshot-description
可选。指定磁盘快照的说明。此参数仅适用于 /hana/data
卷托管在一个磁盘上的情况。-snapshot-type
可选。指定您要为托管
/hana/data
卷的磁盘创建的快照类型。只有当您的/hana/data
卷托管在多个磁盘上时,此参数才适用。默认情况下,代理会创建标准快照。此参数支持的值:
STANDARD
、ARCHIVE
。如需了解这些快照类型,请参阅 归档和标准磁盘快照简介。此参数从代理版本 3.6 开始受支持。
-group-snapshot-name
可选。为托管
/hana/data
卷的磁盘的快照指定快照组名称。默认情况下,快照组名称采用以下格式设置:
CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMSS
。其中,CONSISTENCY_GROUP_NAME
是您在创建磁盘一致性组部分创建的磁盘一致性组的名称。此参数从代理版本 3.6 开始受支持。
-labels
可选。指定要与您创建的磁盘快照关联的一个或多个标签值对。例如: -labels="label1=value1,label2=value2"
。-source-disk
指定托管 /hana/data
卷的 Persistent Disk 或 Hyperdisk 卷的名称。从 3.3 版开始,
-source-disk
和-source-disk-zone
参数是可与hanadiskbackup
命令搭配使用的可选参数。这是因为该代理可以自动检测托管您的/hana/data
目录的磁盘。不过,如果您指定了这些参数,它们会覆盖代理的自动检测。-source-disk-zone
指定托管 /hana/data
卷的磁盘所在的可用区。从 3.3 版开始,
-source-disk
和-source-disk-zone
参数是可与hanadiskbackup
命令搭配使用的可选参数。这是因为该代理可以自动检测托管您的/hana/data
目录的磁盘。不过,如果您指定了这些参数,它们会覆盖代理的自动检测。-source-disk-key-file
可选。如果托管 /hana/data
卷的磁盘使用 RSA 封装的客户提供的加密密钥进行加密,请指定该密钥的 JSON 文件的绝对路径。此参数从代理版本 3.2 开始受支持。
-storage-location
可选。指定您要用于存储磁盘快照的 Cloud Storage 多区域或 Cloud Storage 区域。 -freeze-file-system
可选。指定代理是否要冻结 SAP HANA 数据库的文件系统。默认值为
false
。此参数从代理版本 3.2 开始受支持。
-send-metrics-to-monitoring
可选。指定快照创建的执行状态是否发送到 Cloud Monitoring。默认值为 TRUE
。-loglevel
可选。指定快照创建操作的日志记录级别。默认日志记录级别为 info
。可用的日志级别包括:debug
、info
、warn
和error
。-confirm-data-snapshot-after-create
可选。如果您希望在快照创建完成后立即确认快照创建情况,但不确认快照是否已上传到为
-storage-location
参数指定的 Cloud Storage 存储桶,请指定值TRUE
。默认值为
FALSE
,这会导致代理在完成CREATE
和UPLOAD
操作后确认创建快照。此参数从代理版本 3.4 开始受支持。
- 如果您想使用
验证磁盘快照
您可以使用以下选项验证磁盘快照是否已创建:
在 Google Cloud 控制台中,前往 Compute Engine 快照页面,然后使用磁盘名称过滤条目。如果您的
/hana/data
卷托管在一个磁盘上,您还可以使用快照名称进行过滤。如果您的/hana/data
卷托管在多个磁盘上,您还可以使用快照组的名称进行过滤。或者,您也可以在代理的以下日志文件中查看磁盘快照详细信息:
/var/log/google-cloud-sap-agent/hanadiskbackup.log
查看 SAP HANA 备份目录
除了创建基于磁盘快照的备份之外,hanadiskbackup
命令还会在 SAP HANA 备份目录中为其创建一个条目。以下是一个用于查看 SAP HANA 备份目录中基于快照的备份条目的 SQL 查询示例:
SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot'
输出类似于以下示例:
BACKUP_ID,STATE_NAME,COMMENT BACKUP_ID,"successful","SNAPSHOT_IDENTIFIER"
此输出包括以下值:
BACKUP_ID
:在 SAP HANA 备份目录中分配给基于磁盘快照的备份的备份 IDSNAPSHOT_IDENTIFIER
:- 对于一个磁盘上的
/hana/data
卷,此标识符的值取决于-snapshot-name
参数与hanadiskbackup
命令的使用方式。如果您未指定此参数,则系统会设置该参数的默认值,即snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
。 - 如果您的
/hana/
卷托管在多个磁盘上,则此标识符的值取决于-group-snapshot-name
参数与hanadiskbackup
命令的使用方式。如果未指定此参数,则系统会设置参数的默认值,即CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMMSS
。
- 对于一个磁盘上的
SOURCE_DISK_NAME
:此值取决于-source-disk
参数与hanadiskbackup
命令的搭配使用方式。CONSISTENCY_GROUP_NAME
:此值取决于-group-snapshot-name
参数与hanadiskbackup
命令的搭配使用方式YYYYMMDD-HHMMMSS
:快照的创建日期和时间。
使用基于磁盘快照的备份恢复数据库
如需使用 Google Cloud 的 Agent for SAP 的磁盘快照功能恢复 SAP HANA 数据库,请参阅适用于您的场景的说明:
为纵向扩容系统恢复数据库
如需为 Google Cloud 上部署的 SAP HANA 纵向扩容系统恢复数据库,请完成以下步骤:
通过运行代理的
hanadiskrestore
命令来恢复托管/hana/data
卷的磁盘:如果您的
/hana/data
卷托管在一个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
如果您的
/hana/data
卷托管在多个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:如果您的/hana/data
卷托管在一块磁盘上,请指定用于创建新磁盘的磁盘快照的名称SOURCE_SNAPSHOT_GROUP_NAME
:如果您的/hana/data
卷托管在多个磁盘上,请指定用于创建新磁盘的快照组名称NEW_DISK_TYPE
:您要创建的磁盘类型。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-type
的说明。NEW_DISK_NAME
:您要为新磁盘设置的名称。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-name
的说明。
如需了解可与
hanadiskrestore
命令搭配使用的参数,请参阅磁盘恢复支持的参数。使用所需选项恢复 SAP HANA 数据库:
恢复到快照时间
如需通过将 SAP HANA 数据库恢复到创建磁盘快照的时间来恢复该数据库,请按照以下步骤操作:
- 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
将
TENANT_SID
替换为租户数据库的 SID。
恢复到特定时间点
如需通过将 SAP HANA 数据库恢复到特定时间点来恢复该数据库,请按照以下步骤操作:
- 使用 Google Cloud 的 Agent for SAP 的 Backint 功能验证您是否已在 Cloud Storage 中为
/hana/log
卷创建了备份。如需详细了解此功能,请参阅使用 Backint 为 SAP HANA 执行备份和恢复。 - 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
将
TENANT_SID
替换为租户数据库的 SID。
- 切换到
磁盘恢复支持的参数
下表介绍了代理的 hanadiskrestore
命令支持的参数:
参数 | 说明 |
---|---|
-sid |
指定 SAP HANA 系统的 SAP 系统标识符 (SID)。 |
-data-disk-name |
可选。指定托管 /hana/data 卷的来源磁盘的名称。
从 3.4 版开始, |
-data-disk-zone |
可选。指定在其中部署托管 /hana/data 卷的来源磁盘的可用区。从 3.4 版开始, |
-source-snapshot |
如果您的 /hana/data 卷托管在一个磁盘上,请指定您要用于执行恢复的磁盘快照的名称。 |
-new-disk-name |
指定要为新磁盘设置的名称。如果您的 /hana/data 卷托管在多个磁盘上,则此参数不适用。 |
-group-snapshot-name |
如果您的 此参数从代理版本 3.6 开始受支持。 |
-project |
可选。指定来源磁盘快照所在的 Google Cloud 项目的 ID。默认情况下,快照在运行 SAP HANA 系统的 Google Cloud 项目中创建。 |
-csek-key-file |
可选。如果您使用 hanadiskbackup 命令和 -source-disk-key-file 参数来加密源磁盘快照,请指定与源磁盘快照对应,RSA 封装的客户提供的加密密钥的 JSON 文件的绝对路径。下面是一个密钥文件的示例:[ { "uri": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ] 此参数从代理版本 3.2 开始受支持。 |
-new-disk-type |
可选。指定要创建的 Persistent Disk 或 Hyperdisk 的类型。默认情况下,新磁盘的类型与来源磁盘的类型相同。 请确保指定经 SAP 认证可用于 SAP HANA 的基于 SSD 的磁盘类型。如需了解详情,请参阅支持的磁盘类型。 |
-hana-sidadm |
可选。指定 SIDadm - SAP HANA 系统的操作系统用户。 |
-force-stop-hana |
可选。如果要在启动恢复操作之前强制停止 SAP HANA,请指定此参数并将其值设置为 true 。默认值为 false 。 |
-provisioned-iops |
可选。如果您要创建 Hyperdisk 卷,请指定其必须处理的 IOPS(每秒输入/输出操作数)。 |
-provisioned-throughput |
可选。如果您要创建 Hyperdisk 卷,请指定其必须支持的吞吐量。 |
-labels-on-detached-disk |
可选。如果您要创建新磁盘来托管已恢复的 此参数从代理版本 3.4 开始受支持。 |
-send-metrics-to-monitoring |
可选。指定快照恢复的持续时间是否发送到 Cloud Monitoring。默认值为 此参数从代理版本 3.4 开始受支持。 |
-disk-size-gb |
可选。指定新磁盘的大小(以 GB 为单位)。默认情况下,新磁盘的大小与现有磁盘的大小相同。 新磁盘的大小不得小于现有磁盘的大小。 |
-loglevel |
可选。为 hanadiskrestore 命令执行的所有操作指定日志记录级别。默认日志记录级别为 info 。可用的日志级别包括:debug 、info 、warn 和 error 。 |
为纵向扩容高可用性系统恢复数据库
如需为 Google Cloud 上的高可用性 (HA) 集群中部署的 SAP HANA 纵向扩容系统恢复数据库,请完成以下步骤:
验证您是否拥有在 SAP HANA 主节点中托管
/hana/data
卷的磁盘的快照。以根用户身份,将高可用性集群置于维护模式。如果您使用的是 Pacemaker,请运行以下命令:
RHEL
pcs property set maintenance-mode=true
SLES
crm configure property maintenance-mode=true
通过在高可用性集群的主节点和备用节点上运行以下命令来停止 SAP HANA 数据库实例:
HDB stop
切换到 SAP HANA 高可用性系统的主节点。
通过运行代理的
hanadiskrestore
命令来恢复托管/hana/data
卷的磁盘:如果您的
/hana/data
卷托管在一个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
如果您的
/hana/data
卷托管在多个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:如果您的/hana/data
卷托管在一块磁盘上,请指定用于创建新磁盘的磁盘快照的名称SOURCE_SNAPSHOT_GROUP_NAME
:如果您的/hana/data
卷托管在多个磁盘上,请指定用于创建新磁盘的快照组名称NEW_DISK_TYPE
:您要创建的磁盘类型。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-type
的说明。NEW_DISK_NAME
:您要为新磁盘设置的名称。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-name
的说明。
如需了解可与
hanadiskrestore
命令搭配使用的参数,请参阅磁盘恢复支持的参数。取消注册 SAP HANA 高可用性系统的辅助节点:
hdbnsutil -sr_unregister
在 SAP HANA 高可用性系统的主节点上,停用 SAP HANA 系统复制:
hdbnsutil -sr_disable
在主节点上,使用所需选项恢复 SAP HANA 数据库:
恢复到快照时间
如需通过将 SAP HANA 数据库恢复到创建磁盘快照的时间来恢复该数据库,请按照以下步骤操作:
- 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
将
TENANT_SID
替换为租户数据库的 SID。
恢复到特定时间点
如需通过将 SAP HANA 数据库恢复到特定时间点来恢复该数据库,请按照以下步骤操作:
- 使用 Google Cloud 的 Agent for SAP 的 Backint 功能验证您是否已在 Cloud Storage 中为
/hana/log
卷创建了备份。如需详细了解此功能,请参阅使用 Backint 为 SAP HANA 执行备份和恢复。 - 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
将
TENANT_SID
替换为租户数据库的 SID。
- 切换到
在主节点上,启用 SAP HANA 系统复制:
hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
向主节点重新注册备用节点:
hdbnsutil -sr_register --name=SECONDARY_SITE_NAME --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INSTANCE_NUMBER --replicationMode=sync --operationMode=logreplay
验证备用节点中的数据库是否与主节点中的数据库完全同步。
以根用户身份退出高可用性集群维护模式。如果您使用的是 Pacemaker,请运行以下命令:
RHEL
pcs property set maintenance-mode=false
SLES
crm configure property maintenance-mode=false
为纵向扩容灾难恢复部署恢复数据库
如需为使用灾难恢复解决方案在 Google Cloud 上部署的 SAP HANA 纵向扩容系统恢复数据库,请完成以下步骤:
通过在灾难恢复部署的主实例和备用实例上运行以下命令来停止 SAP HANA 数据库:
HDB stop
切换到 SAP HANA 灾难恢复部署的主实例。
通过运行代理的
hanadiskrestore
命令来恢复托管/hana/data
卷的磁盘:如果您的
/hana/data
卷托管在一个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
如果您的
/hana/data
卷托管在多个磁盘上,请运行以下命令:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:如果您的/hana/data
卷托管在一块磁盘上,请指定用于创建新磁盘的磁盘快照的名称SOURCE_SNAPSHOT_GROUP_NAME
:如果您的/hana/data
卷托管在多个磁盘上,请指定用于创建新磁盘的快照组名称NEW_DISK_TYPE
:您要创建的磁盘类型。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-type
的说明。NEW_DISK_NAME
:您要为新磁盘设置的名称。如需了解详情,请参阅磁盘恢复支持的参数中对-new-disk-name
的说明。
如需了解可与
hanadiskrestore
命令搭配使用的参数,请参阅磁盘恢复支持的参数。在主实例上,停用 SAP HANA 系统复制:
hdbnsutil -sr_disable
在主实例上,使用所需选项恢复 SAP HANA 数据库:
恢复到快照时间
如需通过将 SAP HANA 数据库恢复到创建磁盘快照的时间来恢复该数据库,请按照以下步骤操作:
- 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
将
TENANT_SID
替换为租户数据库的 SID。
恢复到特定时间点
如需通过将 SAP HANA 数据库恢复到特定时间点来恢复该数据库,请按照以下步骤操作:
- 使用 Google Cloud 的 Agent for SAP 的 Backint 功能验证您是否已在 Cloud Storage 中为
/hana/log
卷创建了备份。如需详细了解此功能,请参阅使用 Backint 为 SAP HANA 执行备份和恢复。 - 切换到
SIDadm
用户:su - SID_LCadm
将
SID_LC
替换为您的 SAP HANA 系统的 SID。对于任何字母,请使用小写字母。 - 通过运行以下命令来恢复系统数据库:
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- 连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
- 通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
将
TENANT_SID
替换为租户数据库的 SID。
- 切换到
在主实例上,启用 SAP HANA 系统复制:
hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
向主实例注册备用实例:
hdbnsutil -sr_register --name=SECONDARY_SITE_NAME --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INSTANCE_NUMBER --replicationMode=sync --operationMode=logreplay
验证备用实例中的数据库是否与主实例中的数据库完全同步。
执行系统复制或系统刷新
如需使用某个 SAP HANA 系统的基于磁盘快照的备份来恢复另一个 SAP HANA 系统,请完成以下步骤:
- 在源系统中,通过运行代理的
hanadiskbackup
命令来创建基于快照的备份。如需了解相关说明,请参阅创建基于磁盘快照的备份。 如果源系统和目标系统的 SID 不同,则重命名源系统中的
/hana/data/SID
目录,使其与目标系统匹配:mv /hana/data/SOURCE_SID /hana/data/TARGET_SID
替换以下内容:
SOURCE_SID
:源 SAP HANA 系统的 SIDTARGET_SID
:目标 SAP HANA 系统的 SID
在目标系统中,通过运行代理的
hanadiskrestore
命令来恢复托管/hana/data
卷的磁盘。在目标系统中,恢复系统数据库:
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SOURCE 'SYSTEMDB@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT"
如果您希望租户数据库具有源系统的 SID,则可以按照 SAP HANA 文档重命名租户数据库中的说明重命名该数据库。
在目标系统中,连接到系统数据库。例如,您可以运行以下命令:
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
替换以下内容:
SYSTEM_DB_PASSWORD
:您的系统数据库密码INSTANCE_NUMBER
:您的 SAP HANA 实例编号
在目标系统中,通过对每个租户数据库运行以下命令来恢复租户数据库:
RECOVER DATABASE FOR TARGET_SID UNTIL TIMESTAMP '2023-12-08 23:59:00' CLEAR LOG USING SOURCE 'TARGET_SID@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT
验证快照一致性
本部分介绍如何使用 SAP 的 hdbpersdiag
工具验证磁盘快照中数据的一致性。如需了解 Google Cloud 建议用于基于磁盘快照的备份和恢复操作的其他最佳实践,请参阅最佳实践。
如需验证快照的一致性,请完成以下步骤:
通过使用代理的
hanadiskbackup
命令创建的快照创建磁盘。使用gcloud compute disks create
命令:gcloud compute disks create DISK_NAME \ --size=SIZE \ --source-snapshot=SNAPSHOT_NAME \ --type=DISK_TYPE \ --zone=ZONE
替换以下内容:
DISK_NAME
:临时磁盘的名称SIZE
:临时磁盘的大小SNAPSHOT_NAME
:来源快照的名称DISK_TYPE
:临时磁盘的磁盘类型ZONE
:要在其中部署临时磁盘的 Compute Engine 可用区
将磁盘挂接到 SAP HANA 主机以外的 Compute Engine 实例。使用
gcloud compute instances attach-disk
命令:gcloud compute instances attach-disk COMPUTE_INSTANCE_NAME \ --disk=DISK_NAME \ --zone=ZONE
替换以下内容:
COMPUTE_INSTANCE_NAME
:您要在其中部署您创建的磁盘的计算实例的名称DISK_NAME
:您创建的磁盘的名称ZONE
:在其中部署计算实例的 Compute Engine 可用区
使用您偏好的 SSH 方法连接到您的计算实例。
将新磁盘装载为临时文件系统:
在操作系统级别,找到没有任何活跃逻辑卷的卷组:
vgdisplay
输出类似于以下示例:
--- Volume group --- VG Name vg_hana_data System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 250.00 GiB PE Size 4.00 MiB Total PE 63999 Alloc PE / Size 63999 / 250.00 GiB Free PE / Size 0 / 0 VG UUID Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR
使用 VG UUID 重命名卷组。在前面的示例中,它是
Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR
。vgrename Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR vg_hana_data_temp
激活卷组和逻辑卷:
vgchange -a y vg_hana_data_temp lvchange -a y /dev/vg_hana_data_temp/data
在临时文件系统中装载逻辑卷,例如
/hana/data_temp
:mkdir /hana/data_temp mount /dev/vg_hana_data_temp/data /hana/data_temp
验证所有磁盘是否都已正确装载:
lsblk
输出类似于以下示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 20M 0 part /boot/efi └─sda3 8:3 0 30G 0 part / sdb 8:16 0 350G 0 disk └─vg_hana_data_temp-data 254:5 0 250G 0 lvm /hana/data_temp sdc 8:32 0 104G 0 disk └─vg_hana_log-log 254:2 0 104G 0 lvm /hana/log sdd 8:48 0 208G 0 disk └─vg_hana_shared-shared 254:0 0 208G 0 lvm /hana/shared sde 8:64 0 32G 0 disk └─vg_hana_usrsap-usrsap 254:3 0 32G 0 lvm /usr/sap sdf 8:80 0 416G 0 disk └─vg_hanabackup-backup 254:4 0 416G 0 lvm /hanabackup sdh 8:112 0 250G 0 disk └─vg_hana_data-data 254:1 0 250G 0 lvm /hana/data
以
SIDadm
用户身份,对临时文件系统中包含的数据卷运行hdbpersdiag
工具:for directory in $(find /hana/data_temp/SID/mnt00001/hdb* -type d); do hdbpersdiag -c -e 'check all' $directory; done
验证
hdbpersdiag
工具的输出。如果您打算将来执行此一致性检查,则可以让新卷组保持原样。如果不是,请将其删除。
将磁盘从计算实例中分离。使用
gcloud compute instances detach-disk
命令:COMPUTE_INSTANCE_NAME \ --disk=DISK_NAME \ --zone=ZONE
删除磁盘。使用
gcloud compute disks delete
命令:gcloud compute disks delete DISK_NAME \ --zone=ZONE
问题排查
虽然 Google Cloud 的 Agent for SAP 旨在解决适用于 SAP HANA 的基于磁盘快照的备份和恢复操作期间可能出现的大多数问题,但也有少数情况需要手动干预。
如需排查 Google Cloud 的 Agent for SAP 的磁盘快照功能的任何相关问题,请参阅基于磁盘快照的备份或恢复操作问题。
获取支持
如果您在解决 Google Cloud 的 Agent for SAP 的问题时需要帮助,请收集所需的诊断信息并与 Cloud Customer Care 联系。如需了解详情,请参阅适用于 SAP HANA 的 Google Cloud 的 Agent for SAP 诊断信息。