Linux'de PostgreSQL otomatik yedekleme

Örnek olarak Alfresco ECM

Mehmet Demirel

Herhangi bir çevrimiçi işletmenin ortak görevlerinden biri, verilerini tutarlı tutmaktır. Bu görevi başarmak için bir veritabanı yedekleme tekniği kullanılabilir. PostgreSQL, web uygulama dünyasında çok popüler olan yaygın bir DBMS'dir ve bu kılavuzda, Linux'ta PostgreSQL için yedek oluşturma sürecinin nasıl otomatikleştirileceğini ve örnek bir Alfresco ECM web uygulaması olarak göreceğiz.


PostgreSQL'in zaten hedef Linux sisteminizde kurulu olduğunu varsayalım. Kurulum sırasında postgres kullanıcısı otomatik olarak oluşturulacaktır - bu, yedekleme işlemini yönetmek için kullanılacak varsayılan bir PostgreSQL kullanıcısıdır, bu kullanıcı zaten DBMS içerisinde bulunmaktadır ve veritabanının boşaltılması için verilecektir. Postgres kullanıcısının evine geçelim:

su - postgres


Şimdi (varsa) postgres kullanıcısının kök dizininde bir .pgpass dosyası oluşturmalı ve bu kullanıcıya bir veritabanına bağlanmak için izin vermeliyiz. Buna izin vermek için hostname varlığının: port: database: kullaniciadi: şifre formatı mevcut dosyaya eklenmelidir:

printf "localhost:5432:alfresco:postgres:some_password" > .pgpass


Unix sistemlerinde, .pgpass üzerindeki izinlerin dünyaya veya gruba erişimine izin vermemelidir; Bunu chmod 0600 ~ / .pgpass komutu ile yapın. Eğer izinler bundan daha az katı ise, dosya dikkate alınmaz.

Öyleyse kök dizinde olduğumuzu varsayarak bir komut verelim:

chmod 0600 .pgpass


Kullanıcıların postgres izinleri verildikten sonraki ikinci adım, veri tabanının gerçekten yedeklenmesini ve bazı günlüklerin yazdırılmasını (zamanlayıcı zamanlamaları hakkında bilgi içeren) bir sistem kabuğu betiği yazmaktır:

#!/bin/sh
DBBACK=`date +%Y-%m-%d-dbback.sql` 
START_TIME=`date +%Y-%m-%d:%H:%M:%S`
echo "start $START_TIME" >> /opt/alfresco1/postgresql/backups/backup.log
pg_dump -h localhost alfresco -f /opt/alfresco1/postgresql/backups/$DBBACK
END_TIME=`date +%Y-%m-%d:%H:%M:%S`
echo "finish $END_TIME" >> /opt/alfresco1/postgresql/backups/backup.log
exit 0


Bu komut dosyası PostgreSQL pg_dump komutunu kullanır ve backup.sh dosyasında saklar.


Üçüncü adım, ilk adımda verilen izinleri kullanarak üst betiği periyodik olarak çalıştıracak bir zamanlayıcı ayarlamak olacaktır. Crontab, periyodik bir komut dosyası yürütmesini yönetebilen çok kullanışlı bir Linux aracıdır, iyi bilinen crontab gösterimini kullanır. Bu gösterimi kullanarak, pazartesiden cumaya, 03: 00'te başlayarak yedekleme işlemini tanımlayabiliriz (gece, bu tür etkinlikleri gerçekleştirmek için doğru zamandır): 0 3 * * 1,2,3,4,5. Cron kodlu kod çalıştırma dizgisini kullanarak crontab aracına kaydetmeliyiz. Postgres kullanıcısı olduğumuzu farz edersek, çalıştır (-e düzenleme modu, –l liste modu):

crontab -e

ve aşağıdaki dizeyi ekleyin, burada son bölüm çalıştırılacak betiğin yolu:

0 3 * * 1,2,3,4,5 /opt/alfresco1/postgresql/scripts/backup.sh

Özetle: PostgreSQL DBMS ve Linux'ta çalışan zamanlanmış (otomatikleştirilmiş) yedekleme sürecini alıyoruz. Bu yaklaşım, herhangi bir web uygulamasının db verilerini boşaltmak için kullanılabilir; Açık havada. Yedekler, şekilde gösterildiği gibi günlük olarak (Mo'dan Fri'ye) günlük olarak saklanır:


alfresco

Kaynak: http://soft29.info/blog/entry/linux-postgresql-automated-backups-alfresco