PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zaktualizować bazę danych postgresql z 10 do 12 bez utraty danych dla openproject?

A) Najpierw utwórz kopię zapasową wszystkich baz danych (możesz kontynuować od B, jeśli nie potrzebujesz kopii zapasowej)

  1. Zaloguj się jako użytkownik postgres
     sudo su postgres
  1. Utwórz kopię zapasową pliku .sql dla wszystkich danych, które masz we wszystkich bazach danych
    pg_dumpall > backup.sql

B) Uaktualnij do PostgreSQL12

  1. zaktualizuj pakiety i zainstaluj postgres 12
     sudo apt-get update
     sudo apt-get install postgresql-12 postgresql-server-dev-12
  1. Zatrzymaj usługę postgresql
     sudo systemctl stop postgresql.service
  1. przeprowadź migrację danych
     /usr/lib/postgresql/12/bin/pg_upgrade \
     --old-datadir=/var/lib/postgresql/10/main \
     --new-datadir=/var/lib/postgresql/12/main \
     --old-bindir=/usr/lib/postgresql/10/bin \
     --new-bindir=/usr/lib/postgresql/12/bin \
     --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
     --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
  1. Przełącz na zwykłego użytkownika
     exit
  1. Zamień porty na starą i nową wersję Postgres.
     sudo vim /etc/postgresql/12/main/postgresql.conf
     #change port to 5432
     sudo vim /etc/postgresql/10/main/postgresql.conf
     #change port to 5433
  1. Uruchom usługę postgresql
     sudo systemctl start postgresql.service
  1. Zaloguj się jako użytkownik postgres
     sudo su postgres
  1. Sprawdź swoją nową wersję Postgres
     psql -c "SELECT version();"
  1. Uruchom wygenerowany nowy skrypt klastra
     ./analyze_new_cluster.sh
  1. Wróć jako zwykły (domyślny użytkownik) i posprzątaj bałagan starej wersji
     sudo apt-get remove postgresql-10 postgresql-server-dev-10
     #uninstalls postgres packages
     sudo rm -rf /etc/postgresql/10/
     #removes the old postgresql directory
     sudo su postgres
     #login as postgres user
     ./delete_old_cluster.sh
     #delete the old cluster data
  1. Gratulacje! Twoja wersja postgresql jest teraz zaktualizowana. Jeśli wszystko działa dobrze w B, nie musimy stosować kopii zapasowej, ponieważ już przenieśliśmy dane ze starszej wersji do nowszej wersji, kopia zapasowa jest tylko na wypadek, gdyby coś poszło nie tak.

UWAGA: Zmień postgresql.conf i pg_hba.conf zgodnie z wymaganiami

PS :Zapraszam do komentowania swoich problemów, sugestii lub innych modyfikacji, które chciałbyś zasugerować



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz wiek z daty w PostgreSQL

  2. Domyślna baza danych o nazwie postgres na serwerze Postgresql

  3. Funkcja Postgres Wartość NULL dla wiersza, który odwołuje się do NOWEGO

  4. Jak działa current_timestamp() w PostgreSQL

  5. Postgres sql wstawia błąd składni zapytania z phpPgAdmin