postgresql 9.1로 실행중인 프로덕션 서버 (ubuntu 13.10)가 있습니다.
9.3의 몇 가지 기능을 사용하고 싶기 때문에 업그레이드하고 싶습니다.
가동 중지 시간이 30 분을 초과하지 않도록 누군가 9.1에서 9.3으로 업그레이드하는 데 도움을 줄 수 있습니까? 정도?
주요 관심사는 데이터 손실 또는 파일 중복을 방지하는 것입니다.
postgresql 9.1로 실행중인 프로덕션 서버 (ubuntu 13.10)가 있습니다.
9.3의 몇 가지 기능을 사용하고 싶기 때문에 업그레이드하고 싶습니다.
가동 중지 시간이 30 분을 초과하지 않도록 누군가 9.1에서 9.3으로 업그레이드하는 데 도움을 줄 수 있습니까? 정도?
주요 관심사는 데이터 손실 또는 파일 중복을 방지하는 것입니다.
답변:
기본적으로 PostgreSQL을 다른 주요 버전 (예 : 9.1에서 9.3)으로 업그레이드하는 세 가지 방법이 있습니다.
첫 번째 버전 은 가능한 경우 최신 버전 (9.3)의 바이너리를 사용하여 이전 (9.1) 버전의 덤프를 수행 하여 최신 버전으로 작성된 새 클러스터에 복원하는 것이 좋습니다.
이 접근 방식은 일반적으로 느리지 만 가장 실행 가능한 방법입니다. 더 빠른 팁 중 하나는 동시성을 사용하는 것입니다. 병렬 작업으로 덤프하려면 다음을 수행하십시오.
$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase
보유한 각 데이터베이스에 대해 수행하고 --jobs=4
값을 임의의 값으로 조정 해야합니다 (2에서 코어 수까지의 일부 값을 테스트하고 속도가 더 좋은 것을 확인하십시오). 또한이 단계 동안 아무도 데이터베이스에 연결되어서는 안되며, 수정하지 않으면 덤프가 손상됩니다 (비보안 옵션으로 인해 --no-synchronized-snapshots
).
그런 다음 다음을 사용하여 새 인스턴스로 덤프를 복원 할 수 있습니다 pg_restore
.
$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump
그런 ANALYZE
다음 데이터베이스 에서 실행 하는 것이 좋습니다 .
$ vacuumdb --analyze-only mydatabase
(당신은 시간을 줄 수있는 경우에만 실행 --analyze
도에 VACUUM
데이터베이스 및 가시성이 매핑 업데이트)
또 다른 옵션 은 contribpg_upgrade
을 사용 하는 것 입니다. 이 --link
방법을 사용하면 PostgreSQL을 업그레이드하는 정말 빠른 방법을 제공합니다.
사용하기 전에 전체 데이터 디렉토리를 백업해야합니다. --link
모드에서는 문제가 발생하면 데이터를 모두 잃을 수 있습니다 (신규 및 이전). 또한 전체 문서와 하단 의 메모 를 읽으십시오 (pg_upgrade에는 몇 가지 제한 사항이 있습니다).
업데이트 : --check
결정적 명령을 실행하기 전에 옵션을 사용하십시오 . 또한 큰 데이터베이스의 경우 화면 세션에서이 명령을 실행하는 것이 좋습니다.
버전을 업그레이드하는 또 다른 옵션은 트리거 기반 복제 도구를 사용하는 것입니다. Slony, Bucardo 및 Londiste처럼.
다운 타임을 최소화해야하는 옵션이지만 작업하기가 가장 어렵습니다.
이를 위해서는 마스터가 현재 버전 (9.1)이고 슬레이브가 새 버전 (9.3) 인 마스터 슬레이브를 구축해야합니다. 그런 다음 첫 번째 동기화 (시스템이 여전히 프로덕션 상태에 있음)를 기다린 후 데이터베이스에 연결된 모든 사람을 닫고 (여기서 가동 중지 시간이 시작됨) 슬레이브가 따라 잡기를 기다렸다가 (슬레이브) 마스터 및 모든 클라이언트 / 응용 프로그램을이 새 버전으로 리디렉션하십시오. 그리고 당신은 끝났습니다.
Slony 문서는 Slony를 사용하여 PostgreSQL 을 업그레이드 하기위한 단계별 지침을 제공합니다 .
항상 의존하는 것처럼 다음을 다시 시작하십시오.
도와 드릴 수 있기를 바랍니다. 행운을 빕니다.
pg_dumpall
를 덤프 하는 데 사용할 수 있습니다 .
postgres 9.1을 9.3으로 업그레이드하려면 다음 단계를 따르십시오.
먼저 우분투에 대한 다음 내용으로 /etc/apt/sources.list.d/pgdg.list 파일을 만듭니다.
deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main
다음을 실행하는 키를 추가하십시오.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
postgres로 개발자 도구를 설치하십시오.
sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-server-dev-9.3 pgadmin3
설치를 확인하기 위해“sudo pg_lsclusters”를 입력하고 두 가지 버전의 PostgreSQL이 실행중인 것을 볼 수 있습니다.
Postgressql 서비스 중지 :
sudo service postgresql stop
9.3 설치로 작성된 기본 9.3 클러스터를 삭제하십시오.
sudo pg_dropcluster --stop 9.3 main
기존 9.1 클러스터에서 새 9.3 클러스터를 작성하십시오.
sudo pg_upgradecluster 9.1 main
새 클러스터가로드되고 PostgreSQL 9.3이 실행되고 있는지 확인하십시오.
sudo service postgresql start 9.3
모든 것이 작동하면 9.1 클러스터로 떨어집니다.
pg_dropcluster --stop 9.1 main