데이터를 잃지 않고 PostgreSQL을 버전 9.6에서 버전 10.1로 업그레이드하는 방법은 무엇입니까?


207

Ruby on Rails 애플리케이션 (Mac OS X 10.9)에 PostgreSQL 데이터베이스를 사용하고 있습니다.

PostgreSQL 데이터베이스를 업그레이드하는 방법에 대한 자세한 지침이 있습니까?

데이터베이스의 데이터를 파괴하거나 엉망으로 만들 것 같습니다.


8
어떤 경우에도 백업을 수행하십시오.
Patrick Oscity

답변:


401

자가 추출을 사용하여 Postgres를 설치 및 업그레이드했다고 가정하면 다음 단계를 수행 할 수 있습니다.

  1. 현재 Postgres 서버를 중지하십시오.

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. 새 10.1 데이터베이스를 초기화하십시오.

    initdb /usr/local/var/postgres10.1 -E utf8

  3. 실행 pg_upgrade (참고 : 아래 이외의 버전에서 업그레이드하는 경우 bin 버전 변경) :

    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres10.1 \
        -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
        -B /usr/local/Cellar/postgresql/10.1/bin/

    -v 자세한 내부 로깅을 활성화하려면

    -d 이전 데이터베이스 클러스터 구성 디렉토리

    -D 새로운 데이터베이스 클러스터 구성 디렉토리

    -b 이전 PostgreSQL 실행 파일 디렉토리

    -B 새로운 PostgreSQL 실행 파일 디렉토리

  4. 새 데이터를 제자리로 이동 :

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. Postgres를 다시 시작하십시오.

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. /usr/local/var/postgres/server.log세부 사항을 점검 하고 새 서버가 올바르게 시작되었는지 확인하십시오.

  7. 마지막으로 레일 pg젬을 다시 설치하십시오.

    gem uninstall pg
    gem install pg

좌절을 최소화하기 위해 위의 단계에서 수행하는 작업을 정확하게 이해 하려면 PostgreSQL 설명서 를 읽는 것이 좋습니다 .


8
다음 명령을 사용하여 데이터베이스를 초기화해야했습니다.initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
sunsations

단계별로 가이드를 따릅니다. 그리고 모든 것이 효과가있었습니다! 정말 고맙습니다.
Trantor Liu

3
delete_old_cluster.sh명령에 주의하십시오 . 이 명령을 실행하는 것보다 먼저 /usr/local/postgres9.3 디렉토리를 수동으로 삭제했으며 전체 / usr / local / var / postgres 디렉토리를 잃어버린 것 같습니다 (Time Machine에서 복원 할 수 있음)
peter_v

1
Bundler를 사용하는 경우 gem을 사용하여 제거한 gem uninstall pg다음 번 들러를 실행하여 Gemfile.lock에서 올바른 버전을 다시 설치하도록합니다 bundle.
danielricecodes

1
마이너 업데이트 : brew이제 사용할 수있는 옵션이 brew services stop postgresql하고 brew services start postgresql대신 직접 호출하는 launchctl unloadlaunchctl load.
florish

59

위의 모든 대답에도 불구하고 여기 5 센트가갑니다.

모든 OS 및 모든 postgres 버전에서 작동합니다.

  • 실행중인 postgres 인스턴스를 중지하십시오.
  • 새 버전을 설치하고 시작하십시오. 새 버전에도 연결할 수 있는지 확인하십시오.
  • 이전 버전의 변경 postgresql.conf-> port에서 54325433;
  • 이전 버전의 postgres 인스턴스를 시작하십시오.
  • 터미널과 cd새 버전 bin폴더 를 엽니 다 .
  • 운영 pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • 이전 postgres 실행 인스턴스를 중지하십시오.

4
고마워 크리스천, 이것은 확실히 훌륭하고 쉬운 솔루션입니다, 나는 성공적으로 이렇게 9.3에서 9.5로 갔다
fnicollet

3
Windows 2012 서버에서 9.1에서 9.5로 업그레이드하기 위해 아름답게 작동했습니다.
Rolf

4
이 솔루션의 문제점은 일부 Postgres 구성 파일 (예 : postgresql.conf또는 pg_hba.conf)을 변경 한 경우 새 설치에서 해당 변경 사항을 수동으로 복제해야한다는 것입니다. 대신을 사용 pg_upgradecluster하면 구성 파일이 새 클러스터로 복사됩니다. manpages.ubuntu.com/manpages/precise/man8/…
Alphaaa

1
명령을 시작하자마자 하나의 암호 프롬프트가 표시되지만 Enter 키로 확인하는 암호를 하나씩 입력해야합니다. 또는 다음을 얻을 수 있습니다pg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
기술적으로 이것은 수동 상태로 다음과 같이 소스 버전 7.0 이상인 모든 버전에서 작동하지 않습니다.Current releases of the dump programs can read data from any server version back to 7.0.
Mark Tielemans

56

우분투 사용자를 위한 솔루션은 다음과 같습니다.

먼저 postgresql을 중지해야합니다

sudo /etc/init.d/postgresql stop

/etc/apt/sources.list.d/pgdg.list라는 새 파일을 만들고 아래 행을 추가하십시오

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

아래 명령을 따르십시오

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
sudo pg_dropcluster --stop 9.4 main 
sudo /etc/init.d/postgresql start

이제 우리는 모든 것을 가지고 있습니다. 아래와 같이 업그레이드해야합니다.

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

그게 다야. 대부분 업그레이드 된 클러스터는 포트 번호 5433에서 실행됩니다. 아래 명령으로 확인하십시오.

sudo pg_lsclusters

2
"대부분 업그레이드 된 클러스터는 포트 번호 5433에서 실행됩니다"라고 말한 두 번째에서 마지막 문장은 "9.3 클러스터가 포트 번호 5433에서 실행되어 필요한 경우 되돌릴 수 있습니다"라고 표시해야합니다.
앤드류 대오 마틴

3
참고 : 우분투 14.04의 경우 utopic-pgdb 대신 "trusty-pgdb"를 사용하십시오
Johnny

3
전체 업그레이드는 수행 하지 않습니다 . 따라서 1TB 볼륨의 700GB DB에는 완전히 쓸모가 없습니다.
가짜 이름

16

업데이트 :이 프로세스는 9.5를 11.5 이상으로 업그레이드하는 과정과 동일합니다. 단순히 버전을 반영하도록 명령을 수정 9.6하고 10어디 9.6는 IS 이전 버전과 10는 IS 새로운 버전. "old"및 "new"디렉토리도 적절히 조정하십시오.


방금 Ubuntu에서 PostgreSQL 9.5를 9.6으로 업그레이드했으며 인식해야 할 OS / 패키지 관련 뉘앙스가 몇 가지 있으므로 결과를 공유한다고 생각했습니다.

( 데이터를 수동으로 덤프하고 복원하고 싶지 않았으므로 여기에있는 다른 답변 중 일부는 실행 가능하지 않았습니다.)

요컨대, 프로세스는 이전 버전 (예 : 9.5 및 9.6)과 함께 새 버전의 PostgreSQL을 설치 한 다음 https://www.postgresql.org/의pg_upgrade 일부에 설명 된 바이너리 를 실행하는 과정으로 구성됩니다. docs / 9.6 / static / pgupgrade.html .

유일한 "까다로운"측면은 pg_upgrade인수에 대한 올바른 값을 전달하지 않거나 cd명령을 실행하기 전에 올바른 사용자 또는 올바른 위치에 로그인하지 못하면 암호 오류 메시지가 발생할 수 있다는 것입니다.

우분투 (아마도 데비안)에서 "공식"저장소를 사용 deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main하고 기본 파일 시스템 경로 나 런타임 옵션을 변경하지 않은 경우 다음 절차를 수행해야합니다.

새 버전을 설치하십시오 ( 9.6명시 적으로을 지정 함 ).

sudo apt install postgresql-9.6

설치가 완료되면 두 버전이 나란히 실행되지만 다른 포트에서 실행됩니다. 설치 결과는 아래에 언급되어 있지만 간과하기 쉽습니다.

Creating new cluster 9.6/main ...
  config /etc/postgresql/9.6/main
  data   /var/lib/postgresql/9.6/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5433

두 서버 인스턴스를 모두 중지하십시오 (동시에 둘 다 중지됨).

sudo systemctl stop postgresql

전용 PostgreSQL 시스템 사용자로 전환하십시오.

su postgres

그의 홈 디렉토리로 이동하십시오 (실패하면 오류가 발생 함).

cd ~

pg_upgrade 다음 입력이 필요 합니다 ( pg_upgrade --help이것을 알려줍니다).

When you run pg_upgrade, you must provide the following information:
  the data directory for the old cluster  (-d DATADIR)
  the data directory for the new cluster  (-D DATADIR)
  the "bin" directory for the old version (-b BINDIR)
  the "bin" directory for the new version (-B BINDIR)

이러한 입력은 "긴 이름"으로 지정되어보다 쉽게 ​​시각화 할 수 있습니다.

  -b, --old-bindir=BINDIR       old cluster executable directory
  -B, --new-bindir=BINDIR       new cluster executable directory
  -d, --old-datadir=DATADIR     old cluster data directory
  -D, --new-datadir=DATADIR     new cluster data directory

또한 --new-options실패하면 다음과 같은 결과가 발생하므로 스위치를 통과해야합니다 .

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

이 스위치가 없으면 기본 구성 옵션이 적용되어 잘못된 연결 옵션이 사용되어 소켓 오류가 발생하기 때문에 발생합니다.

PostgreSQL 버전 pg_upgrade에서 명령을 실행하십시오 .

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

전용 시스템 사용자 계정에서 로그 아웃하십시오.

exit

이제 업그레이드가 완료 되었지만 새 인스턴스가 포트에 바인드 5433되므로 (표준 기본값은 5432) 새 인스턴스를 "중단"하기 전에 테스트하려는 경우이 점을 명심하십시오.

서버를 정상적으로 시작하십시오 (이전 인스턴스와 새 인스턴스가 모두 시작됨).

systemctl start postgresql

새 버전을 기본값으로 설정하려면 효과적인 구성 파일 (예 :)을 편집 /etc/postgresql/9.6/main/postgresql.conf하고 포트가 다음과 같이 정의되어 있는지 확인해야합니다.

port = 5432

이 작업을 수행 5433하는 경우 서비스를 시작하기 전에 이전 버전의 포트 번호를 동시에 변경하거나 이전 버전을 제거하십시오 (실제 데이터베이스 내용이 제거 되지않으므로 사용해야합니다).apt --purge remove postgresql-9.5 일이 그것에 대해 ) :

apt remove postgresql-9.5

위의 명령은 모든 인스턴스를 중지하므로 다음을 사용하여 마지막으로 새 인스턴스를 시작해야합니다.

systemctl start postgresql

마지막으로, pg_upgrade좋은 조언 을 고려해야합니다 .

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

1
맥 요세미티, PostgreSQL의 9.2에서 나를 위해 -> 9.5 : sudo su postgres하지 ~ 그래서 작동하지 않았다에서 / 개인 / tmp를 pg_upgrade를 실행, pg_upgrade 전에 신뢰에 모두 설치의있는 pg_hba.conf에있는 모든 방법을 변경 sudo mkdir /foobar하여 chmod 777 /foobar거기가 달렸다. 마지막으로 pg_upgrade 명령 :/Library/PostgreSQL/9.5/bin/pg_upgrade -b /Library/PostgreSQL/9.2/bin -B /Library/PostgreSQL/9.5/bin -d /Library/PostgreSQL/9.2/data -D /Library/PostgreSQL/9.5/data -o -cconfig_file=/Library/PostgreSQL/9.2/data/postgresql.conf -O -cconfig_file=/Library/PostgreSQL/9.5/data/postgresql.conf
Jarno Argillander

1
나는 9.5에서 11.5로 성공적으로 업그레이드 할 수 있었고 우분투에 postgres apt 저장소를 추가해야했습니다. 그리고 바로 그 단계를 따르 tecadmin.net/install-postgresql-server-on-ubuntu
shakee93

14

homebrew 및 homebrew 서비스를 사용하는 경우 다음을 수행 할 수 있습니다.

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

고급 postgres 기능을 사용하는 경우 이것이 완벽하게 작동하지 않을 수도 있지만 완벽하게 작동했습니다.


1
macOS Mojave 10.14.2에서 완벽하게 작동했습니다-감사합니다!
8bithero

13

사용자 설명서는 깊이에서이 주제를 다룹니다. 당신은 할 수 있습니다 :

  • pg_upgrade그 자리에서; 또는

  • pg_dump그리고 pg_restore.

의심스러운 경우 덤프로 처리하십시오. 오래된 데이터 디렉토리를 삭제하지 마십시오. 문제가 생길 경우를 대비하여 실수하십시오 / 실수합니다. 그렇게하면 변경되지 않은 9.3 설치로 돌아갈 수 있습니다.

자세한 내용은 설명서를 참조하십시오.

갇혀 있다면 어떻게 갇혀 있는지, 어디서, 무엇을 먼저 시도했는지 설명하는 자세한 질문을 게시하십시오. (다행히도) OS X 용 PostgreSQL의 여러 "분배"가 있기 때문에 PostgreSQL 설치 방법에 따라 다릅니다. 따라서 해당 정보를 제공해야합니다.


8

이 멍에를 뚫고 지나가는 다른 가난한 생물의 어깨에 서서, 나는 요세미티로 업그레이드 한 후 다음 단계를 따라 돌아와 달릴 수있었습니다.

자가 추출을 사용하여 Postgres를 설치 및 업그레이드했다고 가정하면 다음 단계를 수행 할 수 있습니다.

  1. 현재 Postgres 서버를 중지하십시오.

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. 새 9.4 데이터베이스를 초기화하십시오.

    initdb /usr/local/var/postgres9.4 -E utf8

  3. postgres 9.3을 설치하십시오 (내 컴퓨터에 더 이상 존재하지 않기 때문에).

    brew install homebrew/versions/postgresql93

  4. Yosemite 업그레이드 중에 제거 된 디렉토리 추가 :

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. 실행 pg_upgrade:

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. 새 데이터를 제자리로 이동 :

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. Postgres를 다시 시작하십시오.

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. /usr/local/var/postgres/server.log세부 사항을 점검 하고 새 서버가 올바르게 시작되었는지 확인하십시오.

  9. 마지막으로 관련 라이브러리를 다시 설치 하시겠습니까?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg

1
pg_upgrade -v -d / usr / local / var / postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.*/bin/ -B / usr / local / Cellar /postgresql/9.4.*/bin/ # 부 버전이 다를 수 있습니다.
Aaron McMillin

1
고마워 brew cleanup데이터를 마이그레이션하기 전에 실수로 실행되어 postgres9.3이 제거되었습니다. 도움이되었습니다. :)
markquezada 5

5

솔루션이 이제 Homebrew에 구운 것 같습니다.

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....

1

이것은 나를 위해 그것을했다.

https://gist.github.com/dideler/60c9ce184198666e5ab4

짧고 요점. 나는 솔직히 PostgreSQL의 내장을 이해하는 것을 목표로하지 않으며 일을 끝내고 싶습니다.


1
이것은 PostgreSQL의 pg_upgrade 도구보다 훨씬 느릴 수있는 Ubuntu의 pg_upgradecluster 도구를 사용하며 물론 Ubuntu에서만 사용할 수 있습니다.
alfonx

@alfonx 사실이 아닙니다. 나는 데비안에있다 jessie. 10 개 이상의 DB와 ~ 400MB의 데이터베이스 데이터가 눈을 깜박 거렸다. 그런 다음 SSD에서 가상 데비안을 사용하고 있습니다.
dimitarvp

pg_upgradecluster는 "Debian PostgreSQL 인프라"의 일부이므로 Debian 기반 배포판에서만 사용할 수 있습니다. 속도 정보 pg_upgrade는 "--link"옵션을 제공합니다. 가능한 경우 데이터를 복사하지 않습니다. postgresql.org/docs/9.4/static/pgupgrade.html
alfonx

1
아마도 우리는 다른 결과를 목표로합니다. 배포판 전체 소프트웨어 업그레이드 후 2 버전의 PostgreSQL로 끝나고 사용 된 데이터가 이전 버전 (9.3)에 고정되었습니다. 방금 위의 링크를 찾아서 업그레이드하여 이전 "클러스터"와 이전 PG 버전을 제거했습니다.
dimitarvp

9.4에서 11로 업그레이드하려고했지만 pg_upgradecluster 9.4 main오류가 발생했습니다. 오류 : specified cluster does not exist...이 안내서와 함께 postgresql-9.4를 먼저 다시 설치해야합니다. wiki.postgresql.org/wiki/Apt#Quickstart
rubo77

1

윈도우 내가 사용하려고 할 때 다른 오류 메시지에 직면 유지pg_upgrade .

나를 위해 많은 시간을 절약했습니다.

  1. 백업 DB
  2. PostgreSQL의 모든 사본 제거
  3. 9.5 설치
  4. DB 복원

이것을 9.5에서 9.6까지 수행했으며 완벽하게 작동했습니다. "최신"이 아니라 정확한 업그레이드도 쉽게 할 수있는 것이 좋습니다. Big SQL을 사용하여 올바른 설치 프로그램을 엽니 다 ( openscg.com/bigsql/postgresql/installers.jsp ).
코더

0

내 솔루션은 다음 두 가지 리소스를 조합하여 사용하는 것입니다.

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

두 번째 사람은 도움이 더 후 처음입니다. 또한 필요하지 않은 단계를 따르지 마십시오. 또한 postgres 콘솔을 통해 데이터를 백업 할 수없는 경우 대체 접근법을 사용하고 필자의 경우처럼 pgAdmin 3 또는 다른 프로그램으로 백업 할 수 있습니다.

또한 https://help.ubuntu.com/stable/serverguide/postgresql.html 링크 는 postgres 사용자 인증을 위해 암호화 된 비밀번호를 설정하고 md5를 설정하는 데 도움이되었습니다.

모든 작업이 끝나면 server터미널에서 실행되는 postgres 버전 을 확인하십시오 .

sudo -u postgres psql postgres

postgres 터미널에서 비밀번호를 입력 한 후 :

SHOW SERVER_VERSION;

다음과 같이 출력됩니다.

 server_version 
----------------
 9.4.5

postgres를 설정하고 시작하기 위해 다음 명령을 사용했습니다.

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

그런 다음 파일에서 데이터베이스를 복원하려면 다음을 수행하십시오.

> psql -f /home/ubuntu_username/Backup_93.sql postgres

또는 작동하지 않으면 다음과 같이 시도하십시오.

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

그리고 Rails를 사용하는 bundle exec rake db:migrate경우 코드를 가져온 후 다음을 수행하십시오. :)


0

homebrew를 통한 Mac의 경우 :

brew tap petere/postgresql,

brew install <formula>(예 : brew install petere/postgresql/postgresql-9.6)

오래된 Postgres를 제거하십시오.

brew unlink postgresql

brew link -f postgresql-9.6

오류가 발생하면 각 단계마다 추출 지침을 읽고 따르는 것을 잊지 마십시오.

자세한 내용은 https://github.com/petere/homebrew-postgresql을 참조하십시오.


0

npm을 사용한 이후 Windows 10에서 rimraf 패키지를 설치했습니다. npm install rimraf -g

명령을 사용하여 모든 데이터베이스를 하나씩 백업 pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

그런 다음 이번에는 포트 5433을 사용하라는 최신 PostgreSQL 버전, 즉 11.2를 설치했습니다.

그 뒤에는 이전 버전의 PostgreSQL 광산 제거가 10이었습니다. 제거 프로그램은 폴더를 삭제하지 않는다는 경고를 표시 할 수 있습니다 C:\PostgreSQL\10\data. 따라서 rimraf를 사용하여 폴더와 하위 폴더를 영구적으로 삭제하는 다음 단계가 있습니다.

PostgreSQL 설치 디렉토리로 변경하고 명령을 실행하십시오 rimraf 10. 10은 디렉토리 이름입니다. 이전 버전의 PostgreSQL 즉 9.5 이상을 사용하십시오.

이제 C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libWindows 환경 변수에 추가 하십시오. 내가 새로 설치 한 버전은 11이므로 참고하십시오 pg11.

C:\PostgreSQL\data\pg11다음으로 이동하여 postgresql.conf편집 port = 5433을 엽니 다.port = 5432

그게 다야. cmd를 열고 다음을 입력하십시오.psql -U postgres

이제 명령을 사용하여 모든 백업 된 데이터베이스를 하나씩 복원 할 수 있습니다 pg_restore -U $username --dbname=$databasename $filename


0

Windows 10에서 Postgresql 11에서 Postgresql 12로 업그레이드하는 솔루션은 다음과 같습니다.

첫 번째로 Postgresql 서비스를 중지하고 시작할 수 있어야합니다. Powershell에서 다음 명령으로이를 수행 할 수 있습니다.

스타트: pg_ctl start -D “d:\postgresql\11\data”

중지: pg_ctl stop -D “d:\postgresql\11\data”

상태: pg_ctl status -D “d:\postgresql\11\data”

업그레이드하기 전에 백업하는 것이 좋습니다. Postgresql 11 인스턴스가 실행 중이어야합니다. 그런 다음 글로벌을 복사하려면

pg_dumpall -U postgres -g -f d:\bakup\postgresql\11\globals.sql

그런 다음 각 데이터베이스마다

pg_dump -U postgres -Fc <database> > d:\backup\postgresql\11\<database>.fc

또는

pg_dump -U postgres -Fc -d <database> -f d:\backup\postgresql\11\<database>.fc

Postgresql 12를 아직 설치하지 않은 경우 (Postgresql 11도 설치되어 있으므로 포트 5433에 있음)

그런 다음 다음과 같이 업그레이드를 수행하십시오.

1) PostgreSQL 11 서비스 중지 (위 참조)

2) 편집 postgresql.conf에서 파일 d:\postgresql\12\data변경 port = 5433port = 5432

3) Windows 사용자 환경 경로를 편집 windows start한 다음 (env Postresql 11 대신 Postgresql 12를 가리 키도록

4) 다음 명령을 입력하여 업그레이드를 실행하십시오.

pg_upgrade `
-b c:\program files\postgresql\11\bin `
-B c:\program files\postgresql\12\bin `
-d d:\postgresql\11\data `
-D d:\postgresql\12\data --username=postgres

(Powershell에서 backtick (또는 backquote)`를 사용하여 다음 줄에서 명령을 계속하십시오)

5) 마지막으로 새로운 Postgresql 12 서비스를 시작하십시오

pg_ctl start -D “d:\postgresql\12\data”


-1

귀하의 솔루션이 postgres를 9.6으로 업데이트하는 가장 좋은 링크라고 생각합니다

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.