PostgreSQL
Bir PostgreSQL veritabanını yedeklemek ve geri yüklemek, herhangi bir sistem yöneticisi için önemli bir görevdir. Bu görevi kolaylaştıran psql yardımcı programları pg_dump ve pg_restore sayesinde bu işlem çok kısa bir sürede hallolabiliyor.
Bu yardımcı programları kullanarak sistem yöneticileri, yerel olarak veya uzaktan sürekli bir yedekleme oluşturabilir.
PostgreSQL, yaygın olarak kullanılan ilişkisel bir veritabanı sistemidir. Açık kaynaklıdır ve görevleri hızlı bir şekilde gerçekleştirmek için çok çeşitli araçlar sunar.
pg_dump
pg_dumpbir PostgreSQL veritabanını komutudur. Veritabanını bir komut dosyasına veya başka bir arşiv dosyasına çıkarır. Bu yardımcı program veritabanlarını yedeklemek içindir. Yardımcı program, veritabanı aynı anda kullanılıyor olsa bile tutarlı yedeklemeler yapar. Okuyucular, yazarlar ve diğer kullanıcılar veritabanını kullanırken engellenmeyecektir pg_dump.
pg_restore
pg_restore — pg_dump tarafından oluşturulan bir arşiv dosyasından bir PostgreSQL veritabanını geri yüklemeye yarayan psql yardımcı programıdır. İki kodunda detaylı kullanımı aşağıdaki kodlarda gösterilmiştir.
NOT: Aşağıdaki kodlar docker container ile yedekleme işlemi için değildir.
pg_dump [connection-option…] [option…] [dbname]
pg_dump örnekleri:
# testdb veritabanını sql biçiminde kaydetmek
pg_dump testdb > db.sql
# testdb veri tabanını tar biçiminde yedeklemek
pg_dump -U postgres -F c testdb > testdb.tar
# testdb veri tabanını bir dizin biçiminde yedeklemek
pg_dump -U postgres -F d testdb > db1_backup
pg_restore örnekleri
pg_restore -U postgres -Ft -d db < db.tar
pg_dumpall örnekleri:
# dumpall tüm veritabanını yedekliyecektir.
pg_dumpall -f dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
#dump_date kullanımında cihazın tarih ve saat bilgilerini alarak dosya ismi olarak atar bu sayede karışıklılık olmadan yedekleme işlemini gerçekleştirebilirsiniz
PostgreSQL veritabanını Docker tarafında yedeğini almanın bir çok yolu vardır. Bu yazıda en az uğraştırıcı olan ve ilerde otomatik bir şekilde günlük yedek almak istersenin kullanabileceğiz kodları paylaşacağım. Otomatik günlük veritabanı yedeği içinde bir çok yol bulunmaktadır. Yine en basit yöntem olarak yazacağınız script için cron job oluşturabilirsiniz. Bu yazıda Backup almak için bir bash dosyasıda kullanacağız.
Docker ile psql yedeği alma ve yedeği yükleme:
# pg_dumpall (yedeği alma)
# container name postgreSQL container ismidir. container ismini öğrenmek için:
# docker images komutunu kullanabilirsiniz.
docker exec -t container_Name pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
# pg_restore (veri tabanı yedeği yükleme)
cat dump.sql | docker exec -i container_Name psql -U postgres
Restore işlemi CLI tarafında yazdığımız kodlardan biraz farklı bununsebebi Docker.
Bash dosyası:
#! /usr/bin/env bash
CONTAINER_NAME=PostgreSQLContainerName
# pg_dumpall için database ismi gerekmiyor
DATABASE_NAME=Your_db
if [ -z $CONTAINER_NAME ]
then
echo "Usage: $0 [container name] [database name]"
exit 1
fi
if [ -z $DATABASE_NAME ]
then
echo "Usage: $0 [container name] [database name]"
exit 1
fi
set -e
set -o pipefail
# backups yedek klasörünü oluşturma
mkdir -p "./backups"
cd backups
# PostgreSQL veri tabanı yedeği oluşturma
# bu satırda pg_dump kullanıp istediğiniz veri tabanın yedekleyebilirsiniz
docker exec -t "$CONTAINER_NAME" pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
echo ""
echo "Exporting file from container..."
echo "Done!"
Top comments (0)