기존 서비스에서 v15.1을 사용하고 있었는데 보안에 취약한 이슈로 v15.11 업데이트를 해야되는 일이 있었다.
일단 바이너리 업데이트와 마이그레이션의 차이점을 알아보자
✅ 1. 바이너리 업데이트 (Binary Update)
- 정의: PostgreSQL의 같은 메이저 버전(예: 15.x) 내에서, 버전만 올리는 작업.
- 예시: 15.1 → 15.11
- 특징:
- 데이터 디렉터리($PGDATA) 그대로 사용 가능
- 기존 DB 재구성(마이그레이션) 필요 없음
- PostgreSQL 프로세스만 재시작하면 됨
- 방법:
- 새 버전 바이너리를 받아서 기존 심볼릭 링크만 바꿔주면 돼
- initdb 절대 하면 안 돼 (데이터 날아감)
🔁 이건 단순히 PostgreSQL의 "실행 파일"만 최신으로 교체하는 거야. 데이터 구조는 그대로 유지돼.
⚠️ 2. 마이그레이션 (Migration)
- 정의: PostgreSQL의 메이저 버전이 바뀌는 경우 전체 데이터를 옮기는 과정
- 예시: 14.x → 15.x 또는 15.x → 16.x
- 특징:
- pg_upgrade 또는 dump/restore 방식으로 전체 DB 이전 필요
- 데이터 호환성 체크 필요
- 시간이 오래 걸림 + 신중하게 진행해야 함
그리고 rpm과 tar 방식이 있는데 난 tar 방식으로 했어 이유는 rpm으로 하면 원복하게될 경우에는 까다롭고 tar로 하게되면 기존 디렉터리만 압축해서 백업을 해둔다음에 기존 디렉터리에 덮어씌우는 방식이 더 좋다고 생각했어
data는 기존 데이터를 사용하기때문에 시간도 훨씬 단축되고 배치 또는 라이브러리만 확인해서 따로 make 해주면 돼
1. 15.11 버전 압축 해제
2. 기존 실행파일 심볼릭 링크 확인
: ls -l /usr/bin/psql
: ls -l /usr/bin/postgres
3. 심볼릭 링크 교체 (sudo권한 필수)
: sudo ln -sf /opt/pgsql-15.11/bin/psql /usr/bin/psql
4. 데이터 디렉터리 그대로 유지
5. 서버 재시작
이걸 진행하기 전에 확인해야될거
1. 기존에 사용하던 확장(Extension) 또는 외부 라이브러리 확인
: SELECT * FROM pg_extension;
2. 15.11 버전 make(컴파일)하고 그 이후에 라이브러리도 압축풀고 make(컴파일)해줘
3. orafce, postgres_fdw 이걸 사용하고 있어서 postgres_fdw 는 15.11 파일안에있어서 거기서 make 해줬고 orafce는 zip 으로 받아서 서버에서 진행했어 진행한 방법은 orafce.so, orafce.control, orafce--*.sql 파일 15.11로 이동시켜서 쿼리로 EXTENSION 날려서 외부확장(라이브러리)를 사용할수 있게 명령어 실행했어
*그리고 기존에 quartz도 사용하고있어서 was 도 내렸다가 올려야지 quartz 연결이 돼 이것도 필수!
'IT > ⚇⚉cause' 카테고리의 다른 글
참고 (0) | 2023.07.20 |
---|---|
[Maven] mvnw 를 사용할 때 JDK가 필요한가? (0) | 2023.05.10 |
[개발자 도구] 개발자 도구에서 소스가 안보일때 (0) | 2023.03.14 |
[datadog] 참고 사이트 (0) | 2023.03.07 |
[kubernetes] pv, pvc 생성 (0) | 2023.03.07 |