Řešení potíží s nástrojem Aplikace Azure lication Consistent Snapshot (AzAcSnap)
Tento článek popisuje, jak řešit problémy při použití nástroje Aplikace Azure lication Consistent Snapshot (AzAcSnap) pro Azure NetApp Files a Azure Large Instance.
Při spouštění příkazů AzAcSnap můžete narazit na několik běžných problémů. Při řešení potíží postupujte podle pokynů. Pokud stále máte problémy, otevřete žádost o službu pro podpora Microsoftu z webu Azure Portal a přiřaďte žádost do fronty velkých instancí SAP HANA.
Příkaz AzAcSnap se nespustí
V některých případech se AzAcSnap nespustí kvůli prostředí uživatele.
Nepodařilo se vytvořit CoreCLR
AzAcSnap je napsaný v .NET a CoreCLR je prováděcí modul pro aplikace .NET, který provádí funkce, jako je načítání bajtového kódu IL, kompilace na strojový kód a uvolňování paměti. V takovém případě dochází k problému s prostředím, který blokuje spuštění modulu CoreCLR.
Běžnou příčinou jsou omezená oprávnění nebo nastavení prostředí pro uživatele operačního systému AzAcSnap, obvykle azacsnap.
Příčinou chyby Failed to create CoreCLR, HRESULT: 0x80004005
může být nedostatek přístupu k zápisu pro uživatele azacsnap k systému TMPDIR
.
Poznámka:
Všechny příkazové řádky začínající příkazy #
jsou příkazy spouštěné jako root
, všechny příkazové řádky začínající >
na příkazy se spouštějí jako azacsnap
uživatel.
/tmp
Zkontrolujte vlastnictví a oprávnění (poznámka: v tomto příkladu root
může číst a zapisovat /tmp
pouze uživatel):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Typická /tmp
oprávnění mají následující oprávnění, která uživateli azacsnap umožní spustit příkaz azacsnap:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Pokud není možné změnit /tmp
oprávnění adresáře, vytvořte konkrétního TMPDIR
uživatele .
Vytvořte TMPDIR
uživatele:azacsnap
> 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)
Důležité
Změna uživatele TMPDIR
musí být trvalá změnou profilu uživatele (např. $HOME/.bashrc
).$HOME/.bash_profile
Také by bylo nutné vyčistit při TMPDIR
restartování systému, to je obvykle automatické pro /tmp
.
Kontrola souborů protokolu, výsledných souborů a syslogu
Mezi nejlepší zdroje informací pro zkoumání problémů s Nástrojem AzAcSnap patří soubory protokolů, výsledné soubory a systémový protokol.
Soubory protokolu
Soubory protokolu AzAcSnap se ukládají do adresáře nakonfigurovaného parametrem logPath
v konfiguračním souboru AzAcSnap. Výchozí název souboru konfigurace je azacsnap.json a výchozí hodnota logPath
je ./logs, což znamená, že soubory protokolu se zapisují do adresáře ./logs vzhledem k tomu, kde se azacsnap
příkaz spouští. Pokud nastavíte logPath
absolutní umístění, například /home/azacsnap/logs, azacsnap
vždy vypíše protokoly do /home/azacsnap/logs bez ohledu na to, kam příkaz spustíte azacsnap
.
Název souboru protokolu je založený na názvu aplikace, azacsnap
příkaz se spustí s -c
, například backup
test
, nebo details
, a výchozí konfigurační název souboru, například azacsnap.json. -c backup
Pomocí příkazu by se výchozí název souboru protokolu azacsnap-backup-azacsnap.log, zapisovaný do adresáře nakonfigurovaného uživatelem logPath
.
Tato konvence vytváření názvů umožňuje více konfiguračních souborů, jeden na databázi, což pomáhá najít přidružené soubory protokolu. Pokud je název souboru konfigurace SID.json, název protokolu při použití azacsnap -c backup --configfile SID.json
této možnosti je azacsnap-backup-SID.log.
Výsledné soubory a syslog
-c backup
Pro příkaz AzAcSnap zapíše do souboru *.result. Účelem souboru *.result je poskytnout potvrzení úspěchu nebo selhání na vysoké úrovni. Pokud je soubor *.result prázdný, předpokládejme selhání. Veškerý výstup zapsaný do souboru *.result je také výstupem systémového protokolu (například /var/log/messages
) pomocí logger
příkazu. Název souboru *.result má stejný základní název jako soubor protokolu, který umožňuje spárování výsledného souboru s konfiguračním souborem a záložním souborem protokolu. Soubor *.result přejde do stejného umístění jako ostatní soubory protokolu a je to jednoduchý výstupní soubor na jednom řádku.
Příklad úspěšného dokončení:
Výstup do souboru *.result :
Database # 1 (PR1) : completed ok
Výstup do
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Příklad výstupu, kdy došlo k selhání a AzAcSnap zaznamenal chybu:
Výstup do souboru *.result :
Database # 1 (PR1) : failed
Výstup do
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Řešení potíží s chybou testovacího úložiště
Příkaz azacsnap -c test --test storage
se nemusí úspěšně dokončit.
Kontrola síťových bran firewall
Komunikace se službou Azure NetApp Files může selhat nebo může dojít k vypršení časového limitu. Pokud chcete řešit potíže, ujistěte se, že pravidla brány firewall neblokují odchozí provoz ze systému, na kterém běží AzAcSnap, na následující adresy a porty TCP/IP:
https://management.azure.com:443
https://login.microsoftonline.com:443
Použití Cloud Shellu k ověření konfiguračních souborů
Pomocí Cloud Shellu na webu Azure Portal můžete otestovat, jestli je instanční objekt správně nakonfigurovaný. Použití testů Cloud Shellu pro správnou konfiguraci, obejití síťových ovládacích prvků ve virtuální síti nebo virtuálním počítači
Vytvořte testovací adresář, například
mkdir azacsnap
.Přejděte do adresáře azacsnap a stáhněte si nejnovější verzi AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Vytvořte spustitelný soubor instalačního programu, například
chmod +x azacsnapinstaller
.Extrahujte binární soubor pro testování.
./azacsnapinstaller -X -d .
Výsledky vypadají jako následující výstup:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Pomocí ikony Pro nahrání/stažení Cloud Shellu nahrajte instanční soubor, azureauth.json a konfigurační soubor AzAcSnap, jako je azacsnap.json, pro účely testování.
storage
Spusťte test../azacsnap -c test --test storage
Poznámka:
Dokončení testovacího příkazu může trvat přibližně 90 sekund.
Neúspěšný test ve velké instanci Azure
Následující příklad chyby pochází ze spuštění azacsnap
ve velké instanci Azure:
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)?
Pokud chcete tuto chybu vyřešit, neodpovězte yes
. Ujistěte se, že je vaše IP adresa úložiště správná. IP adresu úložiště můžete potvrdit provozním týmem Microsoftu.
K chybě obvykle dochází, když uživatel úložiště Azure Large Instance nemá přístup k podkladovému úložišti. Pokud chcete zjistit, jestli má uživatel úložiště přístup k úložišti, spusťte ssh
příkaz pro ověření komunikace s platformou úložiště.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
Následující příklad ukazuje očekávaný výstup:
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
Neúspěšný test se službou Azure NetApp Files
Následující příklad chyby se spouští azacsnap
se službou 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']
Odstranění této chyby:
Zkontrolujte existenci souboru instančního objektu, azureauth.json, jak je nastaveno v konfiguračním souboru azacsnap.json .
Zkontrolujte soubor protokolu, například protokoly nebo azacsnap-test-azacsnap.log, a zjistěte, jestli má soubor instančního objektu správný obsah. Následující výstup souboru protokolu ukazuje, že tajný klíč klienta je neplatný.
[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.
Zkontrolujte soubor protokolu a zjistěte, jestli vypršela platnost instančního objektu. Následující příklad souboru protokolu ukazuje, že vypršela platnost tajných klíčů klienta.
[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://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials
Tip
Další informace o generování nového instančního objektu najdete v části Povolení komunikace s úložištěm v průvodci nástrojem Install Aplikace Azure lication Consistent Snapshot.
Řešení potíží s chybou příkazu test hana
Příkaz azacsnap -c test --test hana
se nemusí úspěšně dokončit.
Příkaz nebyl nalezen.
Při nastavování komunikace se SAP HANA hdbuserstore
se program používá k vytvoření nastavení zabezpečené komunikace. AzAcSnap také vyžaduje program pro veškerou hdbsql
komunikaci se SAP HANA. Tyto programy jsou obvykle v / usr/sap/<SID>/SYS/exe/hdb/ nebo /usr/sap/hdbclient a musí být v uživatelském $PATH
adresáři .
V následujícím příkladu
hdbsql
není příkaz v uživatelském$PATH
rozhraní .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
Následující příklad dočasně přidá
hdbsql
příkaz do uživatele$PATH
, který umožňujeazacsnap
správné spuštění.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Ujistěte se, že instalační program přidal umístění těchto souborů do uživatele $PATH
AzAcSnap .
Poznámka:
Chcete-li trvale přidat do souboru uživatele $PATH
, aktualizujte soubor $HOME/.profile uživatele.
Neplatná hodnota klíče
Tento výstup příkazu ukazuje, že klíč připojení nebyl správně nastaven pomocí hdbuserstore Set
příkazu.
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Další informace o nastavení najdete hdbuserstore
v tématu Začínáme s AzAcSnap.
Neúspěšný test
Při ověřování komunikace se SAP HANA spuštěním testu s azacsnap -c test --test hana
, může se zobrazit následující chyba:
> 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
Odstranění této chyby:
Zkontrolujte konfigurační soubor, například azacsnap.json pro každou instanci HANA, a ujistěte se, že jsou správné hodnoty databáze SAP HANA.
Spuštěním následujícího příkazu ověřte, že
hdbsql
je příkaz v cestě a že se může připojit k serveru SAP HANA.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
Následující příklad ukazuje výstup při správném spuštění příkazu:
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
Chyba nedostatečného oprávnění
Pokud při spuštění azacsnap
dojde k chybě* 258: insufficient privilege
, zkontrolujte, jestli má uživatel nastavená příslušná uživatelská oprávnění databáze AZACSNAP podle instalační příručky. Pomocí následujícího příkazu ověřte oprávnění uživatele:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
Příkaz by měl vrátit následující výstup:
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"
Tato chyba může poskytnout další informace, které vám pomůžou určit požadovaná oprávnění SAP HANA, například Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. V tomto případě postupujte podle pokynů na portálu nápovědy SAP – GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, který doporučuje určit podrobnosti požadovaného oprávnění pomocí následujícího dotazu SQL:
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","","","",""
V předchozím příkladu by přidání DATABASE BACKUP ADMIN
oprávnění k uživateli AZACSNAP SYSTEMDB mělo vyřešit chybu nedostatečných oprávnění.