Rozwiązywanie problemów z narzędziem aplikacja systemu Azure Consistent Snapshot (AzAcSnap)
W tym artykule opisano sposób rozwiązywania problemów podczas korzystania z narzędzia aplikacja systemu Azure Consistent Snapshot (AzAcSnap) dla usług Azure NetApp Files i Azure Large Instance.
Podczas uruchamiania poleceń AzAcSnap może wystąpić kilka typowych problemów. Postępuj zgodnie z instrukcjami, aby rozwiązać problemy. Jeśli nadal masz problemy, otwórz żądanie obsługi dla pomoc techniczna firmy Microsoft z witryny Azure Portal i przypisz żądanie do kolejki dużych wystąpień SAP HANA.
Polecenie AzAcSnap nie zostanie uruchomione
W niektórych przypadkach narzędzie AzAcSnap nie zostanie uruchomione ze względu na środowisko użytkownika.
Nie można utworzyć coreCLR
AzAcSnap jest napisany na platformie .NET, a CoreCLR jest aparatem wykonywania dla aplikacji platformy .NET, wykonując funkcje, takie jak ładowanie kodu bajtowego IL, kompilacja do kodu maszynowego i odzyskiwania pamięci. W takim przypadku występuje problem środowiskowy blokujący uruchomienie aparatu CoreCLR.
Częstą przyczyną są ograniczone uprawnienia lub konfiguracja środowiska dla użytkownika systemu operacyjnego AzAcSnap, zwykle "azacsnap".
Failed to create CoreCLR, HRESULT: 0x80004005
Błąd może być spowodowany brakiem dostępu do zapisu dla użytkownika azacsnap w systemie TMPDIR
.
Uwaga
Wszystkie wiersze polecenia rozpoczynające się od #
polecenia to polecenia uruchamiane jako root
, wszystkie wiersze polecenia rozpoczynające się od >
polecenia są uruchamiane jako azacsnap
użytkownik.
/tmp
Sprawdź własność i uprawnienia (uwaga w tym przykładzie root
tylko użytkownik może odczytywać i zapisywać dane w programie /tmp
):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Typowa funkcja /tmp
ma następujące uprawnienia, które umożliwiają użytkownikowi azacsnap uruchomienie polecenia azacsnap:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Jeśli nie można zmienić /tmp
uprawnień katalogu, utwórz użytkownika specyficznego dla TMPDIR
użytkownika .
Utwórz element TMPDIR
dla azacsnap
użytkownika:
> 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)
Ważne
Zmiana nazwy użytkownika TMPDIR
musi być trwała przez zmianę profilu użytkownika (np. $HOME/.bashrc
lub $HOME/.bash_profile
). Konieczne byłoby również wyczyszczenie po ponownym uruchomieniu TMPDIR
systemu. Jest to zwykle automatyczne rozwiązanie dla programu /tmp
.
Sprawdzanie plików dziennika, plików wyników i dziennika systemowego
Niektóre z najlepszych źródeł informacji dotyczących badania problemów z modułem AzAcSnap to pliki dziennika, pliki wyników i dziennik systemu.
Plik dzienników
Pliki dziennika AzAcSnap są przechowywane w katalogu skonfigurowanym logPath
przez parametr w pliku konfiguracji AzAcSnap. Domyślna nazwa pliku konfiguracji to azacsnap.json, a wartość logPath
domyślna to ./logs, co oznacza, że pliki dziennika są zapisywane w katalogu ./logs względem miejsca, w którym azacsnap
jest uruchamiane polecenie. Jeśli ustawisz logPath
bezwzględną lokalizację, taką jak /home/azacsnap/logs, azacsnap
zawsze wyprowadza dzienniki do /home/azacsnap/logs, niezależnie od tego, gdzie uruchamiasz azacsnap
polecenie.
Nazwa pliku dziennika jest oparta na nazwie aplikacji, azacsnap
, uruchomieniu polecenia z -c
, takim jak backup
, test
lub details
, i domyślna nazwa pliku konfiguracji, na przykład azacsnap.json. -c backup
Za pomocą polecenia domyślna nazwa pliku dziennika zostanie azacsnap-backup-azacsnap.log zapisana w katalogu skonfigurowanym przez logPath
program .
Ta konwencja nazewnictwa umożliwia znalezienie skojarzonych plików dziennika dla wielu plików konfiguracji, po jednym na bazę danych. Jeśli nazwa pliku konfiguracji jest SID.json, nazwa pliku dziennika podczas korzystania z azacsnap -c backup --configfile SID.json
opcji jest azacsnap-backup-SID.log.
Pliki wyników i dziennik syslog
-c backup
W przypadku polecenia azAcSnap zapisuje dane w pliku *.result. Celem pliku *.result jest zapewnienie wysokiego poziomu potwierdzenia powodzenia/niepowodzenia. Jeśli plik *.result jest pusty, przyjmij błąd. Wszystkie dane wyjściowe zapisane w pliku *.result są również wyjściowe do dziennika systemowego (na przykład /var/log/messages
) przy użyciu logger
polecenia . Nazwa pliku *.result ma taką samą nazwę podstawową jak plik dziennika, aby umożliwić dopasowanie pliku wynikowego z plikiem konfiguracji i plikiem dziennika kopii zapasowej. Plik *.result przechodzi do tej samej lokalizacji co inne pliki dziennika i jest prostym plikiem wyjściowym wiersza.
Przykład pomyślnego ukończenia:
Dane wyjściowe do pliku *.result :
Database # 1 (PR1) : completed ok
Dane wyjściowe do :
/var/log/messages
Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Przykładowe dane wyjściowe, w których wystąpił błąd, a polecenie AzAcSnap przechwyciło błąd:
Dane wyjściowe do pliku *.result :
Database # 1 (PR1) : failed
Dane wyjściowe do :
/var/log/messages
Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Rozwiązywanie problemów z nieudanym poleceniem "test storage"
Polecenie azacsnap -c test --test storage
może nie zostać ukończone pomyślnie.
Sprawdzanie zapór sieciowych
Komunikacja z usługą Azure NetApp Files może zakończyć się niepowodzeniem lub przekroczeniem limitu czasu. Aby rozwiązać problemy, upewnij się, że reguły zapory nie blokują ruchu wychodzącego z systemu z uruchomionym modułem AzAcSnap do następujących adresów i portów TCP/IP:
https://management.azure.com:443
https://login.microsoftonline.com:443
Weryfikowanie plików konfiguracji przy użyciu usługi Cloud Shell
Możesz sprawdzić, czy jednostka usługi jest poprawnie skonfigurowana przy użyciu usługi Cloud Shell w witrynie Azure Portal. Używanie testów usługi Cloud Shell pod kątem prawidłowej konfiguracji, pomijając mechanizmy kontroli sieci w sieci wirtualnej lub maszynie wirtualnej.
W witrynie Azure Portal otwórz sesję usługi Cloud Shell .
Utwórz katalog testowy, na przykład
mkdir azacsnap
.Przejdź do katalogu azacsnap i pobierz najnowszą wersję narzędzia AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Utwórz plik wykonywalny instalatora, na przykład
chmod +x azacsnapinstaller
.Wyodrębnij plik binarny do testowania.
./azacsnapinstaller -X -d .
Wyniki wyglądają podobnie do następujących danych wyjściowych:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Użyj ikony Przekazywania/pobierania usługi Cloud Shell, aby przekazać plik jednostki usługi, azureauth.json i plik konfiguracji AzAcSnap, taki jak azacsnap.json, na potrzeby testowania.
storage
Uruchom test../azacsnap -c test --test storage
Uwaga
Wykonanie polecenia testowego może potrwać około 90 sekund.
Test niepowodzenie w dużym wystąpieniu platformy Azure
Poniższy przykład błędu pochodzi z uruchamiania azacsnap
w dużym wystąpieniu platformy 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)?
Aby rozwiązać ten problem, nie odpowiadaj .yes
Upewnij się, że adres IP magazynu jest poprawny. Adres IP magazynu można potwierdzić zespołowi ds. operacji firmy Microsoft.
Ten błąd występuje zwykle, gdy użytkownik magazynu dużego wystąpienia platformy Azure nie ma dostępu do magazynu bazowego. Aby określić, czy użytkownik magazynu ma dostęp do magazynu, uruchom ssh
polecenie , aby zweryfikować komunikację z platformą magazynu.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
W poniższym przykładzie przedstawiono oczekiwane dane wyjściowe:
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
Test niepowodzenie z usługą Azure NetApp Files
Poniższy przykład błędu pochodzi z uruchamiania z usługą azacsnap
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']
Aby rozwiązać problem z tym błędem:
Sprawdź istnienie pliku jednostki usługi, azureauth.json, zgodnie z ustawieniem w pliku konfiguracji azacsnap.json .
Sprawdź plik dziennika, na przykład logs/azacsnap-test-azacsnap.log, aby sprawdzić, czy plik jednostki usługi ma poprawną zawartość. Następujące dane wyjściowe pliku dziennika pokazują, że klucz tajny klienta jest nieprawidłowy.
[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.
Sprawdź plik dziennika, aby sprawdzić, czy jednostka usługi wygasła. Poniższy przykładowy plik dziennika pokazuje, że klucze tajne klienta wygasły.
[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
Napiwek
Aby uzyskać więcej informacji na temat generowania nowej jednostki usługi, zapoznaj się z sekcją Włączanie komunikacji z magazynem w przewodniku instalowanie narzędzia do tworzenia migawek spójnych na poziomie aplikacja systemu Azure.
Rozwiązywanie problemów z nieudanym poleceniem "test hana"
Polecenie azacsnap -c test --test hana
może nie zostać ukończone pomyślnie.
Nie znaleziono polecenia
Podczas konfigurowania komunikacji z platformą SAP HANA hdbuserstore
program jest używany do tworzenia bezpiecznych ustawień komunikacji. Moduł AzAcSnap wymaga również programu do całej hdbsql
komunikacji z platformą SAP HANA. Te programy są zwykle w folderze /usr/sap/SID>/<SYS/exe/hdb/ lub /usr/sap/hdbclient i muszą znajdować się w pliku użytkownika $PATH
.
W poniższym przykładzie
hdbsql
polecenie nie znajduje się w pliku użytkownika$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
Poniższy przykład tymczasowo dodaje
hdbsql
polecenie do użytkownika$PATH
, co umożliwiaazacsnap
poprawne uruchomienie.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Upewnij się, że instalator dodał lokalizację tych plików do użytkownika $PATH
AzAcSnap .
Uwaga
Aby trwale dodać do pliku użytkownika $PATH
, zaktualizuj plik $HOME/.profile użytkownika.
Nieprawidłowa wartość klucza
Dane wyjściowe tego polecenia pokazują, że klucz połączenia nie został poprawnie skonfigurowany za hdbuserstore Set
pomocą polecenia .
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Aby uzyskać więcej informacji na temat konfigurowania programu , zobacz Get started with AzAcSnap (Rozpoczynanie pracy z modułem hdbuserstore
AzAcSnap).
Test zakończony niepowodzeniem
Podczas sprawdzania poprawności komunikacji z platformą SAP HANA przez uruchomienie testu za pomocą azacsnap -c test --test hana
polecenia może wystąpić następujący błąd:
> 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
Aby rozwiązać problem z tym błędem:
Sprawdź plik konfiguracji, na przykład azacsnap.json dla każdego wystąpienia platformy HANA, aby upewnić się, że wartości bazy danych SAP HANA są poprawne.
Uruchom następujące polecenie, aby sprawdzić, czy
hdbsql
polecenie znajduje się w ścieżce i czy może nawiązać połączenie z serwerem SAP HANA.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
Poniższy przykład przedstawia dane wyjściowe, gdy polecenie działa poprawnie:
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
Błąd niewystarczającego uprawnień
Jeśli uruchomienie azacsnap
programu wyświetla błąd, taki jak * 258: insufficient privilege
, sprawdź, czy użytkownik ma odpowiednie uprawnienia użytkownika bazy danych AZACSNAP skonfigurowane zgodnie z przewodnikiem instalacji. Sprawdź uprawnienia użytkownika za pomocą następującego polecenia:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
Polecenie powinno zwrócić następujące dane wyjściowe:
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"
Błąd może zawierać dodatkowe informacje ułatwiające określenie wymaganych uprawnień platformy SAP HANA, takich jak Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. W takim przypadku postępuj zgodnie z instrukcjami w witrynie SAP Help Portal — GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, która zaleca użycie następującego zapytania SQL w celu określenia szczegółów wymaganych uprawnień:
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","","","",""
W poprzednim przykładzie dodanie DATABASE BACKUP ADMIN
uprawnień do użytkownika AZACSNAP bazy danych SYSTEMDB powinno rozwiązać problem z błędem niewystarczającego poziomu uprawnień.