programing

Postgre 업그레이드 방법데이터 손실 없이 버전 9.6에서 버전 10.1로 SQL을 변경하시겠습니까?

testmans 2023. 5. 10. 20:31
반응형

Postgre 업그레이드 방법데이터 손실 없이 버전 9.6에서 버전 10.1로 SQL을 변경하시겠습니까?

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

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

데이터베이스의 데이터를 파괴하거나 엉망으로 만들까 봐 걱정됩니다.

홈브루를 사용하여 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 Postgre옛 SQL 파일 SQL 실행 파일 디렉터리

    -B 파일 SQL 파일 SQL 실행 파일 디렉터리

  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
    

는 당신이 Postgre를 읽는 시간을 갖는 것을 제안합니다.위의 단계에서 수행하는 작업을 정확히 파악하여 불만을 최소화할 수 있는 SQL 설명서입니다.

위의 모든 답변에도 불구하고, 여기 제 5센트가 있습니다.

모든 OS 및 임의의 포스트그레스 버전에서 작동합니다.

  • 실행 중인 모든 postgres 인스턴스를 중지합니다.
  • 새 버전을 설치하고 시작합니다. 새 버전에도 연결할 수 있는지 확인하십시오.
  • 이전버버변경전 변경postgresql.conf->port54325433;
  • 이전 버전의 postgres 인스턴스를 시작합니다.
  • 터널을열고미,열고▁open,cd 버전의 버로으.bin폴더;
  • 려달을 합니다.pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • 이전 postgres 실행 인스턴스를 중지합니다.

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

우선 우리는 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

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

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

고급 postgres 기능을 사용하고 있다면 완전히 작동하지 않을 수도 있다고 생각합니다만, 저에게는 완벽하게 작동했습니다.

업데이트: 이 프로세스는 9.5에서 11.5까지 업그레이드하는 경우와 동일합니다. 버전을 반영하도록 명령을 수정하기만 하면 됩니다.9.6그리고.10서, 디에어9.6이전 버전이고10 버전입니다.그에 따라 "이전" 디렉토리와 "새" 디렉토리도 조정해야 합니다.


방금 Postgre를 업그레이드했습니다.Ubuntu에서 SQL 9.5 - 9.6을 사용하고 OS/패키지별 뉘앙스가 몇 가지 있기 때문에 결과를 공유하려고 했습니다.

(데이터를 수동으로 덤프 복원할 필요가 없었기 때문에 여기에 있는 다른 몇 가지 답변은 사용할 수 없었습니다.)

간단히 말해서, 이 프로세스는 새로운 버전의 Postgre를 설치하는 것으로 구성됩니다. 버전 9및 9과 한 후, " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "pg_upgrade바이너리. 이는 https://www.postgresql.org/docs/9.6/static/pgupgrade.html 에서 (일부) 자세히 설명되어 있습니다.

"꼼한한 "측면"의 유일한 pg_upgrade인수에 대한 올바른 값을 전달하지 못했거나 올바른 사용자로 로그인하지 못했거나cd명령을 실행하기 전에 올바른 위치로 이동하면 암호화된 오류 메시지가 표시될 수 있습니다.

Ubuntu(그리고 아마도 Debian)에서, 당신이 "공식" 레포를 사용하고 있다면,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

전용 Postgre로 전환SQL 시스템 사용자:

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"?

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

실행합니다.pg_upgrade새로운 Postgre로부터의 명령.SQL 버전:

/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

사용 설명서에서는 이 항목에 대해 자세히 설명합니다.할 수 있는 일:

  • pg_upgrade 또는 인플레이스;

  • pg_dump그리고.pg_restore.

확실하지 않으면 덤핑으로 하세요.이전 데이터 디렉토리를 삭제하지 말고, 오류가 발생할 경우에 대비하여 보관하십시오. 그렇게 하면 변경되지 않은 9.3 설치로 돌아갈 수 있습니다.

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

만약 여러분이 곤경에 처했다면, 여러분이 어떻게 곤경에 처했는지, 어디서, 무엇을 먼저 시도했는지를 설명하는 상세한 질문을 올리세요.Postgre를 설치한 방법에 따라 약간 다릅니다.Postgre의 여러 가지 다른 "분포"가 있기 때문에 SQL도 마찬가지입니다.OS X용 SQL(안타깝게도).그래서 당신은 그 정보를 제공해야 합니다.

이 쓰레기를 밟고 있는 다른 불쌍한 생물들의 어깨 위에 서서, 저는 요세미티로 업그레이드한 후 다시 일어나 달리기 위해 다음 단계를 따를 수 있었습니다.

홈브루를 사용하여 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
    

이제 솔루션이 홈브루에 구워진 것 같습니다.

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

Windows에서 사용을 시도할 때 계속 다른 오류 메시지가 표시됨pg_upgrade.

많은 시간을 절약하여 다음과 같은 이점을 제공합니다.

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

이것이 저를 위해 해냈습니다.

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

간단명료하게.나는 솔직히 포스트그레의 배짱을 이해하는 것을 목표로 하지 않습니다.SQL, 일을 끝내고 싶습니다.

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에 설치됨).

그런 다음 다음 다음과 같이 업그레이드합니다.

Postgresql 11 서비스 중지(위 참조)

을 합니다.postgresql.conf줄을 지어 들어가다d:\postgresql\12\data 변경 그고변화리port = 5433port = 5432

환경 경로를 합니다.windows start 다음타자를 입력합니다.env 11 Postresql 11 .

다음 명령을 입력하여 업그레이드를 실행합니다.

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

(파워셸에서 backtick(또는 backquote) '를 사용하여 다음 줄에서 명령을 계속합니다.)

그리고 마침내 새로운 Postgresql 12 서비스를 시작합니다.

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

제 솔루션은 다음 두 리소스를 결합하는 것이었습니다.

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터미널에서 실행되는 버전:

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

그리고 레일즈를 사용하는 경우에는bundle exec rake db:migrate후 :) 드를당긴 후코후▁:)당 :) :)

홈브루를 통한 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 을 참조하십시오.

나는 npm을 먹은 이후로 윈도우 10에 rimraf 패키지를 설치했습니다. npm install rimraf -g

명령을 합니다.pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

그런 다음 최신 Postgre를 설치합니다.SQL 버전(예: 11.2)을 사용하여 이번에는 포트 5433을 사용하도록 요청했습니다.

한 후 Postgre를 설치합니다.SQL 는10.: 에서 폴더 안 함을 할 수 .C:\PostgreSQL\10\data이러한 이유로 Rimraf를 사용하여 폴더와 하위 폴더를 영구적으로 삭제하는 다음 단계를 수행해야 합니다.

Postgre Postgre로 합니다. 및 install 을 rimraf 1010은 디렉토리 이름입니다.는 이전 버전의 Postgre Postgre 합니다.SQL, 예를 들어 9.5 같은 것.

이제추를 추가합니다.C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libWindows 환경 변수에 추가할 수 있습니다.가 새로 왜 가 새설이버전 11므로사용이무까유엇니입는는하치은?까▁note▁i니무▁thus▁is?pg11.

다으로로 합니다.C:\PostgreSQL\data\pg11 림열을 엽니다.postgresql.conf편집을port = 5433port = 5432

바로 그겁니다. cmd를 합니다.psql -U postgres

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

이 링크가 당신의 솔루션이 게시물을 9.6으로 업데이트하는 데 가장 적합하다고 생각합니다.

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/

언급URL : https://stackoverflow.com/questions/24379373/how-to-upgrade-postgresql-from-version-9-6-to-version-10-1-without-losing-data

반응형