티스토리 뷰
1. PostgreSQL Pod 접속
먼저 PostgreSQL이 실행되고 있는 Pod에 접속해야 합니다. 이를 위해 쿠버네티스에서 해당 Pod의 이름을 찾고, kubectl exec 명령을 사용해 PostgreSQL Pod 내부에서 명령어를 실행할 수 있습니다.
- PostgreSQL Pod 확인
kubectl get pods -n <namespace>
- <namespace>: PostgreSQL이 속한 네임스페이스. 만약 네임스페이스를 사용하지 않는다면 생략 가능.
-
NAME READY STATUS RESTARTS AGE postgresql-xxxxx-xxxxx 1/1 Running 0 10h
- PostgreSQL이 실행 중인 Pod의 이름을 확인하기 위해 다음 명령어를 사용합니다.
- PostgreSQL Pod 접속
kubectl exec -it postgresql-xxxxx-xxxxx -n <namespace> -- /bin/bash
- postgresql-xxxxx-xxxxx: 위 명령에서 확인한 PostgreSQL Pod의 이름.
- PostgreSQL Pod 내부에 접속하려면 kubectl exec 명령을 사용합니다. 쉘 세션을 열기 위해 -it 옵션을 사용하여 접속합니다.
2. pg_restore 실행 준비
Pod에 접속한 후 PostgreSQL 명령어를 실행할 수 있습니다. 그러나 먼저 백업 덤프 파일을 PostgreSQL Pod 내부에 업로드하거나 외부 스토리지로 접근할 수 있어야 합니다.
- 백업 파일 업로드 (선택 사항)
kubectl cp /path/to/local/backup.dump <namespace>/<pod_name>:/path/to/pod/
-
kubectl cp ./backup.dump default/postgresql-xxxxx-xxxxx:/tmp/
- 만약 덤프 파일이 로컬 시스템에 있다면, kubectl cp 명령을 사용하여 파일을 Pod로 복사할 수 있습니다.
- 데이터베이스 확인
psql --version
- PostgreSQL Pod 내에서 기본적으로 데이터베이스 클라이언트 psql과 관련 도구가 설치되어 있어야 합니다. 설치되어 있는지 확인하려면 다음 명령을 실행합니다.
3. pg_restore 명령 실행
이제 Pod 내부에서 pg_restore 명령을 실행하여 데이터를 복원할 수 있습니다.
- 데이터베이스 생성 (필요한 경우)
psql -U <username> -d postgres -c "CREATE DATABASE <dbname>;"
-
psql -U postgres -d postgres -c "CREATE DATABASE mydb;"
- 덤프 파일이 새로운 데이터베이스로 복원될 경우, 먼저 데이터베이스를 생성해야 합니다.
- pg_restore 실행
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -v /path/to/backup_file.dump
- -h localhost: PostgreSQL 서버는 Pod 내부에서 로컬호스트로 접근합니다.
- -p 5432: PostgreSQL의 기본 포트.
- -U <username>: PostgreSQL 사용자 이름.
- -d <dbname>: 복원할 데이터베이스 이름.
- /tmp/backup.dump: 복원할 덤프 파일 경로.
-
pg_restore -h localhost -p 5432 -U postgres -d mydb -v /tmp/backup.dump
- pg_restore를 사용하여 덤프 파일을 복원합니다. Pod 내부에 접속해 있다면 파일 경로를 Pod 내의 경로로 지정해야 합니다.
4. 네트워크 설정 및 접근
PostgreSQL Pod가 클러스터 내부에만 접근 가능하다면, 외부에서 데이터베이스에 접근하려면 Kubernetes의 Service나 Ingress로 노출해야 합니다. 이를 통해 외부 시스템에서 PostgreSQL로 연결할 수 있습니다.
- NodePort 또는 LoadBalancer 서비스로 노출:
-
yamlapiVersion: v1 kind: Service metadata: name: postgresql spec: type: NodePort # 또는 LoadBalancer ports: - port: 5432 targetPort: 5432 protocol: TCP selector: app: postgresql
5. 복원 후 검증
- 데이터 확인: 복원이 성공했는지 데이터를 확인하려면 psql로 데이터베이스에 접속한 후 테이블을 조회합니다.예시:
-
psql -U postgres -d mydb -c "\dt"
-
psql -U <username> -d <dbname> -c "\dt"
- 로그 확인: 복원 중에 발생한 에러나 경고 메시지가 없는지 pg_restore의 로그를 확인하고, 필요한 경우 오류를 처리합니다.
요약
- Pod에 접속하여 pg_restore 명령을 실행.
- 백업 덤프 파일을 Pod에 복사하거나 외부 스토리지에서 접근.
- pg_restore를 사용하여 PostgreSQL 데이터베이스에 데이터를 복원.
- 복원 후 데이터 무결성 확인.
이 과정은 Kubernetes 환경에서 PostgreSQL 데이터베이스를 복원하는 일반적인 방법입니다. 필요에 따라 네트워크 설정을 통해 외부에서 접근하거나 내부 클러스터 내에서만 사용할 수 있습니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- [오라클 튜닝] sql 튜닝
- 쿠버네티스
- 설치하기(HP-UX)
- 테라폼
- 오라클 홈디렉토리 copy 후 startup 에러
- 5.4.0.1072
- 커널
- 튜닝
- (InstantClient) 설치하기(HP-UX)
- 앤시블
- 키알리
- MSA
- pod 상태
- 코로나19
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- [오라클 튜닝] instance 튜닝2
- 스토리지 클레스
- 버쳐박스
- directory copy 후 startup 에러
- Oracle
- 우분투
- 오라클
- K8s
- CVE 취약점 점검
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 트리이스
- startup 에러
- ubuntu
- 여러서버 컨트롤
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함