Kopiowanie bazy danych PostgreSQL na inny serwer
Szukam kopii produkcyjnej bazy danych PostgreSQL na serwer programistyczny. Jaki jest najszybszy i najłatwiejszy sposób na zrobienie tego?
9 answers
Nie musisz tworzyć pliku pośredniego. You can do
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żywanie psql
lub pg_dump
do łączenia się ze zdalnym hostem.
Z dużą bazą danych lub wolnym połączeniem, wyrzucanie pliku i przesyłanie skompresowanego pliku może być szybsze.
Jak powiedział Kornel nie ma potrzeby zrzutu do pośredniego pliku, jeśli chcesz pracować skompresowany możesz użyć skompresowanego tunelu
pg_dump -C dbname | bzip2 | ssh remoteuser@remotehost "bunzip2 | psql dbname"
Lub
pg_dump -C dbname | ssh -C remoteuser@remotehost "psql dbname"
Ale To rozwiązanie wymaga również, aby uzyskać sesja w obu końcach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 20:36:24
pg_dump the_db_name > the_backup.sql
Następnie skopiuj kopię zapasową na serwer programistyczny, Przywróć za pomocą:
psql the_new_dev_db < the_backup.sql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-06 09:12:34
Użyj pg_dump, a później psqllub pg_restore - w zależności od tego, czy wybierzesz opcję-Fp lub-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
Jeśli szukasz migracji między wersjami (np. zaktualizowałeś postgres i masz 9.1 na localhost: 5432 i 9.3 na localhost:5434) możesz uruchomić:
pg_dumpall -p 5432 -U myuser91 | psql -U myuser94 -d postgres -p 5434
Sprawdź migration docs .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 00:58:40
pg_basebackup
wydaje się, że jest to teraz lepszy sposób, szczególnie w przypadku dużych baz danych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 17:06:14
Uruchom to polecenie z nazwą bazy danych, chcesz wykonać kopię zapasową, aby zrobić zrzut DB.
pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}
eg. pg_dump -U postgres mydbname -f mydbnamedump.sql
Teraz scp ten plik zrzutu do zdalnej maszyny, gdzie chcesz skopiować DB.
eg. scp mydbnamedump.sql user01@remotemachineip:~/some/folder/
Na zdalnym komputerze uruchom następujące polecenie 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-16 06:45:23
Walczyłem dość dużo i w końcu metoda, która pozwoliła mi to zrobić z Rails 4 Była:
Na Twoim starym serwerze
sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql
Musiałem użyć użytkownika Postgres linux, aby utworzyć zrzut. musiałem również użyć -c, aby wymusić utworzenie bazy danych na nowym serwerze. -- insert mówi mu, aby używał składni INSERT (), która w przeciwnym razie nie działałaby dla mnie: (
Następnie, na nowym serwerze, simpy:
sudo su - postgres
psql new_database_name < dump.sql
Aby przenieść zrzut.plik sql pomiędzy serwerem po prostu użyłem "kot", aby wydrukować zawartość, a następnie "nano", aby odtworzyć ją copypasting treści.
Również rola, której używałem w dwóch bazach danych, była inna, więc musiałem znaleźć-wymienić wszystkie nazwy właściciela na wysypisku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-13 22:15:45
Pozwól mi udostępnić skrypt powłoki Linuksa, aby skopiować dane tabeli z jednego serwera na inny serwer PostgreSQL.
Odniesienie zaczerpnięte z tego bloga:
Skrypt powłoki Linux Bash do 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"
Właśnie migruję dane; Proszę utworzyć pustą tabelę na docelowym / drugim serwerze bazy danych.
Jest to skrypt użytkowy. Co więcej, możesz zmodyfikować skrypt pod kątem użycia generycznego, dodając parametry dla host_name, database_name, table_name i innych
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-02 20:18:09
Wyrzuć swoją bazę danych: pg_dump database_name_name > backup.sql
Importuj bazę danych z powrotem: psql db_name < backup.sql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 09:02:21