PostgreSQL için Azure Veritabanı için pg_dump ve pg_restore için en iyi yöntemler - Esnek Sunucu
ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Esnek Sunucu
Bu makalede, pg_dump ve pg_restore hızlandırmaya yönelik seçenekler ve en iyi yöntemler incelenmiştir. Ayrıca pg_restore gerçekleştirmek için en iyi sunucu yapılandırmalarını açıklar.
pg_dump için en iyi yöntemler
pg_dump yardımcı programını kullanarak PostgreSQL için Azure Veritabanı esnek bir sunucu veritabanını betik dosyasına veya arşiv dosyasına ayıklayabilirsiniz. pg_dump kullanarak genel döküm süresini kısaltmak için kullanabileceğiniz komut satırı seçeneklerinden bazıları aşağıdaki bölümlerde listelenmiştir.
Dizin biçimi(-Fd)
Bu seçenek, pg_restore giriş yapabileceğiniz dizin biçiminde bir arşiv oluşturur. Varsayılan olarak çıkış sıkıştırılır.
Paralel işler(-j)
pg_dump ile, paralel işler seçeneğini kullanarak döküm işlerini eşzamanlı olarak çalıştırabilirsiniz. Bu seçenek toplam döküm süresini azaltır, ancak veritabanı sunucusu üzerindeki yükü artırır. CPU, bellek ve IOPS (saniye başına giriş/çıkış işlemleri) kullanımı gibi kaynak sunucu ölçümlerini yakından izledikten sonra paralel bir iş değerine ulaşmanızı öneririz.
Paralel işler seçeneği için bir değer ayarlarken pg_dump aşağıdakileri gerektirir:
- Bağlantı sayısı, paralel iş sayısı +1'e eşit olmalıdır, bu nedenle değeri buna göre ayarladığınızdan
max_connections
emin olun. - Paralel iş sayısı, veritabanı sunucusu için ayrılan vCPU'ların sayısından küçük veya buna eşit olmalıdır.
Sıkıştırma(-Z0)
Bu seçenek, kullanılacak sıkıştırma düzeyini belirtir. Sıfır, sıkıştırma olmadığı anlamına gelir. pg_dump işlemi sırasında sıfır sıkıştırma, performans artışlarına yardımcı olabilir.
Masa şişkinliği ve vakumlama
pg_dump işlemine başlamadan önce tablo vakumlamanın gerekli olup olmadığını göz önünde bulundurun. Tablolardaki şişkinlik, pg_dump kez önemli ölçüde artar. Tablo bloblarını tanımlamak için aşağıdaki sorguyu yürütür:
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;
dead_pct
Bu sorgudaki sütun, canlı tanımlama kümeleri ile karşılaştırıldığında ölü tanımlama grubu yüzdesidir. Bir tablo için yüksek dead_pct
bir değer, tablonun düzgün vakumlanmadığını gösterebilir. Daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı - Esnek Sunucuda otomatik vakum ayarlama.
Tanımladığınız her tablo için aşağıdakileri çalıştırarak el ile vakum analizi gerçekleştirebilirsiniz:
vacuum(analyze, verbose) <table_name>
PITR sunucusu kullanma
Çevrimiçi veya canlı bir sunucuda pg_dump gerçekleştirebilirsiniz. Veritabanı kullanılıyor olsa bile tutarlı yedeklemeler yapar. Diğer kullanıcıların veritabanını kullanmasını engellemez. pg_dump işlemine başlamadan önce veritabanı boyutunu ve diğer iş veya müşteri gereksinimlerini göz önünde bulundurun. Küçük veritabanları, üretim sunucusunda bir pg_dump gerçekleştirmek için iyi adaylar olabilir.
Büyük veritabanları için üretim sunucusundan belirli bir noktaya kurtarma (PITR) sunucusu oluşturabilir ve PITR sunucusunda pg_dump işlemini gerçekleştirebilirsiniz. pitr üzerinde pg_dump çalıştırmak bir soğuk çalıştırma işlemi olabilir. Bu yaklaşımın dezavantajı, gerçek bir üretim sunucusunda çalışan bir pg_dump işlemiyle birlikte gelen ek CPU, bellek ve GÇ kullanımıyla ilgilenmezsiniz. pg_dump bir PITR sunucusunda çalıştırabilir ve pg_dump işlemi tamamlandıktan sonra PITR sunucusunu bırakabilirsiniz.
pg_dump söz dizimi
pg_dump için aşağıdaki söz dizimini kullanın:
pg_dump -h <hostname> -U <username> -d <databasename> -Fd -j <Num of parallel jobs> -Z0 -f sampledb_dir_format
pg_restore için en iyi yöntemler
pg_dump tarafından oluşturulan bir arşivden PostgreSQL için Azure Veritabanı esnek sunucu veritabanını geri yüklemek için pg_restore yardımcı programını kullanabilirsiniz. Genel geri yükleme süresini kısaltmaya yönelik birkaç komut satırı seçeneği aşağıdaki bölümlerde listelenmiştir.
Paralel geri yükleme
Birden çok eşzamanlı iş kullanarak, çok sanal çekirdekli hedef sunucudaki büyük bir veritabanını geri yüklemek için gereken süreyi azaltabilirsiniz. İş sayısı, hedef sunucu için ayrılan vCPU sayısına eşit veya daha az olabilir.
Sunucu parametreleri
Verileri yeni bir sunucuya veya üretim dışı bir sunucuya geri yüklüyorsanız, pg_restore çalıştırmadan önce aşağıdaki sunucu parametrelerini iyileştirebilirsiniz:
work_mem
= 32 MB
max_wal_size
= 65536 (64 GB)
checkpoint_timeout
= 3600 #60min
maintenance_work_mem
= 2097151 (2 GB)
autovacuum
= kapalı
wal_compression
= açık
Geri yükleme tamamlandıktan sonra, tüm bu parametrelerin iş yükü gereksinimlerine göre uygun şekilde güncelleştirildiğinden emin olun.
Not
Yukarıdaki önerileri yalnızca yeterli bellek ve disk alanı varsa izleyin. 2, 4 veya 8 sanal çekirdek içeren küçük bir sunucunuz varsa, parametreleri buna göre ayarlayın.
Dikkat edilecek diğer noktalar
- pg_restore çalıştırmadan önce yüksek kullanılabilirliği (HA) devre dışı bırakın.
- Geri yükleme tamamlandıktan sonra geçirilen tüm tabloları analiz edin.
pg_restore söz dizimi
pg_restore için aşağıdaki söz dizimini kullanın:
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
-Fd
: Dizin biçimi.-j
: İş sayısı.-C
: Veritabanının kendisini oluşturmak için çıkışı bir komutla başlatın ve sonra yeniden bağlanın.
Bu söz diziminin nasıl görünebileceğine yönelik bir örnek aşağıda verilmiştir:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
Sanal makineyle ilgili dikkat edilmesi gerekenler
Tercihen hem hedef hem de kaynak sunucularınızın bulunduğu aynı bölgede ve kullanılabilirlik alanında bir sanal makine oluşturun. Veya en azından sanal makineyi kaynak sunucuya veya hedef sunucuya daha yakın bir şekilde oluşturun. Yüksek performanslı yerel SSD ile Azure Sanal Makineler kullanmanızı öneririz.
SKU'lar hakkında daha fazla bilgi için bkz: