While writing and developing content for SAP HANA on Pure Storage® FlashArray™ or Pure Cloud Block Store™ (CBS), I have developed some scripts that speed up some of the operations which organizations using SAP HANA on Pure Storage products could also make use of.
To that end, I have created a repository for SAP HANA focused operations on Pure Storage Open Connect, which is where the latest scripts can be found.
Getting Started
The scripts are written in both Microsoft Powershell and Python to cater for both Windows and Linux users, respectively.
Assuming that git is installed on either the Linux based OS or Microsoft Windows, simply execute the following to clone the remote repository to a local one:
Git clone https://github.com/PureStorage-OpenConnect/SAP-HANA-Scripts.git
The repository contains separate folders for Powershell and Python scripts. Each separate folder further splits out to cater towards the type of SAP HANA deployment (Scale Up and Scale Out) to be operated on .In the initial release of these scripts only baremetal systems can take application consistent storage snapshots.
Prerequisites
Download and install the SAP HANA client (SAP login required) for the relevant OS and SAP HANA version. To use the Python scripts, install the SAP HANA Python driver by following this process.
It is also important to know which port the SAP HANA database indexserver is running on. To ascertain this, simply execute the following Native SQL script on the system database (Multiple database containers):
SELECT HOST, DATABASE_NAME, SQL_PORT
FROM SYS_DATABASES.M_SERVICES
Python Scripts
Ensure the following packages are installed using either pip or easy_install
- argparse
- paramkio
- regex
- purestorage
- Datetime
- pyVmomi
All scripts were created for use with Python 3.6 and later to ensure they work as expected. Accordingly, install the required version of Python and update the version for execution by using the following process provided by linuxconfig.org.
Python Script – SAP HANA Scale Up or Single Node – creating an application consistent snapshot
This script will connect to an SAP HANA database and determine if the system is configured for multiple database containers (MDC). In the event of using an MDC system, it will use the database user and password provided. This assumes the user provides both the SYSTEM and tenant database with the same password. Once connected to the correct database, the script finds the data volume, matches it to a volume on FlashArray or Pure CBS, prepares the database for a storage snapshot, takes the block device storage snapshot and then ensures everything is correct before confirming or abandoning the snapshot.
(UPDATE) with the 0.5 version of the scripts port numbers and database names are no longer required.
Location – Python/Scale Up/saphana_create_snapshot.py
Arguments
-ha/–hostaddress | Host address(IP) or hostname of the SAP HANA Scale Up system. |
-i/–instancenumber | SAP HANA instance number , typically in the form 00. Defaults to 00 if not value given. |
-du/–databaseuser | SAP HANA database user with the correct permissions to create a storage snapshot. |
-dp/–databasepassword | SAP HANA database password with the correct permissions to create a storage snapshot. |
-osu/–operatingsystemuser | A user with the permissions to freeze the SAP HANA data volume and view volume information. |
-osp/–operatingsystempassword | Password for the user with permissions to freeze the SAP HANA data volume and view volume information. |
-fa/–flasharray | The IP address or hostname of a Pure Storage FlashArray with the SAP HANA systems volumes on it. |
-fau/–flasharrayuser | A user on the FlashArray with permissions to create a volume snapshot. |
-fap/–flasharraypassword | A user on the FlashArray with permissions to create a volume snapshot |
Python Script – SAP HANA Scale Out or Multi-Node – creating an application consistent snapshot
This script will connect to an SAP HANA database on any scale out worker node and identify if the system is configured for multiple database containers (MDC). In the event of using an MDC system it will use the database user and password provided. This assumes the user provides both the SYSTEM and tenant database with the same password. Once connected to the correct database the script finds the data volumes for each worker node, matches it to the volumes on FlashArray or CBS , prepares the database for a storage snapshot , takes a storage snapshot of each block storage device and then ensures everything is correct before confirming or abandoning the snapshot.
Location – Python/Snapshot Creation/create_scaleout_snapshot.py
Arguments
-ha/–hostaddress | Host address(IP) or hostname of any SAP HANA worker node with an indexserver. |
-d/–domainname | Domain name of the domain where the SAP HANA scale out nodes are located. |
-i/–instancenumber | SAP HANA instance number , typically in the form 00. Defaults to 00 if not value given. |
-du/–databaseuser | SAP HANA database user with the correct permissions to create a storage snapshot. |
-dp/–databasepassword | SAP HANA database password with the correct permissions to create a storage snapshot. |
-osu/–operatingsystemuser | A user with the permissions to freeze the SAP HANA data volume and view volume information. |
-osp/–operatingsystempassword | Password for the user with permissions to freeze the SAP HANA data volume and view volume information. |
-fa/–flasharray | The IP address or hostname of a Pure Storage FlashArray with the SAP HANA systems volumes on it. |
-fau/–flasharrayuser | A user on the FlashArray with permissions to create a volume snapshot. |
-fap/–flasharraypassword | A user on the FlashArray with permissions to create a volume snapshot |
Powershell Scripts
All scripts are created to work on Powershell 3.0 or later. The .Net Framework 4.5 or later also needs to be installed to ensure all of the correct prerequisites are available. The script will check if the SAP HANA client and ODBC provider are added to the ODBC data sources, the Pure Storage Powershell SDK is installed and POSH-SSH are installed.
Powershell Script – SAP HANA Scale Up or Single Node – creating an application consistent snapshot
This script will connect to an SAP HANA database and identify if the system is configured for multiple database containers (MDC). In the event of using an MDC system, it will use the database user and password that is provided. This assumes the user provides both the SYSTEM and tenant database with the same password. Once connected to the correct database, the script finds the data volume, matches it to a volume on FlashArray or Pure CBS, prepares the database for a storage snapshot, takes the block device storage snapshot and then ensures everything is correct before confirming or abandoning the snapshot.
Location – Powershell/Snapshot Creation/New-ScaleUpStorageSnapshot.ps1
Arguments
HostAddress | Host address(IP) or hostname of the SAP HANA Scale Up system. |
InstanceNumber | SAP HANA instance number , typically in the form 00. Defaults to 00 if not value given. |
InstanceNumber | SAP HANA database or tenant name. |
DatabaseUser | SAP HANA port number , typically in the form 15,41 taken from the final two digits of the port number. Defaults to 15 if no value is given. |
-DatabasePassword | SAP HANA database user with the correct permissions to create a storage snapshot. |
DatabasePassword | SAP HANA database password with the correct permissions to create a storage snapshot. |
OperatingSystemUser | A user with the permissions to freeze the SAP HANA data volume and view volume information. |
OperatingSystemPassword | Password for the user with permissions to freeze the SAP HANA data volume and view volume information. |
PureFlashArrayAddress | The IP address or hostname of a Pure Storage FlashArray with the SAP HANA systems volumes on it. |
PureFlashArrayUser | A user on the FlashArray with permissions to create a volume snapshot. |
PureFlashArrayPassword | A user on the FlashArray with permissions to create a volume snapshot |
Powershell Script – SAP HANA Scale Out or Multi-Node – creating an application consistent snapshot
This script will connect to an SAP HANA database on any scale out worker node and identify if the system is configured for multiple database containers (MDC). In the event of using an MDC system, it will use the database user and password provided. This assumes the user provides both the SYSTEM and tenant database with the same password. Once connected to the correct database, the script finds the data volumes for each worker node, matches it to the volumes on FlashArray or CBS, prepares the database for a storage snapshot, takes a storage snapshot of each block storage device and then ensures everything is correct before confirming or abandoning the snapshot.
Location – Powershell/Snapshot Creation/New-ScaleUpStorageSnapshot.ps1
Arguments
HostAddress | Host address(IP) or hostname of any SAP HANA worker node with an indexserver. |
DomainName | Domain name of the domain where the SAP HANA scale out nodes are located. |
InstanceNumber | SAP HANA instance number , typically in the form 00. Defaults to 00 if not value given. |
InstanceNumber | SAP HANA database or tenant name. |
DatabaseUser | SAP HANA port number , typically in the form 15,41 taken from the final two digits of the port number. Defaults to 15 if no value is given. |
-DatabasePassword | SAP HANA database user with the correct permissions to create a storage snapshot. |
DatabasePassword | SAP HANA database password with the correct permissions to create a storage snapshot. |
OperatingSystemUser | A user with the permissions to freeze the SAP HANA data volume and view volume information. |
OperatingSystemPassword | Password for the user with permissions to freeze the SAP HANA data volume and view volume information. |
PureFlashArrayAddress | The IP address or hostname of a Pure Storage FlashArray with the SAP HANA systems volumes on it. |
PureFlashArrayUser | A user on the FlashArray with permissions to create a volume snapshot. |
PureFlashArrayPassword | A user on the FlashArray with permissions to create a volume snapshot |