第 6 章 有用的命令
以下是有用的命令的 3 部分。在大多数情况下,它应该有助于验证操作或配置是否成功。示例与响应一起列出。在某些情况下,出于格式化原因,输出已被调整。
-
当由 <
sid>adm 用户以 >开头时,此文档中列出的所有命令均以 > 开头。 -
root 用户运行的所有命令都以#开头。 -
要执行命令,请省略 prefix > 或
#。
6.1. SAP HANA 命令 复制链接链接已复制到粘贴板!
SAP HANA 命令由 < sid>adm 用户执行。Example:
6.1.1. 使用 hdbclm进行 SAP HANA 安装 复制链接链接已复制到粘贴板!
第三个站点的安装与第二个站点的安装类似。安装可以使用 hdblcm 作为用户 root 来完成。为确保之前未安装任何内容,请运行 hdbuninst 以检查 SAP HANA 是否尚未安装在此节点上。
HANA 卸载的输出示例:
cd /software/DATA_UNITS/HDB_SERVER_LINUX_X86_64
[root@remotehost3]# cd /software/DATA_UNITS/HDB_SERVER_LINUX_X86_64
root@DC3/software/DATA_UNITS/HDB_SERVER_LINUX_X86_64# ./hdbuninst
Option 0 will remove an already existing HANA Installation
No SAP HANA Installation found is the expected answer
DC3 上 HANA 安装的输出示例:
在安装开始前,会列出概述:
输入 y 开始安装。
6.1.2. 使用 hdbsql 检查 Inifile 内容 复制链接链接已复制到粘贴板!
6.1.3. 检查数据库 复制链接链接已复制到粘贴板!
检查数据库是否正在运行,并发现当前的主节点。
列出数据库实例
如果输出为绿色,则实例正在运行。
列出数据库进程
通常,所有数据库进程都处于 GREEN 状态。
列出 SAP HANA 进程
显示 SAP HANA landscape 配置
返回码:
- 0: fatal
- 1: error
- 2: warning
- 3: info
- 4: OK
发现主数据库
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode"
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode"
辅助检查示例:
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode" mode: syncmem primary masters: clusternode1
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode"
mode: syncmem
primary masters: clusternode1
在当前主上检查示例:
显示数据库版本
使用 SQL 查询的示例:
hdbsql RH2=> select * from m_database SYSTEM_ID,DATABASE_NAME,HOST,START_TIME,VERSION,USAGE "RH2","RH2","node1","2023-06-22 15:33:05.235000000","2.00.059.02.1647435895","CUSTOM" 1 row selected (overall time 29.107 msec; server time 927 usec)
hdbsql RH2=> select * from m_database
SYSTEM_ID,DATABASE_NAME,HOST,START_TIME,VERSION,USAGE
"RH2","RH2","node1","2023-06-22 15:33:05.235000000","2.00.059.02.1647435895","CUSTOM"
1 row selected (overall time 29.107 msec; server time 927 usec)
使用 systemOverview.py 的示例:
6.1.4. 启动和停止 SAP HANA 复制链接链接已复制到粘贴板!
选项 1:HDB 命令
clusternode1:rh2adm> HDB help
Usage: /usr/sap/RH2/HDB02/HDB { start|stop|reconf|restart|version|info|proc|admin|kill|kill-<sig>|term }
kill or kill-9 should never be used in a productive environment!
clusternode1:rh2adm> HDB help
Usage: /usr/sap/RH2/HDB02/HDB { start|stop|reconf|restart|version|info|proc|admin|kill|kill-<sig>|term }
kill or kill-9 should never be used in a productive environment!
启动数据库
clusternode1:rh2adm> HDB start
clusternode1:rh2adm> HDB startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止数据库
clusternode1:rh2adm> HDB stop
clusternode1:rh2adm> HDB stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow
选项 2 (推荐):使用 sapcontrol
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StartSystem HDB
03.07.2023 14:08:30
StartSystem
OK
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StartSystem HDB
03.07.2023 14:08:30
StartSystem
OK
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StopSystem HDB
03.07.2023 14:09:33
StopSystem
OK
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StopSystem HDB
03.07.2023 14:09:33
StopSystem
OK
使用 GetProcessList 来监控 HANA 服务的启动和停止:
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetProcessList
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetProcessList
6.1.5. 检查 SAP HANA System Replication 状态 复制链接链接已复制到粘贴板!
有多种方法可以检查 SAP HANA 系统复制状态:
- 'clusternode1:rh2adm> python systemReplicationStatus.py ' on the primary node
-
clusternode1:rh2adm> echo $? #(Return code of systemReplicationStatus) -
clusternode1:rh2adm> hdbnsutil -sr_state -
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration
作为监控器运行的 systemReplicationStatus.py 输出示例:
返回代码的预期结果为:
- 10: NoHSR
- 11: error
- 12: unknown
- 13: 初始化
- 14: 同步
- 15: active
在大多数情况下,系统复制检查将返回返回码 15。另一个显示选项是使用 -t (printLandscapeTree)。
当前主机上的输出示例:
clusternode1:rh2adm> python systemReplicationStatus.py -t
HANA System Replication landscape:
DC1 ( primary )
| --- DC3 ( syncmem )
| --- DC2 ( syncmem )
clusternode1:rh2adm> python systemReplicationStatus.py -t
HANA System Replication landscape:
DC1 ( primary )
| --- DC3 ( syncmem )
| --- DC2 ( syncmem )
hdbnsutil -sr_state 示例:
主上的 sr_stateConfiguation 示例:
二级上的 sr_stateConfiguration 示例:
您还可以在节点是当前主的辅助数据库中检查。在故障转移过程中,会出现两个主数据库,并且需要这些信息来确定潜在的主数据库错误,需要重新注册为次要数据库。
如需更多信息,请参阅示例 :检查 Primary 和 Secondary Systems 上的状态。
6.1.6. 注册辅助节点 复制链接链接已复制到粘贴板!
为 SAP HANA 系统复制环境注册辅助数据库的先决条件:
注册示例:
在注册了 global.ini 文件后,将自动更新
…来自:
…至:
6.1.7. sapcontrol GetProcessList 复制链接链接已复制到粘贴板!
检查活跃的 SAP HANA 数据库的进程
6.1.8. sapcontrol GetInstanceList 复制链接链接已复制到粘贴板!
这将列出 SAP HANA 数据库的实例状态。它还将显示端口。有三个不同的状态名称:
- GREEN (运行)
- GRAY (停止)
- YELLOW (当前正在更改)
活跃实例示例:
停止的实例示例:
6.1.9. hdbcons 示例 复制链接链接已复制到粘贴板!
您还可以使用 HDB 控制台显示数据库的信息:
-
hdbcons -e hdbindexserver 'replication info' -
hdbcons -e hdbindexserver 帮助更多选项
'replication info' 示例:
帮助示例:
6.1.10. 创建 SAP HANA 备份 复制链接链接已复制到粘贴板!
如果要使用 SAP HANA 系统复制,必须首先在主系统上创建一个备份。
如何执行此操作的示例为用户 < sid>adm:
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d SYSTEMDB "BACKUP DATA USING FILE ('/hana/backup/')"
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d ${SAPSYSTEMNAME} "BACKUP DATA USING FILE ('/hana/backup/')"
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d SYSTEMDB "BACKUP DATA USING FILE ('/hana/backup/')"
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d ${SAPSYSTEMNAME} "BACKUP DATA USING FILE ('/hana/backup/')"
6.1.11. 在主数据库上启用 SAP HANA 系统复制 复制链接链接已复制到粘贴板!
必须在主节点上启用 SAP HANA 系统复制。这要求首先进行备份。
clusternode1:rh2adm> hdbnsutil -sr_enable --name=DC1 nameserver is active, proceeding ... successfully enabled system as system replication source site done.
clusternode1:rh2adm> hdbnsutil -sr_enable --name=DC1
nameserver is active, proceeding ...
successfully enabled system as system replication source site
done.
6.1.12. 将数据库密钥复制到辅助节点 复制链接链接已复制到粘贴板!
数据库密钥需要从主数据库复制到次要数据库,然后才能将其注册为次要数据库。
例如:
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY
6.1.13. 为 SAP HANA 系统复制注册辅助节点 复制链接链接已复制到粘贴板!
请确定数据库密钥已首先复制到次要节点。然后运行注册命令:
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --online
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --online
参数描述:
-
remotehost: 运行源(主)数据库的活动节点的主机名 -
remoteInstance:数据库的实例数 replicationMode:以下选项之一-
同步:硬盘同步 -
async: 异步复制 -
syncmem: 内存同步
-
-
名称:这是此复制站点的别名 -
remoteName:源数据库的别名名称 operationMode:以下选项之一-
delta_datashipping:定期传输数据。接管需要更长的时间。 -
logreplay: 在远程站点上立即为 redone 日志。接管速度更快。 -
logreplay_readaccess:可能对第二个站点进行额外的 logreplay 只读访问。
-
6.1.14. 检查 SAP HANA 数据库的 log_mode 复制链接链接已复制到粘贴板!
设置 log_mode 有两个选项:
-
log_mode=overwrite -
log_mode=normal:这是默认值,在数据库实例作为主要实例运行时也是必需的。使用 SAP HANA Multitarget System Replication,您必须使用log_mode=normal。检查log_mode的最佳方法是使用hdbsql:
包括错误的 覆盖 条目示例:
在这种情况下,我们有两个 global.ini 文件:
DEFAULT-
/usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.ini
-
HOST-
/HANA/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.iniTheHOST值覆盖DEFAULT值。您还可以在数据库启动前检查这两个文件,然后再次使用hdbsql验证正确的设置。您可以通过编辑 global.ini 文件来更改log_mode。
-
Example:
clusternode1:rh2adm> vim /hana/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.ini
# global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver
[persistence]
log_mode = overwrite
clusternode1:rh2adm> vim /hana/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.ini
# global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver
[persistence]
log_mode = overwrite
global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver
# global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver
[persistence]
log_mode = normal
检查或更新 global.ini 文件后,验证 log_mode 值:
部分还显示在 [persistence] 部分中需要设置此参数。当您将日志模式从 覆盖 改为 normal 时,建议您创建一个完整的数据备份,以确保数据库可以被恢复。
6.1.15. 发现主数据库 复制链接链接已复制到粘贴板!
例如,有几种方法可以识别主节点:
-
pcs status | grep Promoted -
hdbnsutil -sr_stateConfiguration -
systemReplicationStatus.py
选项 1 - 以下 systemReplicationStatus.py 脚本示例,过滤器将返回所有节点上的主数据库位置:
clusternode1:rh2adm>
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py --sapcontrol=1 | egrep -e
"3${TINSTANCE}01/HOST|PRIMARY_MASTERS"| head -1 | awk -F"=" '{ print $2 }'
clusternode1:rh2adm>
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python
/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py --sapcontrol=1 | egrep -e
"3${TINSTANCE}01/HOST|PRIMARY_MASTERS"| head -1 | awk -F"=" '{ print $2 }'
输出:
clusternode2
clusternode2
选项 2 - 以下示例以类似方法为所有节点显示 systemReplicationStatus :
rh2adm>hdbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
rh2adm>hdbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
输出:
6.1.16. 接管主 复制链接链接已复制到粘贴板!
请参阅 检查复制状态 部分,以检查主节点和次要节点。另外:
- 将集群设置为 maintenance-mode
- 在辅助节点上启动接管
为集群启用 maintenance-mode 的示例:
pcs property set maintenance-mode=true
[root@clusternode1]# pcs property set maintenance-mode=true
在成为新主的二级中,以 < sidadm> 用户身份运行:
clusternode1:rh2adm> hdbnsutil -sr_takeover
clusternode1:rh2adm> hdbnsutil -sr_takeover
这个二级成为主要的,其他活跃二级数据库会重新注册到新主,需要手动重新注册为次要主。
6.1.17. 重新注册以前的主主作为辅助 复制链接链接已复制到粘贴板!
请确定集群停止或置于 maintenance-mode 中。Example:
clusternode2:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC2 --online --remoteName=DC3 --operationMode=logreplay --force_full_replica --online
clusternode2:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC2 --online --remoteName=DC3 --operationMode=logreplay --force_full_replica --online
在我们的示例中,我们使用完整复制。需要完整复制时,您的 SAP HANA 系统管理员应知道。
6.1.18. 从故障切换中恢复 复制链接链接已复制到粘贴板!
请参阅 检查 SAP HANA 系统复制状态 并发现 主要节点。信息一致非常重要。如果节点不是 systemReplicationStatus.py 输出的一部分,且具有不同的系统复制状态,如果需要重新注册此节点,请检查您的数据库管理员。
解决这种情况的一种方法是 重新注册 此站点作为新次要站点。
有时,辅助实例仍会没有启动。然后,在重新注册前取消注册此站点。取消注册二级 DC1 的示例:
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC1
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC1
重新注册 DC1 的示例:
clusternode1:rh2adm> hdbnsutil -sr_register --name=DC1 --remoteHost=node2 --remoteInstance=02 --replicationMode=sync --operationMode=logreplay --online
clusternode1:rh2adm> hdbnsutil -sr_register --name=DC1 --remoteHost=node2 --remoteInstance=02 --replicationMode=sync --operationMode=logreplay --online