2015-09-04 13 views
6
Şu anda pg_dump bütün bir veritabanı yedekleme am

kısmını geri: Ben tüm veritabanını geri yüklemek için psql'i kullanabilirsiniz biliyorumPHP yedekleme tüm PostgreSQL veritabanı ve ardından tablonun

<?php 

include_once("../db.php"); 

$password = getPGPassword(); 
$user = getPGUser(); 
$db = getPGDb(); 

putenv("PGPASSWORD=" . $password); 
$dumpcmd = array("pg_dump", "-i", "-U", escapeshellarg($user), "-F", "c", "-b", "-v", "-f", escapeshellarg('/var/www/backups/backup-'.time().'.sql'), escapeshellarg($db)); 
exec(join(' ', $dumpcmd), $cmdout, $cmdresult); 
putenv("PGPASSWORD"); 

?> 

, ancak herhangi bir yol olduğunu Bir tablonun bir bölümünü seçerek sorguyu kullanarak geri yükleyebilir miyim? Düşündüğüm en basit şey, psql ile geçici bir veritabanı oluşturmak, istenen tablodan satırları okumak, ana seri anahtarına göre çakışan satırları silmek ve tabloya eklemek.

Bunu yapmanın daha iyi bir yolu var mı? Tam sql sorgu işlevine ihtiyacım var. Bence

+2

Neden PHP'yi resmin içine getirdiniz? – e4c5

+0

Kullanıcı arayüzüm ve yönetici arayüzüm var. Kullanıcı arayüzünden veritabanında değişiklik yapabilirsiniz. Yönetici arayüzünden bir PHP betiği kullanarak sadece bir satır geri yüklemek istiyorum, bu yüzden el ile/komut satırından yapılması gerekmiyor. – maxhud

+0

Bu durumda, döküntünüzü 'düz' biçiminde yaparsanız, PHP betiğiniz, sizi ilgilendiren birincil anahtarı bulana ve yalnızca bu satırı ekleyene kadar dosya boyunca yineleyebilmelidir. – e4c5

cevap

1

, en kolay etkili bir çözümdür:

  • ana ve yedek bağlamak, düzenli olarak veya gerektiğinde geri yükleme/dökümü gerçekleştirmek, başka bir makinede bir yedek sunucu yüklemek yabancı veri sarıcı postgres_fdw kullanarak sunucular.

Pratikte, nispeten küçük projeler için bile yedekleme sunucusu zorunludur. Veri çoğaltma, birçok şekilde gerçekleştirilebilir. Döküm/geri yükleme (muhtemelen cron kullanarak) en basitlerinden biridir, ancak yürütme akışı çoğaltması da özellikle zor değildir.

Maliyetleri dikkate almamız gerekiyorsa, yedekleme sunucusu herhangi bir işletim sistemi olan herhangi bir bilgisayar veya dizüstü bilgisayar olabilir. Sanırım bu evde bile kolayca yapılabilir.

Yedekleme sunucusuna sahip olmanın yararları farklıdır. Bazen canlı tasarruflu bir çözümdür.

+0

Harika cevap. Teşekkürler. Neden ayrı bir sunucu kullanmıyordum? – maxhud

İlgili konular