PostgreSQL Veritabanı Nasıl Yedeklenir ve Geri Yüklenir


Üretim ortamında, PostgreSQL veritabanınız ne kadar büyük veya küçük olursa olsun, düzenli yedekleme, veritabanı yönetiminin önemli bir unsurudur. Bu makalede PostgreSQL veritabanının nasıl yedekleneceğini ve geri yükleneceğini öğreneceksiniz.

PostgreSQL veritabanı sisteminin çalışan bir kurulumuna zaten sahip olduğunuzu varsayıyoruz. Değilse, Linux dağıtımınıza PostgreSQL'i yüklemek için aşağıdaki makalelerimizi okuyun.

Başlayalım…

Tek Bir PostgreSQL Veritabanını Yedekleme

PostgreSQL, veritabanlarını yedeklemenize yardımcı olacak pg_dump yardımcı programını sağlar. Gelecekte kolayca geri yüklenebilecek formatta SQL komutlarını içeren bir veritabanı dosyası oluşturur.

Bir PostgreSQL veritabanını yedeklemek için, veritabanı sunucunuzda oturum açarak başlayın, ardından Postgres kullanıcı hesabına geçin ve pg_dump'u aşağıdaki gibi çalıştırın. (tecmintdb yerine yedeklemek istediğiniz veritabanının adını yazın). Varsayılan olarak çıktı formatı düz metinli bir SQL komut dosyasıdır.

pg_dump tecmintdb > tecmintdb.sql

pg_dump diğer çıktı biçimlerini de destekler. -F seçeneğini kullanarak çıktı biçimini belirtebilirsiniz; burada c özel biçimli arşiv dosyası anlamına gelir, d dizin biçimi arşivi anlamına gelir ve t tar biçimindeki arşiv dosyası anlamına gelir: tüm biçimler pg_restore'a giriş için uygundur.

Örneğin:

pg_dump -F c tecmintdb > tecmintdb.dump
OR
pg_dump -F t tecmintdb > tecmintdb.tar

Çıktıyı dizin çıktı biçiminde boşaltmak için, dosya yerine hedef dizini belirtmek üzere -f işaretini (çıktı dosyasını belirtmek için kullanılır) kullanın. pg_dump tarafından oluşturulacak dizin mevcut olmamalıdır.

pg_dump -F d tecmintdb -f tecmintdumpdir	

Tüm PostgreSQL veritabanlarını yedeklemek için gösterildiği gibi pg_dumpall aracını kullanın.

pg_dumpall > all_pg_dbs.sql

Gösterildiği gibi psql'i kullanarak dökümü geri yükleyebilirsiniz.

psql -f all_pg_dbs.sql postgres

PostgreSQL Veritabanını Geri Yükleme

PostgreSQL veritabanını geri yüklemek için psql veya pg_restore yardımcı programlarını kullanabilirsiniz. psql, pg_dump tarafından oluşturulan metin dosyalarını geri yüklemek için kullanılırken pg_restore, pg_dump< tarafından oluşturulan bir arşivden PostgreSQL veritabanını geri yüklemek için kullanılır. düz metin olmayan biçimlerden birinde (özel, tar veya dizin).

Düz metin dosyası dökümünün nasıl geri yükleneceğinin bir örneği:

psql tecmintdb < tecmintdb.sql

Yukarıda belirtildiği gibi, özel biçimli bir döküm psql için bir komut dosyası değildir, dolayısıyla gösterildiği gibi pg_restore ile geri yüklenmesi gerekir.

pg_restore -d tecmintdb tecmintdb.dump
OR
pg_restore -d tecmintdb tecmintdb.tar
OR
pg_restore -d tecmintdb tecmintdumpdir	

Sıkıştırılmış PostgreSQL Veritabanı Yedekleme

Yedeklediğiniz veritabanı büyükse ve oldukça küçük bir çıktı dosyası oluşturmak istiyorsanız, pg_dump çıktısını gzip gibi bir sıkıştırma aracı aracılığıyla filtrelemeniz gereken sıkıştırılmış bir döküm çalıştırabilirsiniz. veya favorilerinizden herhangi biri:

pg_dump tecmintdb | gzip > tecmintdb.gz

Veritabanı çok büyükse, gösterildiği gibi iş_sayısı tablolarını -j işaretini kullanarak aynı anda boşaltarak paralel olarak boşaltma yapabilirsiniz.

pg_dump -F d -j 5 -f tecmintdumpdir

Paralel döküm seçeneğinin döküm süresini azalttığını ancak diğer yandan veritabanı sunucusu üzerindeki yükü de arttırdığını belirtmekte fayda var.

Uzak PostgreSQL Veritabanlarını Yedekleme

pg_dump normal bir PostgreSQL istemci aracıdır ve uzak veritabanı sunucularındaki işlemleri destekler. pg_dump'un iletişim kurması gereken uzak veritabanı sunucusunu belirtmek için uzak ana bilgisayarı belirtmek üzere -h komut satırı seçeneklerini kullanın ve uzak ana makineyi -p belirtin veritabanı sunucusunun dinlediği bağlantı noktası. Ayrıca, bağlanılacak veritabanı rol adını belirtmek için -U bayrağını kullanın.

10.10.20.10 ve 5432 ve tecmintdb'yi sırasıyla uzak ana makine IP adresiniz veya ana makine adı, veritabanı bağlantı noktası ve veritabanı adınızla değiştirmeyi unutmayın.

pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Uzaktan bağlanan kullanıcının veritabanına erişmek için gerekli ayrıcalıklara sahip olduğundan ve veritabanı sunucusunda uygun veritabanı kimlik doğrulama yönteminin yapılandırıldığından emin olun, aksi takdirde aşağıdaki ekran görüntüsünde gösterilene benzer bir hata alırsınız.

Bir veritabanını doğrudan bir sunucudan diğerine aktarmak da mümkündür; gösterildiği gibi pg_dump ve psql yardımcı programlarını kullanın.

pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Cron İşi Kullanarak PostgreSQL Veritabanını Otomatik Yedekleme

Cron işlerini kullanarak düzenli aralıklarla yedekleme yapabilirsiniz. Cron işleri, bir sunucuda çalıştırılacak çeşitli görevleri planlamak için yaygın olarak kullanılan bir araçtır.

PostgreSQL veritabanı yedeklemesini otomatikleştirmek için bir cron işini aşağıdaki gibi yapılandırabilirsiniz. PostgreSQL süper kullanıcısı olarak aşağıdaki komutları çalıştırmanız gerektiğini unutmayın:

mkdir -p /srv/backups/databases

Daha sonra, yeni bir cron işi eklemek üzere crontab'ı düzenlemek için aşağıdaki komutu çalıştırın.

crontab -e

Aşağıdaki satırı kopyalayıp crontab'ın sonuna yapıştırın. Yukarıda açıklanan döküm formatlarından herhangi birini kullanabilirsiniz.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Dosyayı kaydet ve çık.

Cron hizmeti, bu yeni işi yeniden başlatmaya gerek kalmadan otomatik olarak çalıştırmaya başlayacaktır. Ve bu cron işi her gün gece yarısı çalışacak, yedekleme görevine minimum çözümdür.

Cron işlerinin nasıl planlanacağı hakkında daha fazla bilgi için bkz.: Linux'ta Cron İşleri Nasıl Oluşturulur ve Yönetilir

Şimdilik bu kadar! Verileri yedeklemeyi veritabanı yönetimi rutininizin bir parçası haline getirmek iyi bir fikirdir. Sorularınız veya görüşleriniz için bize ulaşmak için aşağıdaki geri bildirim formunu kullanın. Daha fazla bilgi için pg_dump ve pg_restore referans sayfalarına bakın.