it-swarm-tr.com

Komut satırını kullanarak bir postgres yedek dosyasını geri yükleme?

Postgresql için yeniyim ve yerel olarak pgadmin3 kullanıyorum. Ancak uzak sunucuda böyle bir lüksüm yok.

Veritabanının yedeğini zaten oluşturdum ve kopyaladım, ancak yedeği komut satırından geri yüklemenin bir yolu var mı? Yalnızca GUI veya pg_dumps ile ilgili şeyler görüyorum, bu yüzden eğer biri bana bu konuda nasıl gideceğimi söyleyebilirse, müthiş olurdu!

176
TwixxyKit

Döküm dosyasını nasıl oluşturduğunuza bağlı olarak bakmanız gereken iki araç vardır.

İlk referans kaynağınız pg_dump(1) man sayfası olmalıdır. Diyor ki:

Döküntüler komut dosyası veya .__ ile çıkarılabilir. arşiv dosyası biçimleri. Senaryo dökümü. SQL .__ içeren düz metin dosyaları. rekonstrüksiyonu için gerekli komutlar. devletin veri tabanıydı. zamanda kaydedildi. .__ belirleyin. böyle bir komut dosyasından geri yükleyin, onu besleyin psql'in (1). Script dosyaları kullanılabilir. Hatta veritabanını yeniden inşa etmek. diğer makinelerde ve diğer mimarileri; bazı değişiklikler ile. diğer SQL veritabanı ürünlerinde bile.

Alternatif arşiv dosyası formatları. pg_restore (1) to .__ ile kullanılmalıdır. veritabanını yeniden oluşturun. İzin veriyorlar. pg_restore, ne .__ konusunda seçici olmak için. geri yüklendi, hatta geri yüklenmeden önceki öğeler. arşiv dosyası biçimleri için tasarlanmıştır. mimariler arasında taşınabilir olun.

Bu yüzden atılma şekline bağlı. Muhtemelen mükemmel file(1) komutunu kullanarak çözebilirsiniz - ASCII metninden ve/veya SQL'den bahsediyorsa, psql ile restore edilmelidir, aksi takdirde muhtemelen pg_restore kullanmalısınız.

Geri yüklemek oldukça kolaydır:

psql -U <username> -d <dbname> -1 -f <filename>.sql

veya

pg_restore -U <username> -d <dbname> -1 <filename>.dump

İlgili sayfalarına göz atın - geri yüklemenin nasıl çalıştığını etkileyen birkaç seçenek var. Dökümlerin nasıl üretildiğine bağlı olarak geri yüklemeden önce "canlı" veritabanlarınızı temizlemeniz veya geri yüklemeden önce template0'dan (bir yorumda belirtildiği gibi) yeniden oluşturmanız gerekebilir.

223

yedek oluştur

pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f 
"/usr/local/backup/10.70.0.61.backup" old_db

-F c özel formattır (sıkıştırılmış ve -j N ile paralel olarak yapabiliyor) -b blob'lar içeriyor, -v de ayrıntılı

yedeklemeden geri yükle

pg_restore -h localhost -p 5432 -U postgres -d old_db -v 
"/usr/local/backup/10.70.0.61.backup"

ayarlamak için _ -h localhost - seçenek

131
pilot

Veritabanlarında tam ayrıcalıklara sahip olmak için postgres olarak oturum açmanız gerekebilir.

su - postgres
psql -l                      # will list all databases on Postgres cluster

pg_dump/pg_restore

  pg_dump -U username -f backup.dump database_name -Fc 

anahtar -F yedekleme dosyasının biçimini belirtin:

  • c, sıkıştırılmış ve en küçük yedek dosya boyutuyla sonuçlanan özel PostgreSQL formatını kullanır
  • Her dosyanın bir tablo olduğu dizin için d
  • TAR arşivi için t (özel formattan daha büyük)
  • -h/--Host Sunucunun üzerinde çalıştığı makinenin Ana Bilgisayar adını belirtir.
  • -W/--password Bir veritabanına bağlanmadan önce pg_dump öğesini Parola İsteme zorla 

yedeklemeyi geri yükle:

   pg_restore -d database_name -U username -C backup.dump

-C parametresi verileri içe aktarmadan önce veritabanı oluşturmalıdır. İşe yaramazsa her zaman örneğin veritabanı oluşturabilirsiniz. komut ile (kullanıcı postgres veya veritabanları oluşturma haklarına sahip olan diğer hesap olarak) createdb db_name -O owner

pg_dump/psql

Argümanı belirtmemeniz durumunda -F default düz metin SQL formatı kullanıldı (veya -F p ile). O zaman pg_restore kullanamazsınız. Verileri psql ile alabilirsiniz.

yedekleme:

pg_dump -U username -f backup.sql database_name

geri: 

psql -d database_name -f backup.sql
58
Tombart

POSTGRESQL 9.1.12

DÖKÜMÜ:

pg_dump -U user db_name > archive_name.sql

kullanıcı şifresini girin ve enter tuşuna basın.

RESTORE:

psql -U user db_name < /directory/archive.sql

kullanıcı şifresini girin ve enter tuşuna basın.

40
Natan Medeiros

Aşağıda veritabanını geri yüklemek için kullandığım pg_dump sürümüm:

pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup

veya psql kullanın:

psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup

nerede -h Host, -p port, -u login kullanıcı adı, -d veritabanının adı

25
Yahor M

GZIP ile yedekleme ve geri yükleme

Daha büyük boyutlu veritabanı için bu çok iyi

yedek

pg_dump -U user -d mydb | gzip > mydb.pgsql.gz

resore

gunzip -c mydb.pgsql.gz | psql dbname -U user

https://www.postgresql.org/docs/9.1/static/backup-dump.html

9
Sarath Ak
Backup:  $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}
7
Aaron Lelevier

1. terminali açın.

2. veritabanını aşağıdaki komutu kullanarak yedekle

posta kutularınız - /opt/PostgreSQL/9.1/bin/

kaynak veritabanı sunucunuz - 192.168.1.111

yedekleme dosyanızın yeri ve adı - /home/dinesh/db/mydb.backup

kaynak db adınız - veritabanım

/opt/PostgreSQL/9.1/bin/pg_dump - '192.168.1.111' - son 5432 - kullanıcı adı "postgres" - şifre yok - özel biçim - etiketler - dosya "/ ana sayfa/dinesh/db /mydb.backup "" mydatabase "

3.resit mydb.backup dosyasını hedefe kaydedin.

hedef sunucunuz - localhost

hedef veritabanı adınız - veritabanı

yedeği geri yüklemek için veritabanı oluşturun.

/opt/PostgreSQL/9.1/bin/psql -h 'localhost' -p 5432 -U postgres -c "CREATE DATABASE mydatabase"

yedeklemeyi geri yükle.

/opt/PostgreSQL/9.1/bin/pg_restore - 'localhost' - son 5432 - kullanıcı adı "postgres" --dbname "mydatabase" - no-password --clean "/ home/dinesh/db/mydb. "yedek

6
Dinesh-SriLanka

Aşağıdaki linkte de belirtildiği gibi, döküm dosyasını geri yüklemek için psql komutunu kullanabilirsiniz:

https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE

psql dbname < infile

eğer kullanıcı adınızı ayarlamanız gerekiyorsa, sadece aşağıdaki gibi komuttan sonra kullanıcı adını ekleyin:

psql dbname < infile username
2
Maryam Saeidi

Aşağıdaki komutların size yardımcı olup olmadığını görmek için deneyin:

Sudo su - yourdbuser
psql
\i yourbackupfile
2
Mehmet Ali

Pg_dump kullanarak bir yedekleme oluşturursanız, aşağıdaki şekilde kolayca geri yükleyebilirsiniz:

  1. Komut satırı penceresini aç
  2. Postgres bin klasörüne gidin. Örneğin: cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
  3. Veritabanınızı geri yüklemek için komutu girin. For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
  4. Postgres kullanıcınız için şifre girin
  5. Geri yükleme işlemini kontrol edin
2
Nick Taylor

Yedek bir SQL dosyanız varsa, kolayca geri yükleyebilirsiniz. Sadece aşağıda verilen talimatları izleyin.

1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example:  cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql 

Gerekirse postgres kullanıcınız için şifre yazın ve Postgres'in çalışmasını sağlayın. Ardından geri yükleme işlemini kontrol edebilirsiniz.

1
Omar Hasan

Bir postgres yedek dosyasını geri yüklemek, ilk önce yedeklemeyi nasıl aldığınıza bağlıdır.

Eğer pg_dump -F c veya -F d ile kullandıysanız, pg_restore kullanmanız gerekir, yoksa sadece kullanabilirsiniz. 

psql -h localhost -p 5432 -U posta defterleri <yedekleme dosyası

Postgres veritabanlarını yedeklemenin ve geri yüklemenin 9 yolu

1
Prashant Kumar

1) psql terminalini açın.

2) Dump dosyasını açın/açın.

3) Boş bir veritabanı oluşturun.

4) .dump dosyasını geri yüklemek için aşağıdaki komutu kullanın

<database_name>-# \i <path_to_.dump_file>
1
Vaibhav Desai

Bu benim için çalıştı:

pg_restore --verbose --clean --no-acl --no-owner --Host = localhost -dbname = db_name - kullanıcı adı = kullanıcı adı son.dump

1
Franz

deneyin:

pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
1

Verilerinizi yedeklemek veya verileri bir yedekten geri yüklemek istiyorsanız, aşağıdaki komutları çalıştırabilirsiniz:

1 Verilerinizin yedeğini almak için, C:\programfiles\postgres\10\bin\ gibi postgres\bin\dizininize gidin ve ardından aşağıdaki komutu yazın - pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup

2 Bir yedeklemeden veri geri yüklemek için, C:\programfiles\postgres\10\bin\ gibi postgres\bin\dizininize gidin ve sonra aşağıya yazınız - C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup

Lütfen yedekleme dosyasının var olduğundan emin olun.

Pg_dump komutunu çalıştırarak kimlik doğrulama sorunları yaşadım, bu yüzden döküm dosyamı taşıdım

mv database_dump /tmp

temp dizinine ve sonra koştu

su -u postgres
cd /tmp
pg_restore database_dump

Büyük bir veritabanı dökümü varsa, yalnızca geçerli kullanıcınızın ve postgres kullanıcısının erişebileceği ve veritabanı dökümü dosyasına buna koyabileceği başka bir dizin oluşturmak isteyebilirsiniz.

0
user1876508

bunu dene:

psql -U <username> -d <dbname> -f <filename>.sql

DB psql dosyasını .sql dosyasından geri yükle

0
Faysal Maqsood