Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel
Artikel ini mengulas opsi dan praktik terbaik untuk mempercepat pg_dump dan pg_restore. Ini juga menjelaskan konfigurasi server terbaik untuk melakukan pg_restore.
Praktik terbaik untuk pg_dump
Anda dapat menggunakan utilitas pg_dump untuk mengekstrak database server fleksibel Azure Database for PostgreSQL ke dalam file skrip atau file arsip. Beberapa opsi baris perintah yang dapat Anda gunakan untuk mengurangi waktu cadangan keseluruhan dengan menggunakan pg_dump tercantum di bagian berikut.
Format direktori(-Fd)
Opsi ini menghasilkan arsip format direktori yang dapat Anda masukkan ke pg_restore. Secara default, output dikompresi.
Pekerjaan paralel(-j)
Dengan pg_dump, Anda dapat menjalankan pekerjaan cadangan secara bersamaan dengan menggunakan opsi pekerjaan paralel. Opsi ini mengurangi total waktu cadangan tetapi meningkatkan beban pada server database. Sebaiknya Anda tiba di nilai pekerjaan paralel setelah memantau metrik server sumber dengan cermat, seperti penggunaan CPU, memori, dan IOPS (operasi input/output per detik).
Saat Anda menetapkan nilai untuk opsi pekerjaan paralel, pg_dump memerlukan hal berikut:
- Jumlah koneksi harus sama dengan jumlah pekerjaan paralel +1, jadi pastikan untuk mengatur nilai yang
max_connections
sesuai. - Jumlah pekerjaan paralel harus kurang dari atau sama dengan jumlah vCPU yang dialokasikan untuk server database.
Kompresi(-Z0)
Opsi ini menentukan tingkat kompresi yang akan digunakan. Nol berarti tidak ada pemadatan. Pemadatan nol selama proses pg_dump dapat membantu peningkatan performa.
Tabel mengapung dan menyedot menyedot menyedot
Sebelum Anda memulai proses pg_dump, pertimbangkan apakah vakum tabel diperlukan. Kembung pada tabel secara signifikan meningkat pg_dump kali. Jalankan kueri berikut untuk mengidentifikasi blob tabel:
select schemaname,relname,n_dead_tup,n_live_tup,round(n_dead_tup::float/n_live_tup::float*100) dead_pct,autovacuum_count,last_vacuum,last_autovacuum,last_autoanalyze,last_analyze from pg_stat_all_tables where n_live_tup >0;
Kolom dead_pct
dalam kueri ini adalah persentase tuple mati jika dibandingkan dengan tuple langsung. Nilai tinggi dead_pct
untuk tabel mungkin menunjukkan bahwa tabel tidak dikosongkan dengan benar. Untuk informasi selengkapnya, lihat Penyetelan autovacuum di server fleksibel Azure Database for PostgreSQL.
Untuk setiap tabel yang Anda identifikasi, Anda dapat melakukan analisis vakum manual dengan menjalankan hal berikut:
vacuum(analyze, verbose) <table_name>
Menggunakan server PITR
Anda dapat melakukan pg_dump di server online atau langsung. Ini membuat cadangan yang konsisten bahkan jika database sedang digunakan. Ini tidak memblokir pengguna lain untuk menggunakan database. Pertimbangkan ukuran database dan kebutuhan bisnis atau pelanggan lainnya sebelum Anda memulai proses pg_dump. Database kecil mungkin kandidat yang baik untuk melakukan pg_dump di server produksi.
Untuk database besar, Anda dapat membuat server pemulihan titik waktu (PITR) dari server produksi dan melakukan proses pg_dump di server PITR. Menjalankan pg_dump pada PITR akan menjadi proses cold run. Trade-off untuk pendekatan ini adalah Anda tidak akan khawatir dengan pemanfaatan CPU, memori, dan IO tambahan yang dilengkapi dengan proses pg_dump yang berjalan di server produksi aktual. Anda dapat menjalankan pg_dump di server PITR lalu menjatuhkan server PITR setelah proses pg_dump selesai.
Sintaks untuk pg_dump
Gunakan sintaks berikut untuk pg_dump:
pg_dump -h <hostname> -U <username> -d <databasename> -Fd -j <Num of parallel jobs> -Z0 -f sampledb_dir_format
Praktik terbaik untuk pg_restore
Anda dapat menggunakan utilitas pg_restore untuk memulihkan database server fleksibel Azure Database for PostgreSQL dari arsip yang dibuat oleh pg_dump. Beberapa opsi baris perintah untuk mengurangi waktu pemulihan keseluruhan tercantum di bagian berikut.
Pemulihan paralel
Dengan menggunakan beberapa pekerjaan bersamaan, Anda dapat mengurangi waktu yang diperlukan untuk memulihkan database besar di server target multi-vCore. Jumlah pekerjaan dapat sama dengan atau kurang dari jumlah vCPU yang dialokasikan untuk server target.
Parameter server
Jika Anda memulihkan data ke server baru atau server nonproduksi, Anda dapat mengoptimalkan parameter server berikut sebelum menjalankan pg_restore:
work_mem
= 32 MB
max_wal_size
= 65536 (64 GB)
checkpoint_timeout
= 3600 #60min
maintenance_work_mem
= 2097151 (2 GB)
autovacuum
= nonaktif
wal_compression
= pada
Setelah pemulihan selesai, pastikan bahwa semua parameter ini diperbarui dengan tepat sesuai persyaratan beban kerja.
Catatan
Ikuti rekomendasi sebelumnya hanya jika ada cukup ruang memori dan disk. Jika Anda memiliki server kecil dengan 2, 4, atau 8 vCore, atur parameter yang sesuai.
Pertimbangan lain
- Nonaktifkan ketersediaan tinggi (HA) sebelum menjalankan pg_restore.
- Analisis semua tabel yang dimigrasikan setelah pemulihan selesai.
Sintaks untuk pg_restore
Gunakan sintaks berikut untuk pg_restore:
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
-
-Fd
: Format direktori. -
-j
: Jumlah pekerjaan. -
-C
: Mulai output dengan perintah untuk membuat database itu sendiri lalu sambungkan kembali ke dalamnya.
Berikut adalah contoh bagaimana sintaks ini mungkin muncul:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
Pertimbangan komputer virtual
Buat komputer virtual di wilayah dan zona ketersediaan yang sama, sebaiknya tempat Anda memiliki server target dan sumber Anda. Atau, minimal, buat komputer virtual lebih dekat ke server sumber atau server target. Kami menyarankan agar Anda menggunakan Azure Virtual Machines dengan SSD lokal berkinerja tinggi.
Untuk informasi selengkapnya tentang SKU, lihat:
Contoh
Berikut adalah beberapa contoh cara menggunakan pg_dump
dan pg_restore
dengan praktik terbaik yang dibahas di atas.
Menggunakan pg_dump
dengan format direktori dan pekerjaan paralel
pg_dump -h <server>.postgres.database.azure.com -U <username> -d <database> \
-Fd -j 4 -f /backups/mydb_dump_dir
Penjelasan:
-
-Fd
: Cadangan dalam format direktori, yang diperlukan untuk pemulihan paralel. -
-j 4
: Menggunakan 4 pekerjaan paralel untuk mempercepat dump. -
-f
: Menentukan direktori keluaran.
Menggunakan pg_dump
tanpa kompresi untuk performa
pg_dump -h <server>.postgres.database.azure.com -U <username> -d <database> \
-F c -Z 0 -f /backups/mydb_nocompress.dump
Penjelasan:
-
-F c
: Format kustom. -
-Z 0
: Menonaktifkan kompresi untuk meningkatkan performa.
Menggunakan pg_restore
dengan observasi paralel
pg_restore -h <server>.postgres.database.azure.com -U <username> -d <target_database> \
-Fd -j 4 /backups/mydb_dump_dir
Penjelasan:
-
-Fd
: Cocok dengan format direktori yang digunakan dalam cadangan. -
-j 4
: Menggunakan 4 pekerjaan paralel untuk mempercepat pemulihan.
Konten terkait
- Mengonfigurasi penyetelan cerdas untuk server fleksibel Azure Database for PostgreSQL
- Panduan pemecahan masalah untuk server fleksibel Azure Database for PostgreSQL
- Penyetelan autovacuum pada Azure Database for PostgreSQL server fleksibel
- Memecahkan masalah pemanfaatan IOPS tinggi di server fleksibel Azure Database for PostgreSQL
- Memecahkan masalah pemanfaatan CPU tinggi di server fleksibel Azure Database for PostgreSQL
- Wawasan Performa Kueri di server fleksibel Azure Database for PostgreSQL