Czekam na skopiowanie produkcji bazy danych PostgreSQL do serwera programistycznego. Jaki jest najszybszy i najłatwiejszy sposób na zrobienie tego?Kopiowanie bazy danych PostgreSQL na inny serwer
Odpowiedz
Nie trzeba utworzyć plik pośredni. Można zrobić
pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
lub
pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
użyciu psql
lub pg_dump
aby połączyć się ze zdalnym hostem.
W przypadku dużej bazy danych lub wolnego połączenia zrzucanie pliku i przesyłanie skompresowanego pliku może być szybsze.
Jak Kornel powiedział, że nie ma potrzeby, aby zrzucić do pliku pośredniego, jeśli chcesz pracować sprężonego można użyć sprężonego tunel
pg_dump -C dbname | bzip2 | ssh [email protected] "bunzip2 | psql dbname"
lub
pg_dump -C dbname | ssh -C [email protected] "psql dbname"
ale to rozwiązanie wymaga również aby uzyskać sesję na obu końcach.
pg_dump the_db_name > the_backup.sql
Następnie skopiuj kopię zapasową na serwerze rozwoju, przywracania z:
psql the_new_dev_db < the_backup.sql
Ktoś powiedział mi, że może to być problematyczne - problemy z uprawnieniami powodujące obumieranie lub przywracanie po naciśnięciu spustu ? –
@rmbarnes: Jeśli występują problemy - muszą zostać naprawione. Bez szczegółowej wiedzy, co ten "Ktoś" zrobił - nikt nie może potwierdzić ani odrzucić tego twierdzenia. –
Użyj flagi --no-owner z pg_dump. Pomija to problem i pierwsza edycja tego wpisu go użyła - ale wtedy pomyślałem, że możesz potrzebować dokładniejszej wierności oryginalnej bazie danych. – unmounted
Zastosowanie pg_dump, a później psql lub pg_restore - w zależności od tego, czy zdecydujesz -Fp lub opcje -Fc do pg_dump.
Przykład użycia:
ssh production
pg_dump -C -Fp -f dump.sql -U postgres some_database_name
scp dump.sql development:
rm dump.sql
ssh development
psql -U postgres -f dump.sql
Walczyłem sporo i ostatecznie metodę, która pozwoliła mi zrobić to praca z Rails 4 brzmiała:
na starym serwerze
sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql
musiałem użyć użytkownikowi postgres Linux, aby utworzyć zrzut. również musiałem użyć -c, aby wymusić utworzenie bazy danych na nowym serwerze. --inserts mówi, że do korzystania z INSERT (składni), które w przeciwnym razie nie będzie pracować dla mnie :(
następnie, na nowym serwerze, Simpy:
sudo su - postgres
psql new_database_name < dump.sql
przenieść plik dump.sql pomiędzy serwerem Po prostu użyłem "kota" do wydrukowania zawartości, a następnie "nano", aby odtworzyć ją, kopiując zawartość.
Również ROLA, której używałem w dwóch bazach danych, była inna, więc musiałem znaleźć - wymienić wszystkich właścicieli nazwa na zrzutce:
pg_basebackup
wydaje się być Lepszy sposób robienia tego teraz, szczególnie w przypadku dużych baz danych.
Czy możesz podać więcej szczegółów w swojej odpowiedzi, na przykład? – Magnilex
Działa to tylko wtedy, gdy oba urządzenia mają te same wersje PG. –
Szanse są niewielkie, aby użyć innej wersji bazy danych do programowania i produkcji. Ostatnim razem miałem nieprzyjemną rozmowę z jednym z moich kolegów z drużyny, gdy próbowała zgłosić problem, że jakiś kod nie działa z PG 9.6, podczas gdy w tym czasie używaliśmy 9,5 w produkcji. Podstawowa kopia zapasowa jest znacznie szybsza. Następnie pg_upgrade jest sposobem, aby przejść w razie potrzeby. – Zorg
Uruchom tę komendę, wpisując nazwę bazy danych, którą chcesz wykonać, aby pobrać zrzut DB.
pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
eg. pg_dump -U postgres mydbname -f mydbnamedump.sql
Teraz skopiuj ten plik zrzutu do zdalnego komputera, na którym chcesz skopiować DB.
eg. scp mydbnamedump.sql [email protected]:~/some/folder/
Na zdalnym komputerze uruchom następującą komendę w ~/some/folder, aby przywrócić DB.
psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}
eg. psql -U postgres -d mynewdb -f mydbnamedump.sql
Jeśli szukasz migrować między wersjami (np aktualizowania postgres i mają 9.1 działa na localhost: 5432 i 9.3 uruchomiony na localhost: 5434) można uruchomić:
pg_dumpall -p 5432 -U myuser91 | psql -U myuser94 -d postgres -p 5434
Sprawdź migration docs.
Jestem poproszony o hasło (myuser91/postgres) - kilka razy, czy jest jakiś sposób, że muszę wprowadzić hasło tylko raz? –
@MartinWeber Utwórz plik PNG zgodnie z tym dokumentem https://www.postgresql.org/docs/9.4/static/libpq-pgpass.html –
Pozwól mi udostępnić skrypt powłoki Linux, aby skopiować dane z twojego serwera z jednego serwera na inny serwer PostgreSQL.
Reference taken from this blog:
Linux Bash Shell Script dla migracji danych pomiędzy serwerami PostgreSQL:
#!/bin/bash
psql \
-X \
-U user_name \
-h host_name1 \
-d database_name \
-c "\\copy tbl_Students to stdout" \
| \
psql \
-X \
-U user_name \
-h host_name2 \
-d database_name \
-c "\\copy tbl_Students from stdin"
Ja tylko migracja danych; proszę utworzyć pustą tabelę na docelowym/drugim serwerze bazy danych.
To jest skrypt narzędziowy. Co więcej, możesz zmodyfikować skrypt pod kątem użycia ogólnego, np. Dodając parametry dla nazwa_hosta, nazwa_bazy_danych, nazwa_tabeli i inne
- 1. Serwer SQL Kopiowanie tabel z jednej bazy danych na inną
- 2. Przekazywanie połączenia PostgreSQL przez inny serwer
- 3. Dokumentacja bazy danych PostgreSQL
- 4. Kopiowanie bazy danych w postgresie
- 5. Przywracanie bazy danych Postgresql
- 6. Przenieś RavenDb na inny serwer
- 7. MySQL WYBRAĆ W OUTFILE na inny serwer?
- 8. Serwer SQL - kopiowanie danych z tabeli pomostowej
- 9. Dwóch właścicieli tej samej bazy danych PostgreSQL
- 10. Dowolne narzędzie do konwersji bazy danych SQLite na serwer sql?
- 11. Przekierowanie subdomeny na inny serwer
- 12. Kopiowanie z jednego rejestru na inny
- 13. Nie można skopiować bazy danych postgresql na nowy serwer z błędem [nierozpoznany parametr "row_security"]
- 14. ROR zmiana bazy danych aplikacji z SQLite na PostgreSQL
- 15. Przenoszenie migawek Cassandra na inny dysk/serwer/centrum danych
- 16. Kopiowanie danych z jednej bazy danych do drugiej w Oracle
- 17. Tworzenie kopii bazy danych w PostgreSQL
- 18. PostgreSQL: Tworzenie schematu w konkretnej bazy danych
- 19. Serwer SQL: Importowanie bazy danych z .mdf?
- 20. importu bazy danych PostgreSQL bez ról
- 21. Ułożenie próbki z bazy danych - Postgresql
- 22. Uzyskaj nazwę właściciela bazy danych w PostgreSql
- 23. Testowanie bazy danych w python, postgresql
- 24. Postgresql: Merge 2 podobne bazy danych
- 25. Jak mogę odkryć strukturę bazy danych PostgreSQL?
- 26. Jak zmienić właściciela bazy danych PostgreSql?
- 27. Właściciel bazy danych PostgreSQL nie może uzyskać dostępu do bazy danych - "Nie znaleziono relacji".
- 28. Czy jest możliwe utworzenie roli bazy danych na Heroku Postgresql?
- 29. Prosty sposób na zresetowanie bazy danych Django PostgreSQL?
- 30. Szybszy sposób na skopiowanie bazy danych PostgreSQL (lub najlepszego sposobu)
Nie ma potrzeby stosowania plików pośrednich - możesz użyć skompresowanego tunelu SSH lub po prostu potoku: pg_dump | bzip2 | ssh "bunzip2 | pg_restore" – Kornel
Jeśli używasz bzip2, wyłącz kompresję ssh, aby przyspieszyć transfer! – lzap
Polecenie ssh ma domyślnie wyłączoną kompresję. W przykładzie używanym podczas kompresji ssh nie używam bzip2 i gdy używam bzip2, nie używam kompresji ssh. – Ferran