Felsöka verktyget Azure Application Consistent Snapshot (AzAcSnap)

Den här artikeln beskriver hur du felsöker problem när du använder verktyget Azure Application Consistent Snapshot (AzAcSnap) för Azure NetApp Files och Azure Large Instance.

Du kan stöta på flera vanliga problem när du kör AzAcSnap-kommandon. Följ anvisningarna för att felsöka problemen. Om du fortfarande har problem öppnar du en tjänstbegäran för Microsoft-support från Azure-portalen och tilldelar begäran till den stora SAP HANA-instanskön.

Kommandot AzAcSnap körs inte

I vissa fall startar inte AzAcSnap på grund av användarens miljö.

Det gick inte att skapa CoreCLR

AzAcSnap är skrivet i .NET och CoreCLR är en körningsmotor för .NET-appar som utför funktioner som il byte-kodinläsning, kompilering till maskinkod och skräpinsamling. I det här fallet finns det ett miljöproblem som hindrar CoreCLR-motorn från att starta.

En vanlig orsak är begränsade behörigheter eller miljöinställningar för AzAcSnap-operativsystemanvändaren, vanligtvis "azacsnap".

Felet Failed to create CoreCLR, HRESULT: 0x80004005 kan orsakas av bristande skrivåtkomst för azacsnap-användaren till systemets TMPDIR.

Kommentar

Alla kommandorader som börjar med # är kommandon som körs som root, alla kommandorader som börjar med > körs som azacsnap användare.

/tmp Kontrollera ägarskap och behörigheter (observera i det här exemplet att endast root användaren kan läsa och skriva till /tmp):

# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp

En typisk /tmp har följande behörigheter, vilket gör att azacsnap-användaren kan köra kommandot azacsnap:

# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp

Om det inte går att ändra /tmp katalogbehörigheterna skapar du en användarspecifik TMPDIR.

Gör en TMPDIR för azacsnap användaren:

> mkdir /home/azacsnap/_tmp
> export TMPDIR=/home/azacsnap/_tmp
> azacsnap -c about
 
 
                            WKO0XXXXXXXXXXXNW
                           Wk,.,oxxxxxxxxxxx0W
                           0;.'.;dxxxxxxxxxxxKW
                          Xl'''.'cdxxxxxxxxxdkX
                         Wx,''''.,lxxxxdxdddddON
                         0:''''''.;oxdddddddddxKW
                        Xl''''''''':dddddddddddkX
                       Wx,''''''''':ddddddddddddON
                       O:''''''''',xKxddddddoddod0W
                      Xl''''''''''oNW0dooooooooooxX
                     Wx,,,,,,'','c0WWNkoooooooooookN
                    WO:',,,,,,,,;cxxxxooooooooooooo0W
                    Xl,,,,,,,;;;;;;;;;;:llooooooooldX
                   Nx,,,,,,,,,,:c;;;;;;;;coooollllllkN
                  WO:,,,,,,,,,;kXkl:;;;;,;lolllllllloOW
                  Xl,,,,,,,,,,dN WNOl:;;;;:lllllllllldK
                  0c,;;;;,,,;lK     NOo:;;:clllllllllo0W
                  WK000000000N        NK000KKKKKKKKKKXW
 
 
                Azure Application Consistent Snapshot Tool
                       AzAcSnap 7a (Build: 1AA8343)

Viktigt!

Om du ändrar användarens TMPDIR måste du göra det permanent genom att ändra användarens profil (t.ex. $HOME/.bashrc eller $HOME/.bash_profile). Det skulle också finnas ett behov av att rensa TMPDIR vid systemomstart, detta är vanligtvis automatiskt för /tmp.

Kontrollera loggfiler, resultatfiler och syslog

Några av de bästa informationskällorna för att undersöka AzAcSnap-problem är loggfilerna, resultatfilerna och systemloggen.

Loggfiler

AzAcSnap-loggfilerna lagras i katalogen som konfigureras av parametern logPath i AzAcSnap-konfigurationsfilen. Standardkonfigurationsfilnamnet är azacsnap.json och standardvärdet för logPath är ./logs, vilket innebär att loggfilerna skrivs till katalogen ./logs i förhållande till där azacsnap kommandot körs. Om du gör en logPath absolut plats, till exempel /home/azacsnap/logs, azacsnap matar du alltid ut loggarna till /home/azacsnap/logs, oavsett var du kör azacsnap kommandot.

Loggfilnamnet baseras på programnamnet, azacsnap, kommandot kör med -c, till exempel backup, testeller details, och standardkonfigurationsfilnamnet, till exempel azacsnap.json. -c backup Med kommandot skulle ett standardloggfilnamn vara azacsnap-backup-azacsnap.log, skrivet i katalogen som konfigurerats av logPath.

Den här namngivningskonventionen gör det möjligt för flera konfigurationsfiler, en per databas, att hjälpa till att hitta de associerade loggfilerna. Om konfigurationsfilnamnet är SID.json är loggfilnamnet när du använder azacsnap -c backup --configfile SID.json alternativet azacsnap-backup-SID.log.

Resultatfiler och syslog

-c backup För kommandot skriver AzAcSnap till en *.result-fil. Syftet med filen *.result är att ge en bekräftelse på lyckade/misslyckade resultat på hög nivå. Om filen *.result är tom förutsätter du att den misslyckas. Alla utdata som skrivs till filen *.result skickas också till systemloggen (till exempel /var/log/messages) med hjälp logger av kommandot . Filnamnet *.result har samma basnamn som loggfilen för matchning av resultatfilen med konfigurationsfilen och loggfilen för säkerhetskopiering. Filen *.result hamnar på samma plats som de andra loggfilerna och är en enkel enradsutdatafil.

  1. Exempel på lyckat slutförande:

    1. Utdata till *.result-fil :

      Database # 1 (PR1) : completed ok
      
    2. Utdata till /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Exempel på utdata där ett fel har inträffat och AzAcSnap fångade felet:

    1. Utdata till *.result-fil :

      Database # 1 (PR1) : failed
      
    2. Utdata till /var/log/messages:

      Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
      

Felsöka misslyckat testlagringskommando

Kommandot azacsnap -c test --test storage kanske inte har slutförts.

Kontrollera nätverksbrandväggar

Kommunikationen med Azure NetApp Files kan misslyckas eller överskrida tidsgränsen. Om du vill felsöka kontrollerar du att brandväggsreglerna inte blockerar utgående trafik från systemet som kör AzAcSnap till följande adresser och TCP/IP-portar:

  • https://management.azure.com:443
  • https://login.microsoftonline.com:443

Använda Cloud Shell för att verifiera konfigurationsfiler

Du kan testa om tjänstens huvudnamn är korrekt konfigurerat med hjälp av Cloud Shell via Azure-portalen. Använda Cloud Shell-tester för korrekt konfiguration och kringgå nätverkskontroller i ett virtuellt nätverk eller en virtuell dator (VM).

  1. Öppna en Cloud Shell-session i Azure-portalen.

  2. Skapa en testkatalog, till exempel mkdir azacsnap.

  3. Växla till katalogen azacsnap och ladda ned den senaste versionen av AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Gör installationsprogrammet körbart, till exempel chmod +x azacsnapinstaller.

  5. Extrahera binärfilen för testning.

    ./azacsnapinstaller -X -d .
    

    Resultatet ser ut som följande utdata:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Använd ikonen Ladda upp/ladda ned i Cloud Shell för att ladda upp tjänstens huvudnamnsfil azureauth.json och AzAcSnap-konfigurationsfilen, till exempel azacsnap.json, för testning.

  7. storage Kör testet.

    ./azacsnap -c test --test storage
    

    Kommentar

    Testkommandot kan ta cirka 90 sekunder att slutföra.

Det gick inte att testa den stora Azure-instansen

Följande felexempel är från att köras azacsnap på Azure Large Instance:

azacsnap -c test --test storage
The authenticity of host '172.18.18.11 (172.18.18.11)' can't be established.
ECDSA key fingerprint is SHA256:QxamHRn3ZKbJAKnEimQpVVCknDSO9uB4c9Qd8komDec.
Are you sure you want to continue connecting (yes/no)?

Om du vill felsöka det här felet ska du inte svara yes. Kontrollera att lagrings-IP-adressen är korrekt. Du kan bekräfta lagrings-IP-adressen med Microsofts driftteam.

Felet visas vanligtvis när Azure Large Instance-lagringsanvändaren inte har åtkomst till den underliggande lagringen. För att avgöra om lagringsanvändaren har åtkomst till lagringen ssh kör du kommandot för att verifiera kommunikationen med lagringsplattformen.

ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"

I följande exempel visas förväntade utdata:

ssh clt1h80backup@10.8.0.16 "volume show -fields volume"
vserver volume
--------------------------------- ------------------------------
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00001_t020_vol
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00002_t020_vol

Det gick inte att testa med Azure NetApp Files

Följande felexempel är från att köras azacsnap med Azure NetApp Files:

azacsnap --configfile azacsnap.json.NOT-WORKING -c test --test storage
BEGIN : Test process started for 'storage'
BEGIN : Storage test snapshots on 'data' volumes
BEGIN : 1 task(s) to Test Snapshots for Storage Volume Type 'data'
ERROR: Could not create StorageANF object [authFile = 'azureauth.json']

Så här felsöker du det här felet:

  1. Kontrollera att det finns en tjänsthuvudnamnsfil, azureauth.json, som anges i azacsnap.json konfigurationsfilen.

  2. Kontrollera loggfilen, till exempel loggar/azacsnap-test-azacsnap.log, för att se om tjänstens huvudnamnsfil har rätt innehåll. Följande loggfilutdata visar att klienthemlighetsnyckeln är ogiltig.

    [19/Nov/2020:18:39:49 +13:00] DEBUG: [PID:0020080:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000215: Invalid client secret is provided.
    
  3. Kontrollera loggfilen för att se om tjänstens huvudnamn har upphört att gälla. Följande loggfilsexempel visar att klienthemlighetsnycklarna har upphört att gälla.

    [19/Nov/2020:18:41:10 +13:00] DEBUG: [PID:0020257:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000222: The provided client secret keys are expired. Visit the Azure Portal to create new keys for your app, or consider using certificate credentials for added security: https://video2.skills-academy.com/azure/active-directory/develop/active-directory-certificate-credentials
    

Dricks

Mer information om hur du genererar ett nytt huvudnamn för tjänsten finns i avsnittet Aktivera kommunikation med lagring i verktygsguiden Installera Azure Application Consistent Snapshot.

Felsöka det misslyckade kommandot "test hana"

Kommandot azacsnap -c test --test hana kanske inte har slutförts.

Kommandot hittades inte

När du konfigurerar kommunikation med SAP HANA hdbuserstore används programmet för att skapa inställningarna för säker kommunikation. AzAcSnap kräver också programmet hdbsql för all kommunikation med SAP HANA. Dessa program är vanligtvis under /usr/sap/<SID>/SYS/exe/hdb/ eller /usr/sap/hdbclient och måste finnas i användarens $PATH.

  • I följande exempel hdbsql finns kommandot inte i användarens $PATH.

    hdbsql -n 172.18.18.50 - i 00 -U AZACSNAP "select version from sys.m_database"
    
    If 'hdbsql' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf hdbsql
    
  • I följande exempel läggs hdbsql kommandot tillfälligt till i användarens $PATH, vilket gör att det går azacsnap att köra korrekt.

    export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
    

Kontrollera att installationsprogrammet har lagt till platsen för dessa filer i AzAcSnap-användarens $PATH.

Kommentar

Om du vill lägga till permanent i användarens $PATHuppdaterar du användarens $HOME/.profile-fil .

Ogiltigt värde för nyckel

Det här kommandot visar att anslutningsnyckeln inte har konfigurerats korrekt med hdbuserstore Set kommandot .

hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)

Mer information om hur du konfigurerar finns i hdbuserstoreKom igång med AzAcSnap.

Misslyckat test

När du verifierar kommunikationen med SAP HANA genom att köra ett test med azacsnap -c test --test hanakan du få följande fel:

> azacsnap -c test --test hana
BEGIN : Test process started for 'hana'
BEGIN : SAP HANA tests
CRITICAL: Command 'test' failed with error:
Cannot get SAP HANA version, exiting with error: 127

Så här felsöker du det här felet:

  1. Kontrollera konfigurationsfilen, till exempel azacsnap.json för varje HANA-instans, för att säkerställa att SAP HANA-databasvärdena är korrekta.

  2. Kör följande kommando för att kontrollera att hdbsql kommandot finns i sökvägen och att det kan ansluta till SAP HANA-servern.

    hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
    

    I följande exempel visas utdata när kommandot körs korrekt:

    host          : 172.18.18.50
    sid           : H80
    dbname        : SYSTEMDB
    user          : AZACSNAP
    kernel version: 2.00.040.00.1553674765
    SQLDBC version:        libSQLDBCHDB 2.04.126.1551801496
    autocommit    : ON
    locale        : en_US.UTF-8
    input encoding: UTF8
    sql port      : saphana1:30013
    

Otillräckligt behörighetsfel

Om körningen azacsnap visar ett fel, till exempel * 258: insufficient privilege, kontrollerar du att användaren har rätt AZACSNAP-databasanvändarbehörigheter konfigurerade enligt installationsguiden. Kontrollera användarens behörigheter med följande kommando:

hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap

Kommandot ska returnera följande utdata:

GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE
"AZACSNAP","USER","BACKUP ADMIN","TRUE","FALSE"
"AZACSNAP","USER","CATALOG READ","TRUE","FALSE"
"AZACSNAP","USER","CREATE ANY","TRUE","TRUE"

Felet kan ge ytterligare information som hjälper dig att fastställa nödvändiga SAP HANA-privilegier, till exempel Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. I det här fallet följer du anvisningarna på SAP-hjälpportalen – GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, som rekommenderar att du använder följande SQL-fråga för att fastställa information om den behörighet som krävs:

CALL SYS.GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS ('99X9999X99X9999X99X99XX999XXX999', ?)
GUID,CREATE_TIME,CONNECTION_ID,SESSION_USER_NAME,CHECKED_USER_NAME,PRIVILEGE,IS_MISSING_ANALYTIC_PRIVILEGE,IS_MISSING_GRANT_OPTION,DATABASE_NAME,SCHEMA_NAME,OBJECT_NAME,OBJECT_TYPE
"99X9999X99X9999X99X99XX999XXX999","2021-01-01 01:00:00.180000000",120212,"AZACSNAP","AZACSNAP","DATABASE ADMIN or DATABASE BACKUP ADMIN","FALSE","FALSE","","","",""

I föregående exempel bör du lösa det otillräckliga behörighetsfelet DATABASE BACKUP ADMIN genom att lägga till behörigheten till SYSTEMDB:s AZACSNAP-användare.

Nästa steg