Memecahkan masalah alat Azure Application Consistent Snapshot (AzAcSnap)
Artikel ini menjelaskan cara memecahkan masalah saat menggunakan alat Azure Application Consistent Snapshot (AzAcSnap) untuk Azure NetApp Files dan Azure Large Instance.
Anda mungkin mengalami beberapa masalah umum saat menjalankan perintah AzAcSnap. Ikuti instruksi untuk memecahkan masalah. Jika Anda masih mengalami masalah, buka Permintaan Layanan untuk Dukungan Microsoft dari portal Azure dan tetapkan permintaan ke antrean Instans Besar SAP Hana.
Perintah AzAcSnap tidak akan berjalan
Dalam beberapa kasus, AzAcSnap tidak akan dimulai karena lingkungan pengguna.
Gagal membuat CoreCLR
AzAcSnap ditulis dalam .NET dan CoreCLR adalah mesin eksekusi untuk aplikasi .NET, melakukan fungsi seperti pemuatan kode byte IL, kompilasi ke kode mesin dan pengumpulan sampah. Dalam hal ini ada masalah lingkungan yang memblokir mesin CoreCLR agar tidak dimulai.
Penyebab umumnya adalah izin terbatas atau penyiapan lingkungan untuk pengguna sistem operasi AzAcSnap, biasanya 'azacsnap'.
Kesalahan Failed to create CoreCLR, HRESULT: 0x80004005
dapat disebabkan oleh kurangnya akses tulis untuk pengguna azacsnap ke sistem TMPDIR
.
Catatan
Semua baris perintah yang dimulai dengan #
adalah perintah yang dijalankan sebagai root
, semua baris perintah yang dimulai dijalankan >
sebagai azacsnap
pengguna.
/tmp
Periksa kepemilikan dan izin (perhatikan dalam contoh ini hanya pengguna yang root
dapat membaca dan menulis ke /tmp
):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Umumnya /tmp
memiliki izin berikut, yang akan memungkinkan pengguna azacsnap menjalankan perintah azacsnap:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Jika tidak dimungkinkan /tmp
untuk mengubah izin direktori, buat pengguna tertentu TMPDIR
.
Buat TMPDIR
untuk azacsnap
pengguna:
> 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)
Penting
Mengubah pengguna TMPDIR
harus dibuat permanen dengan mengubah profil pengguna (misalnya $HOME/.bashrc
atau $HOME/.bash_profile
). Juga akan ada kebutuhan untuk membersihkan TMPDIR
pada reboot sistem, ini biasanya otomatis untuk /tmp
.
Memeriksa file log, file hasil, dan syslog
Beberapa sumber informasi terbaik untuk menyelidiki masalah AzAcSnap adalah file log, file hasil, dan log sistem.
File log
File log AzAcSnap disimpan di direktori yang dikonfigurasi oleh logPath
parameter dalam file konfigurasi AzAcSnap. Nama file konfigurasi default adalah azacsnap.json, dan nilai default untuk logPath
adalah ./logs, yang berarti file log ditulis ke dalam direktori ./logs relatif terhadap tempat azacsnap
perintah berjalan. Jika Anda membuat logPath
lokasi absolut, seperti /home/azacsnap/logs, azacsnap
selalu keluarkan log ke / home/azacsnap/logs, di mana pun Anda menjalankan azacsnap
perintah.
Nama file log didasarkan pada nama aplikasi, azacsnap
, perintah yang dijalankan dengan -c
, seperti backup
, , test
atau details
, dan nama file konfigurasi default, seperti azacsnap.json. -c backup
Dengan perintah , nama file log default akan azacsnap-backup-azacsnap.log, ditulis ke dalam direktori yang dikonfigurasi oleh logPath
.
Konvensi penamaan ini memungkinkan beberapa file konfigurasi, satu per database, untuk membantu menemukan file log terkait. Jika nama file konfigurasi SID.json, maka nama file log saat menggunakan azacsnap -c backup --configfile SID.json
opsi azacsnap-backup-SID.log.
File hasil dan syslog
-c backup
Untuk perintah , AzAcSnap menulis ke file *.result. Tujuan dari file *.result adalah untuk memberikan konfirmasi tingkat tinggi tentang keberhasilan/kegagalan. Jika file *.result kosong, maka asumsikan kegagalan. Setiap output yang ditulis ke file *.result juga dihasilkan ke log sistem (misalnya, /var/log/messages
) dengan menggunakan logger
perintah . Nama file *.result memiliki nama dasar yang sama dengan file log untuk memungkinkan pencocokan file hasil dengan file konfigurasi dan file log cadangan. File *.result masuk ke lokasi yang sama dengan file log lainnya dan merupakan file output satu baris sederhana.
Contoh untuk penyelesaian yang berhasil:
Output ke file *.result :
Database # 1 (PR1) : completed ok
Output ke
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Contoh output di mana kegagalan telah terjadi dan AzAcSnap menangkap kegagalan:
Output ke file *.result :
Database # 1 (PR1) : failed
Output ke
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Memecahkan masalah perintah 'penyimpanan uji' yang gagal
Perintah azacsnap -c test --test storage
mungkin tidak berhasil diselesaikan.
Periksa firewall jaringan
Komunikasi dengan Azure NetApp Files mungkin gagal atau waktu habis. Untuk memecahkan masalah, pastikan aturan firewall tidak memblokir lalu lintas keluar dari sistem yang menjalankan AzAcSnap ke alamat dan port TCP/IP berikut:
https://management.azure.com:443
https://login.microsoftonline.com:443
Menggunakan Cloud Shell untuk memvalidasi file konfigurasi
Anda dapat menguji apakah perwakilan layanan dikonfigurasi dengan benar dengan menggunakan Cloud Shell melalui portal Azure. Menggunakan pengujian Cloud Shell untuk konfigurasi yang benar, melewati kontrol jaringan dalam jaringan virtual atau komputer virtual (VM).
Di portal Azure, buka sesi Cloud Shell.
Buat direktori pengujian, misalnya
mkdir azacsnap
.Beralih ke direktori azacsnap , dan unduh versi terbaru AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Buat alat penginstal dapat dieksekusi, misalnya
chmod +x azacsnapinstaller
.Ekstrak biner untuk pengujian.
./azacsnapinstaller -X -d .
Hasilnya terlihat seperti output berikut:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Gunakan ikon Unggah/Unduh Cloud Shell untuk mengunggah file perwakilan layanan, azureauth.json, dan file konfigurasi AzAcSnap, seperti azacsnap.json, untuk pengujian.
Jalankan
storage
pengujian../azacsnap -c test --test storage
Catatan
Perintah uji dapat memakan waktu sekitar 90 detik untuk menyelesaikannya.
Pengujian gagal pada Instans Besar Azure
Contoh kesalahan berikut adalah dari menjalankan azacsnap
pada Instans Besar 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)?
Untuk memecahkan masalah kesalahan ini, jangan merespons yes
. Pastikan alamat IP penyimpanan Anda sudah benar. Anda dapat mengonfirmasi alamat IP penyimpanan dengan tim operasi Microsoft.
Kesalahan biasanya muncul ketika pengguna penyimpanan Azure Large Instance tidak memiliki akses ke penyimpanan yang mendasar. Untuk menentukan apakah pengguna penyimpanan memiliki akses ke penyimpanan, jalankan ssh
perintah untuk memvalidasi komunikasi dengan platform penyimpanan.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
Contoh berikut menunjukkan output yang diharapkan:
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
Pengujian gagal dengan Azure NetApp Files
Contoh kesalahan berikut adalah dari menjalankan azacsnap
dengan 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']
Untuk memecahkan masalah kesalahan ini:
Periksa keberadaan file perwakilan layanan, azureauth.json, seperti yang diatur dalam file konfigurasi azacsnap.json .
Periksa file log, misalnya, log/azacsnap-test-azacsnap.log, untuk melihat apakah file perwakilan layanan memiliki konten yang benar. Output file log berikut menunjukkan bahwa kunci rahasia klien tidak valid.
[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.
Periksa file log untuk melihat apakah perwakilan layanan telah kedaluwarsa. Contoh file log berikut menunjukkan bahwa kunci rahasia klien kedaluwarsa.
[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
Untuk informasi selengkapnya tentang membuat Perwakilan Layanan baru, lihat bagian Mengaktifkan komunikasi dengan Penyimpanan di panduan alat Instal Azure Application Consistent Snapshot.
Memecahkan masalah perintah 'uji hana' yang gagal
Perintah azacsnap -c test --test hana
mungkin tidak berhasil diselesaikan.
Perintah tidak ditemukan
Saat mengatur komunikasi dengan SAP HANA, program hdbuserstore
digunakan untuk membuat pengaturan komunikasi yang aman. AzAcSnap juga memerlukan hdbsql
program untuk semua komunikasi dengan SAP Hana. Program-program ini biasanya berada di bawah /usr/sap/<SID>/SYS/exe/hdb/ atau /usr/sap/hdbclient dan harus berada di pengguna $PATH
.
Dalam contoh berikut,
hdbsql
perintah tidak ada di pengguna$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
Contoh berikut untuk sementara menambahkan
hdbsql
perintah ke pengguna$PATH
, memungkinkanazacsnap
untuk berjalan dengan benar.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Pastikan alat penginstal menambahkan lokasi file-file ini ke pengguna $PATH
AzAcSnap.
Catatan
Untuk menambahkan secara permanen ke pengguna$PATH
, perbarui file $HOME/.profile pengguna.
Nilai untuk kunci tidak valid
Output perintah ini menunjukkan bahwa kunci koneksi belum disiapkan dengan benar dengan hdbuserstore Set
perintah .
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Untuk informasi selengkapnya tentang penyiapan hdbuserstore
, lihat Mulai menggunakan AzAcSnap.
Tes gagal
Saat memvalidasi komunikasi dengan SAP Hana dengan menjalankan pengujian dengan azacsnap -c test --test hana
, Anda mungkin mendapatkan kesalahan berikut:
> 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
Untuk memecahkan masalah kesalahan ini:
Periksa file konfigurasi, misalnya azacsnap.json, untuk setiap instans HANA, untuk memastikan bahwa nilai database SAP Hana sudah benar.
Jalankan perintah berikut untuk memverifikasi bahwa
hdbsql
perintah berada di jalur dan dapat terhubung ke server SAP Hana.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
Contoh berikut menunjukkan output saat perintah berjalan dengan benar:
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
Kesalahan hak istimewa tidak memadai
Jika berjalan azacsnap
menyajikan kesalahan seperti * 258: insufficient privilege
, periksa apakah pengguna memiliki hak istimewa pengguna database AZACSNAP yang sesuai yang disiapkan sesuai panduan penginstalan. Verifikasi hak istimewa pengguna dengan perintah berikut:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
Perintah harus mengembalikan output berikut:
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"
Kesalahan mungkin memberikan informasi lebih lanjut untuk membantu menentukan hak istimewa SAP Hana yang diperlukan, seperti Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. Dalam hal ini, ikuti instruksi di Portal Bantuan SAP - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, yang merekomendasikan penggunaan kueri SQL berikut untuk menentukan detail hak istimewa yang diperlukan:
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","","","",""
Dalam contoh sebelumnya, menambahkan DATABASE BACKUP ADMIN
hak istimewa ke pengguna AZACSNAP SYSTEMDB harus mengatasi kesalahan hak istimewa yang tidak mencukupi.