Updated on 2024-08-28 GMT+08:00

Using a Custom Script to Implement Consistent Backup for SAP HANA

The following example uses single-server HANA 2.0 running on SUSE 11 SP4 for SAP to demonstrate how to use a custom script to freeze and unfreeze the HANA database in order to implement database backup.

Scenario

An enterprise has purchased ECSs and installed HANA 2.0 on ECSs for saving business data. As data increases, crash-consistent backup cannot meet the RTO and RPO requirements and therefore application-consistent backup is needed.

Required Data

Table 1 Required data

Item

Description

Example Value

HANA username

Username for connecting to the HANA SYSTEMDB database

system

HANA password

Password for connecting to the HANA SYSTEMDB database

Example@123

HANA instance ID

Instance ID for connecting to the HANA database

00

HANA SID

SID for connecting to the HANA database

WXJ

Procedure

  1. Encrypt the HANA password.

    1. Log in to the HANA server and run the cd /home/rdadmin/Agent/bin/ command to go to the Agent directory.
    2. Run the /home/rdadmin/Agent/bin/agentcli encpwd command. The following information is displayed:
      Enter password:

      Enter the HANA password and press Enter. After the encrypted password is displayed, copy it to the clipboard.

      The plaintext password configured in the freezing and unfreezing scripts cannot exceed 16 characters. Or, the password will be truncated after the configuration, and application consistency backup will fail.

      Run the cd /home/rdadmin/Agent/bin/thirdparty/ebk_user command to go to the custom script directory and run the vi hana_freeze.sh command to open the example freezing script.

  2. The following figure shows an example. You need to set HANA_USER, HANA_PASSWORD, and INSTANCE_NUMBER DB_SID based on your actual conditions, where HANA_PASSWORD should be the encrypted password obtained in step 1.

    You can also run the sed commands to modify the configuration:

    sed -i 's/^HANA_USER=.*/HANA_USER="XXX"/' hana_freeze.sh hana_unfreeze.sh, where XXX indicates the database username.

    sed -i 's/^HANA_PASSWORD=.*/HANA_PASSWORD="XXX"/' hana_freeze.sh hana_unfreeze.sh, where XXX indicates the password obtained in step 1

    sed -i 's/^INSTANCE_NUMBER=.*/INSTANCE_NUMBER="XXX"/' hana_freeze.sh hana_unfreeze.sh, where XXX indicates the database instance number

    sed -i 's/^DB_SID=.*/DB_SID="XXX"/' hana_freeze.sh hana_unfreeze.sh, where XXX indicates the database SID

    If you run this command, both the freezing and unfreezing scripts will be modified and therefore step 3 is not needed.

  3. Run the vi hana_unfreeze.sh command to open the example HANA unfreezing script and change the username, password, instance ID, and SID in the script to be consistent with your actual settings.

    The hana_freeze.sh and hana_unfreeze.sh scripts can only be used to freeze and unfreeze databases. If other operations are required, you can add them in the scripts via compilation. For details, see Using a Custom Script to Implement Consistent Backup for Other Linux Applications.

    When freezing the SAP HANA database, you need to freeze the XFS file systems of the data volumes as SAP suggested. Otherwise, data inconsistency may occur. The example script mentioned in this section will query the mount point of the Data volume used by the HANA database and then use the xfs_freeze command to freeze the database.

    If the HANA system does not have an independent partition for saving the data volumes as SAP suggested but stores them in the same partition as the system volume, modify the hana_freeze.sh script by commenting out lines related to xfs_freeze to avoid the freezing of the entire system. However, such operations still could not eliminate data inconsistency.