티스토리 뷰

카테고리 없음

9. PostgreSQL Pod 접속

미니대왕님 2024. 10. 23. 10:42

1.k8s 으로 postgreSQL DB 생성 PV, PVC , configmap, secret 생성하기

2. Keycloak Docker / postgresql 사용

3. K8s 에서 postsql POD 생성및 터널링 진행

4. Centos Postgresql 설치하는 방법

5. 포스트 그레

6. Kubernetes 환경의 PostgreSQL 설치하기

7.Postgresql 설치및 간단한 사용방법정리!

8. postgresql Vacuum 기본에대해 알아보자!

9. PostgreSQL Pod 접속

 

1. PostgreSQL Pod 접속

psql -h <RDS_ENDPOINT> -U <USERNAME> -d <DATABASE_NAME>

psql -h 엔드포인트 -U root -d rdsname

psql -h

 

먼저 PostgreSQL이 실행되고 있는 Pod에 접속해야 합니다. 이를 위해 쿠버네티스에서 해당 Pod의 이름을 찾고, kubectl exec 명령을 사용해 PostgreSQL Pod 내부에서 명령어를 실행할 수 있습니다.

  1. PostgreSQL Pod 확인
     
     
    kubectl get pods -n <namespace>
    • <namespace>: PostgreSQL이 속한 네임스페이스. 만약 네임스페이스를 사용하지 않는다면 생략 가능.
    예시 출력:
  2. NAME READY STATUS RESTARTS AGE postgresql-xxxxx-xxxxx 1/1 Running 0 10h
  3. PostgreSQL이 실행 중인 Pod의 이름을 확인하기 위해 다음 명령어를 사용합니다.
  4. PostgreSQL Pod 접속
    kubectl exec -it postgresql-xxxxx-xxxxx -n <namespace> -- /bin/bash
    • postgresql-xxxxx-xxxxx: 위 명령에서 확인한 PostgreSQL Pod의 이름.
  5. PostgreSQL Pod 내부에 접속하려면 kubectl exec 명령을 사용합니다. 쉘 세션을 열기 위해 -it 옵션을 사용하여 접속합니다.

2. pg_restore 실행 준비

Pod에 접속한 후 PostgreSQL 명령어를 실행할 수 있습니다. 그러나 먼저 백업 덤프 파일을 PostgreSQL Pod 내부에 업로드하거나 외부 스토리지로 접근할 수 있어야 합니다.

  1. 백업 파일 업로드 (선택 사항)
    kubectl cp /path/to/local/backup.dump <namespace>/<pod_name>:/path/to/pod/
    예시:
  2. kubectl cp ./backup.dump default/postgresql-xxxxx-xxxxx:/tmp/
  3. 만약 덤프 파일이 로컬 시스템에 있다면, kubectl cp 명령을 사용하여 파일을 Pod로 복사할 수 있습니다.
  4. 데이터베이스 확인
    psql --version
    설치가 되어 있다면 다음 단계로 진행합니다.
  5. PostgreSQL Pod 내에서 기본적으로 데이터베이스 클라이언트 psql과 관련 도구가 설치되어 있어야 합니다. 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

3. pg_restore 명령 실행

이제 Pod 내부에서 pg_restore 명령을 실행하여 데이터를 복원할 수 있습니다.

  1. 데이터베이스 생성 (필요한 경우)
    psql -U <username> -d postgres -c "CREATE DATABASE <dbname>;"
    예시:
  2. psql -U postgres -d postgres -c "CREATE DATABASE mydb;"
  3. 덤프 파일이 새로운 데이터베이스로 복원될 경우, 먼저 데이터베이스를 생성해야 합니다.
  4. 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: 복원할 덤프 파일 경로.
  5. pg_restore -h localhost -p 5432 -U postgres -d mydb -v /tmp/backup.dump
  6. pg_restore를 사용하여 덤프 파일을 복원합니다. Pod 내부에 접속해 있다면 파일 경로를 Pod 내의 경로로 지정해야 합니다.

4. 네트워크 설정 및 접근

PostgreSQL Pod가 클러스터 내부에만 접근 가능하다면, 외부에서 데이터베이스에 접근하려면 Kubernetes의 ServiceIngress로 노출해야 합니다. 이를 통해 외부 시스템에서 PostgreSQL로 연결할 수 있습니다.

  1. NodePort 또는 LoadBalancer 서비스로 노출:
  2. yaml
    apiVersion: 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의 로그를 확인하고, 필요한 경우 오류를 처리합니다.

AWS 접속방법

AWS CLI 설정
1-1. AWS CLI 설치
AWS CLI를 설치하려면 다음 명령을 사용하세요.

Linux/Ubuntu:

bash
코드 복사
sudo apt update
sudo apt install awscli -y
macOS:

bash
코드 복사
brew install awscli
Windows: AWS CLI 설치 프로그램을 다운로드하여 설치.

1-2. AWS CLI 구성
CLI를 사용하려면 AWS 자격 증명(Access Key 및 Secret Key)을 설정해야 합니다.

bash
코드 복사
aws configure
요청에 따라 다음 정보를 입력합니다:

AWS Access Key ID
AWS Secret Access Key
Default region (예: us-east-1)
Default output format (예: json 또는 table)
2. AWS RDS 정보 확인
AWS CLI 명령어를 사용해 RDS 인스턴스 정보를 확인할 수 있습니다.

RDS 인스턴스 목록 조회
bash
코드 복사
aws rds describe-db-instances
특정 인스턴스 정보 조회
bash
코드 복사
aws rds describe-db-instances --db-instance-identifier <DB_INSTANCE_ID>
3. RDS 데이터베이스에 접속하기
RDS 데이터베이스에 직접 접속하려면 데이터베이스 클라이언트를 사용해야 합니다. 다음은 MySQL, PostgreSQL 등에 접속하는 방법입니다.

3-1. MySQL에 접속
MySQL 클라이언트 설치:

bash
코드 복사
sudo apt install mysql-client -y
RDS 엔드포인트를 사용해 접속:

bash
코드 복사
mysql -h <RDS_ENDPOINT> -u <USERNAME> -p
엔드포인트는 RDS 콘솔 또는 describe-db-instances 명령어로 확인할 수 있습니다.

3-2. PostgreSQL에 접속
PostgreSQL 클라이언트 설치:

bash
코드 복사
sudo apt install postgresql-client -y
RDS 엔드포인트를 사용해 접속:

bash
코드 복사
psql -h <RDS_ENDPOINT> -U <USERNAME> -d <DATABASE_NAME>
4. CloudShell에서 CLI 사용하기 (웹 브라우저 환경)
AWS Management Console에서 CloudShell을 사용하면 로컬 설치 없이 AWS CLI 명령어를 실행할 수 있습니다.

AWS 콘솔 상단에서 CloudShell 아이콘(터미널 모양)을 클릭.
터미널에서 AWS CLI 명령어 실행.
5. 주의사항
RDS 인스턴스에 접속하려면 보안 그룹에서 사용 중인 IP에 대해 적절한 접근 권한이 열려 있어야 합니다.
RDS는 기본적으로 인터넷에 공개되지 않도록 설정됩니다. 필요 시 퍼블릭 액세스를 활성화하거나, VPN 또는 AWS Direct Connect를 통해 연결하세요.
추가 설정이나 질문이 있다면 알려주세요!
더 많은 도움은 GPT Online에서 확인할 수 있습니다.

psql -h <RDS_ENDPOINT> -U <USERNAME> -d <DATABASE_NAME>


쉘로 접속방법
https://docs.aws.amazon.com/ko_kr/cloudshell/latest/userguide/welcome.html

테이블 스페이스 확인
SELECT * FROM pg_tablespace;

 

 

요약

  • Pod에 접속하여 pg_restore 명령을 실행.
  • 백업 덤프 파일을 Pod에 복사하거나 외부 스토리지에서 접근.
  • pg_restore를 사용하여 PostgreSQL 데이터베이스에 데이터를 복원.
  • 복원 후 데이터 무결성 확인.

이 과정은 Kubernetes 환경에서 PostgreSQL 데이터베이스를 복원하는 일반적인 방법입니다. 필요에 따라 네트워크 설정을 통해 외부에서 접근하거나 내부 클러스터 내에서만 사용할 수 있습니다.

댓글