本指南介绍了如何使用 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
卷映射到逻辑卷。这样,代理便可在基于磁盘快照的备份或恢复操作期间正确处理装载点。- 未使用基础架构即代码 (IaC) 工具(如 Terraform)部署底层基础架构。如需了解详情,请参阅将快照与基于 IaC 工具的部署搭配使用。
设置权限
如需使用 Google Cloud 的 Agent for SAP 的磁盘快照功能备份和恢复 SAP HANA 数据库,您必须设置以下权限:
- 如需创建磁盘快照,请启用以下 IAM 权限:
- 对于运行 SAP HANA 系统的 Google Cloud 项目,请启用
compute.snapshots.create
权限。 - 对于 Compute Engine 虚拟机实例使用的服务账号,请启用以下权限:
compute.disks.createSnapshot
、compute.snapshot.list
、compute.disk.list
。
- 对于运行 SAP HANA 系统的 Google Cloud 项目,请启用
- 如需创建基于磁盘快照的备份,代理使用的 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
创建基于磁盘快照的备份
-
如需为 SAP HANA 数据库的
/hana/data
卷创建基于磁盘快照的备份,请运行 Google Cloud 的 Agent for SAP 的hanadiskbackup
命令: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 \ -hdbuserstore-key=HDB_USERSTORE_KEY \ [-source-disk=SOURCE_DISK_NAME \ -source-disk-zone=SOURCE_DISK_ZONE]
请替换以下内容:
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 数据库用户名HANA_USER_PWD_SECRET_NAME
:如果您使用 Secret Manager 存储 SAP HANA 数据库用户的密码,请指定相应的 Secret 名称HDB_USERSTORE_KEY
:如果您已创建hdbuserstore
密钥以对指定的 SAP HANA 用户进行身份验证,请指定该密钥SOURCE_DISK_NAME
:托管/hana/data
卷的 Persistent Disk 或 Hyperdisk 卷的名称SOURCE_DISK_ZONE
:在其中部署托管/hana/data
卷的磁盘的可用区名称
下表介绍了
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
。-password-secret
可选。如果您使用 Secret Manager 存储 SAP HANA 数据库用户的密码,请指定相应的 Secret 名称。
在 Secret Manager 中,请确保 Secret 值(即密码)至少包含 8 个字符,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字。
如果您使用了
-password
参数,请勿指定此参数。-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
参数。-host
可选。指定托管 SAP HANA 系统的 Compute Engine 虚拟机实例的 IP 地址。默认值为 localhost
。-project
可选。指定要在其中创建磁盘快照的 Google Cloud 项目的 ID。默认情况下,快照在运行 SAP HANA 系统的 Google Cloud 项目中创建。 -abandon-prepared
可选。指定是否忽略任何现有磁盘快照。默认值为 false
。-snapshot-name
可选。指定您要创建的磁盘快照的名称。
默认情况下,快照按以下格式命名:
snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
。-source-disk
指定托管 /hana/data
卷的 Persistent Disk 或 Hyperdisk 卷的名称。-source-disk-zone
指定托管 /hana/data
卷的磁盘所在的可用区。-source-disk-key-file
可选。如果托管 /hana/data
卷的磁盘使用 RSA 封装的客户提供的加密密钥进行加密,请指定该密钥的 JSON 文件的绝对路径。此参数从代理版本 3.2 开始受支持。
-storage-location
可选。指定您要用于存储磁盘快照的 Cloud Storage 多区域或 Cloud Storage 区域。 -snapshot-description
可选。指定磁盘快照的说明。 -labels
可选。指定要与您创建的磁盘快照关联的一个或多个标签值对。例如: -labels="label1=value1,label2=value2"
。-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 快照页面,然后使用磁盘或快照名称过滤条目。
或者,您还可以在代理的以下日志文件中查看磁盘快照详细信息:
/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-SOURCE_DISK_NAME-YYYYMMDD-HHMMMSS"
此输出包括以下值:
BACKUP_ID
:在 SAP HANA 备份目录中分配给磁盘快照的备份 IDSOURCE_DISK_NAME
:托管/hana/data
卷的磁盘(您为其创建了快照)的名称YYYYMMDD-HHMMMSS
:快照的创建日期和时间
使用磁盘快照恢复数据库
如需使用 Google Cloud 的 Agent for SAP 的磁盘快照功能恢复 SAP HANA 数据库,请参阅适用于您的场景的说明:
为纵向扩容系统恢复数据库
如需为 Google Cloud 上部署的 SAP HANA 纵向扩容系统恢复数据库,请完成以下步骤:
通过运行代理的
hanadiskrestore
命令来恢复托管/hana/data
卷的磁盘:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:用于创建新磁盘的磁盘快照的名称SOURCE_DISK_NAME
:托管/hana/data
卷的来源磁盘的名称SOURCE_DISK_ZONE
:在其中部署来源磁盘的可用区的名称
如需了解可与
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 卷的来源磁盘的名称。
|
-data-disk-zone |
可选。指定在其中部署托管 /hana/data 卷的来源磁盘的可用区。
|
-source-snapshot |
指定您要用于恢复托管 SAP HANA 数据卷的磁盘的磁盘快照名称。 |
-new-disk-name |
指定要为新磁盘设置的名称。 |
-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
卷的磁盘:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:用于创建新磁盘的磁盘快照的名称SOURCE_DISK_NAME
:托管/hana/data
卷的来源磁盘的名称SOURCE_DISK_ZONE
:在其中部署来源磁盘的可用区的名称
如需了解可与
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
卷的磁盘:sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
替换以下内容:
SOURCE_PROJECT_ID
:磁盘快照所在的 Google Cloud 项目的 IDSID
:SAP HANA 系统的 SAP 系统标识符 (SID)SOURCE_SNAPSHOT_NAME
:用于创建新磁盘的磁盘快照的名称SOURCE_DISK_NAME
:托管/hana/data
卷的来源磁盘的名称SOURCE_DISK_ZONE
:在其中部署来源磁盘的可用区的名称
如需了解可与
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 主机以外的虚拟机。使用
gcloud compute instances attach-disk
命令:gcloud compute instances attach-disk VM_INSTANCE_NAME \ --disk=DISK_NAME \ --zone=ZONE
替换以下内容:
VM_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
命令:VM_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 诊断信息。