3장. 포함된 PostgreSQL 10 데이터베이스에서 외부 PostgreSQL 10 데이터베이스로 마이그레이션


중요
  • system.appSpec.replicas1 로 스케일링하기 전에 데이터베이스를 지원되는 버전 (현재 PostgreSQL 13)으로 업그레이드해야 합니다. Red Hat 3scale API Management 지원 구성참조
  • 이 문서는 포함된 PostgreSQL 10 데이터베이스에서 외부 PostgreSQL 10 데이터베이스로의 마이그레이션에 관한 것입니다. 외부 PostgreSQL 10 데이터베이스에서 외부 PostgreSQL 13 데이터베이스로 업그레이드하려면 공식 PostgreSQL 문서를 따라야 합니다.
  • 면책 조항: 외부 웹사이트(s)에 포함된 링크는 편의를 위해서만 제공됩니다. Red Hat은 링크를 검토하지 않았으며 컨텐츠 또는 이용 가능 여부에 대해 책임을 지지 않습니다. 외부 웹 사이트에 대한 링크가 포함되어 있다고 해서 Red Hat이 해당 웹 사이트 또는 해당 엔티티, 제품, 서비스를 보증한다는 의미는 아닙니다. 사용자는 본인이 그러한 외부 사이트나 콘텐츠를 사용(또는 신뢰)하여 초래되는 어떠한 손실이나 비용에 대해 Red Hat이 어떠한 책임도 지지 않는 데 동의합니다.

포함된 PostgreSQL 데이터베이스에서 및 외부 PostgreSQL 데이터베이스로 이동하는 프로세스는 동일한 DB 버전에서 수행해야 합니다. 이 마이그레이션 가이드에서는 PostgreSQL 10이어야 합니다. 프로덕션 환경에 외부 데이터베이스를 사용해야 합니다.

PostgreSQL을 system-database 로 사용하는 경우 3scale과 함께 외부 데이터베이스 설치에 지원되는 버전을 사용합니다.

중요
  • 이러한 단계는 일반적인 지침입니다. 정확한 단계는 운영 체제, PostgreSQL 버전 및 데이터베이스의 특정 요구 사항에 따라 다를 수 있습니다.
  • 업그레이드하기 전에 PostgreSQL 문서 및 릴리스 노트를 주의 깊게 읽으십시오.
  • 프로덕션 배포에 적용하기 전에 프로덕션 환경 이외의 환경에서 이 절차를 테스트합니다.
  • 이 프로세스는 절차가 완료될 때까지 서비스 프로비저닝을 중단합니다. 이러한 중단으로 인해 유지 관리 기간이 있는지 확인하십시오.

프로세스

  1. APIManager CR(고객 리소스)을 사용하여 system-app 배포를 축소합니다.

    apiVersion: apps.3scale.net/v1alpha1
    kind: APIManager
    metadata:
      name: <apimanager_sample>
    spec:
      system:
        appSpec:
          replicas: 0
      wildcardDomain: <example.com>
    Copy to Clipboard Toggle word wrap
  2. Pod가 축소되었는지 확인합니다.

    $ oc get deployment system-app -o jsonpath='{.status.availableReplicas}{"\n"}'
    0
    Copy to Clipboard Toggle word wrap
    1. PostgreSQL 마이그레이션을 진행하기 전에 모든 3scale Pod의 상태가 Terminated 상태가 될 때까지 기다립니다.
  3. 모든 데이터, 구성 및 사용자 계정을 포함하여 기존 PostgreSQL 데이터베이스를 백업합니다.

    $ DB_USER=$(oc get secret system-database -o jsonpath="{.data.DB_USER}" | base64 --decode)
    $ DATABASE_NAME=$(oc get secret system-database -o jsonpath="{.data.URL}" | base64 --decode | cut -d '/' -f4)
    Copy to Clipboard Toggle word wrap
    중요

    stdout 으로 파이프하지 마십시오. 바이너리 파일이 손상됩니다.

  4. 사용자 지정 형식의 덤프:

    $ oc rsh $(oc get pods -l 'deployment=system-postgresql' -o json | jq -r '.items[0].metadata.name') bash -c "pg_dump -U $DB_USER -F c $DATABASE_NAME -f /tmp/<backupfilename>.backup"
    Copy to Clipboard Toggle word wrap
  5. 백업을 다운로드합니다.

    $ oc cp $(oc get pods -l 'deployment=system-postgresql' -o json | jq -r '.items[0].metadata.name'):/tmp/<backupfilename>.backup <backupfilename>.backup
    Copy to Clipboard Toggle word wrap
  6. 대상 외부 시스템의 3scale에 배포한 것과 동일한 PostgreSQL 10 버전을 설치합니다. 설치 지침에 따라 PostgreSQL 웹 사이트에서 설치 패키지를 다운로드합니다.
  7. 모든 데이터, 구성 및 사용자 계정을 포함하여 기존 PostgreSQL 데이터베이스로 만든 백업을 대상 외부 시스템에 복사하고 복원합니다.
  8. PostgreSQL에서 새 데이터베이스를 생성합니다.

    $ createdb -U <username> <databasename>
    Copy to Clipboard Toggle word wrap
  9. 백업 파일의 데이터를 새 PostgreSQL 데이터베이스로 가져옵니다.

    • 사용자 지정 형식으로 복원:

      $ pg_restore [--host <databasehostname>] -U <username> -d <databasename> --verbose -F c <backupfilename>.backup
      Copy to Clipboard Toggle word wrap
  10. 데이터베이스에 연결하고 쿼리를 실행하여 데이터를 새 PostgreSQL 데이터베이스로 성공적으로 가져왔는지 확인합니다.

    postgresql://<username>:<password>@<databasehostname>/<databasename>
    Copy to Clipboard Toggle word wrap
  11. system-database 시크릿을 업데이트합니다.

    $ oc apply -f - <<EOF
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: system-database
    stringData:
      DB_PASSWORD: <password>
      DB_USER: <username>
      URL: "postgresql://<username>:<password>@<databasehostname>:<databaseport>/<databasename>"
    type: Opaque
    EOF
    Copy to Clipboard Toggle word wrap
  12. APImanager CR을 업데이트하여 외부 데이터베이스를 활성화하고 시스템을 확장합니다.

    $ oc patch apimanager <apimanager_sample> --type=merge --patch '{"spec": {"system": {"database": null, "appSpec": {"replicas": 1}}, "externalComponents": {"system": {"database": true}}}}'
    Copy to Clipboard Toggle word wrap
  13. 로컬 postgresql 배포를 제거합니다.

    $ oc delete service system-postgresql
    $ oc delete deployment system-postgresql
    $ oc delete pvc postgresql-data
    Copy to Clipboard Toggle word wrap
  14. Pod가 확장되었는지 확인합니다.

    $ oc wait --for=condition=available apimanager/<apimanager_sample> --timeout=-1s
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat