인스턴스 만들기

이 페이지에서는 PostgreSQL용 Cloud SQL 인스턴스를 만드는 방법을 설명합니다.

모든 인스턴스 설정에 관한 자세한 내용은 인스턴스 설정을 참조하세요.

새로 생성된 인스턴스에는 postgres 데이터베이스가 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Google Cloud CLI를 설치합니다.
  5. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  6. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  7. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  8. Google Cloud CLI를 설치합니다.
  9. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  10. 사용자 계정에 Cloud SQL 관리자 및 Compute 뷰어 역할이 있는지 확인합니다.

    IAM 페이지로 이동

    역할 및 권한에 대해 여기서 자세히 알아보세요.

PostgreSQL 인스턴스 만들기

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 인스턴스 만들기 페이지의 데이터베이스 엔진 선택 패널에서 PostgreSQL 선택을 클릭합니다.
  4. 인스턴스 정보 창의 인스턴스 ID 필드에 인스턴스 ID를 입력합니다.

    인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

  5. postgres 사용자의 비밀번호를 입력합니다.
  6. 비밀번호를 일반 텍스트로 보려면 비밀번호 표시 아이콘을 클릭합니다.

    비밀번호를 직접 입력하거나 생성을 클릭하여 Cloud SQL에서 자동으로 비밀번호를 만들도록 할 수 있습니다.
  7. 선택사항: 다음과 같이 인스턴스의 비밀번호 정책을 구성합니다.

    1. 비밀번호 정책 사용 설정 체크박스를 선택합니다.
    2. 비밀번호 정책 설정 버튼을 클릭하고 다음 옵션 중 하나 이상을 설정한 다음 저장을 클릭합니다.
      • 최소 길이: 비밀번호에 필요한 최소 문자 수를 지정합니다.
      • 비밀번호 복잡성: 비밀번호가 소문자, 대문자, 숫자, 영숫자가 아닌 문자의 조합인지 확인합니다.
      • 비밀번호 재사용 제한: 재사용할 수 없는 이전 비밀번호 수를 지정합니다.
      • 사용자 이름 사용 금지: 비밀번호에서 사용자 이름을 사용하지 못하게 합니다.
      • 비밀번호 변경 간격 설정: 비밀번호를 변경할 수 있는 최소 시간을 지정합니다.
  8. PostgreSQL 15(기본값), PostgreSQL 14,
    PostgreSQL 13, PostgreSQL 12, PostgreSQL 11, PostgreSQL 10, PostgreSQL 9.6 중에서 인스턴스의 데이터베이스 버전을 선택합니다.

    인스턴스가 생성된 후에는 데이터베이스 버전을 수정할 수 없습니다.

  9. 인스턴스의 Cloud SQL 버전(Enterprise 또는 Enterprise plus)을 선택하세요. Cloud SQL 버전에 대한 자세한 내용은 Cloud SQL 버전 소개를 참조하세요.
  10. 리전 및 영역 가용성 선택 섹션에서 인스턴스의 리전 및 영역을 선택합니다. 리전 가용성은 Cloud SQL 버전에 따라 다를 수 있습니다. 자세한 내용은 인스턴스 설정 정보를 참조하세요.

    인스턴스를 인스턴스에 액세스하는 리소스와 같은 리전에 배치합니다. 선택한 리전은 나중에 수정할 수 없습니다. 대부분의 경우 영역을 지정할 필요가 없습니다.

    인스턴스를 고가용성으로 구성하는 경우 기본 영역과 보조 영역을 모두 선택할 수 있습니다.

    인스턴스를 만드는 동안 보조 영역이 사용되면 다음 조건이 적용됩니다.

    • 영역이 기본 영역은 Any로 보조 영역은 Any (different from primary)로 기본 설정됩니다.
    • 기본 영역과 보조 영역을 모두 지정할 경우 서로 별도의 영역이어야 합니다.
  11. 인스턴스 맞춤설정 섹션에서 인스턴스의 설정을 업데이트합니다. 구성 옵션 표시를 클릭하여 설정 그룹을 표시합니다. 그런 다음 원하는 그룹을 펼쳐 설정을 검토하고 맞춤설정합니다. 선택한 모든 옵션의 요약이 오른쪽에 표시됩니다. 이러한 인스턴스 설정의 맞춤설정은 선택사항입니다. 맞춤설정이 수행되지 않는 모든 경우에 기본값이 할당됩니다.

    다음 표는 인스턴스 설정에 대한 빠른 참조입니다. 각 설정에 대한 자세한 내용은 인스턴스 설정 페이지를 참조하세요.

    설정 참고
    머신 유형
    머신 유형 공유 코어 또는 전용 코어 중에서 선택합니다. 공유 코어의 경우 각 머신 유형은 CPU(코어) 수와 인스턴스 메모리 양에 따라 분류됩니다.
    코어 인스턴스의 vCPU 수입니다. 자세히 알아보기
    메모리 인스턴스의 메모리 양(GB)입니다. 자세히 알아보기
    커스텀 전용 코어 머신 유형의 경우 사전 정의된 구성을 선택하는 대신 커스텀 버튼을 선택하여 커스텀 구성으로 인스턴스를 만듭니다. 이 옵션을 선택할 때는 인스턴스의 코어 수와 메모리 양을 선택해야 합니다. 자세히 알아보기
    스토리지
    스토리지 유형 인스턴스 스토리지 유형(SSD 또는 HDD)을 결정합니다. 자세히 알아보기
    스토리지 용량 인스턴스에 제공된 저장용량입니다. 자세히 알아보기
    스토리지 자동 증가 사용 설정 인스턴스에 여유 공간이 부족할 때 Cloud SQL에서 자동으로 스토리지를 제공할지 여부를 결정합니다 자세히 알아보기
    암호화
    Google 관리 암호화기본 옵션입니다.
    고객 키 관리 암호화 키(CMEK)Google Cloud Key Management Service에서 자체 키를 사용하려면 선택합니다. 자세히 알아보기
    연결
    비공개 IP 인스턴스의 비공개 IP 주소를 추가합니다. 인스턴스에 연결하려면 추가 구성이 필요합니다.
    필요한 경우 연결에 사용할 인스턴스에 할당된 IP 범위를 지정할 수 있습니다.
    1. 할당된 IP 범위 옵션 표시를 펼칩니다.
    2. 드롭다운 메뉴에서 IP 범위를 선택합니다.

    인스턴스에는 공개 및 비공개 IP 주소가 모두 포함될 수 있습니다.

    공개 IP 인스턴스의 공개 IP 주소를 추가합니다. 그런 다음 승인된 네트워크를 추가하여 인스턴스에 연결하면 됩니다.

    인스턴스에는 공개 및 비공개 IP 주소가 모두 포함될 수 있습니다.

    공개 IP 사용에 대해 자세히 알아보세요.

    승인된 네트워크새로운 네트워크 이름과 네트워크 주소를 추가합니다. 자세히 알아보기
    Google Cloud 서비스의 비공개 경로

    이 체크박스를 선택하면 BigQuery와 같은 다른 Google Cloud 서비스가 Cloud SQL의 데이터에 액세스하고 비공개 연결을 통해 이 데이터에 대해 쿼리를 수행하도록 허용할 수 있습니다.

    데이터 보호
    백업 자동화 백업을 시작할 시간 자세히 알아보기
    백업을 저장할 위치를 선택하세요.대부분의 사용 사례에서 멀티 리전을 선택하세요. 특정 리전에 백업을 저장해야 하는 경우(예를 들어 규정 상 그렇게 해야 할 이유가 있는 경우) 리전을 선택하고 위치 드롭다운 메뉴에서 리전을 선택합니다.
    저장할 자동 백업 수 선택보관할 자동 백업의 수입니다(1~365일). 자세히 알아보기
    point-in-time recovery 사용 설정 point-in-time recovery 및 미리 쓰기 로깅을 사용 설정합니다. 자세히 알아보기
    삭제 보호 사용 설정 실수로 인한 인스턴스 삭제를 보호할지 여부를 결정합니다. 자세히 알아보기
    로그 보관 일수 선택 미리 쓰기 로그 보관 기간을 1~7일로 구성합니다. 기본 설정은 7일입니다. 자세히 알아보기
    유지보수
    선호 기간 Cloud SQL이 인스턴스에 서비스 중단 유지보수 작업을 수행할 시간(1시간)을 설정합니다. 이 시간을 설정하지 않으면 예상치 못한 때에 업무에 차질을 줄 수 있는 유지보수 작업이 발생할 수 있습니다. 자세히 알아보기
    업데이트 순서 동일한 프로젝트의 다른 인스턴스와 비교하여 선호하는 업데이트 시간을 설정합니다. 자세히 알아보기
    플래그
    플래그 추가 데이터베이스 플래그를 사용하여 인스턴스의 설정과 매개변수를 제어할 수 있습니다. 자세히 알아보기
    라벨
    라벨 추가추가하는 각 라벨의 키와 값을 추가합니다. 라벨을 사용하면 인스턴스를 정리할 수 있습니다.
    데이터 캐시
    데이터 캐시 사용 설정(선택사항) PostgreSQL용 Cloud SQL Enterprise Plus 버전 인스턴스용 데이터 캐시를 사용 설정합니다. 데이터 캐시에 대한 자세한 내용은 데이터 캐시를 참조하세요.
  12. 인스턴스 만들기를 클릭합니다.

    참고: 인스턴스를 만드는 데 몇 분 정도 걸릴 수 있습니다. 그러나 인스턴스가 생성되는 동안 인스턴스에 대한 정보를 볼 수 있습니다.

gcloud

gcloud CLI 설치 및 시작에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요. Cloud Shell 시작 방법에 대한 자세한 내용은 Cloud Shell 문서를 참조하세요.

  1. gcloud sql instances create 명령어를 사용해서 인스턴스를 만듭니다.
    Cloud SQL Enterprise Plus 버전 인스턴스의 경우:
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_14 \
    --region=REGION \
    --zone=ZONE \
    --tier=TIER \
    --edition=ENTERPRISE_PLUS
    

    Cloud SQL Enterprise 버전 인스턴스의 경우:
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_14 \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE \
    --region=REGION \
    --zone=ZONE
    
    또는 머신 유형으로 db-f1-micro 또는 db-g1-small을 선택한 경우 --tier 플래그를 사용할 수도 있습니다.
    gcloud sql instances create INSTANCE_NAME \
    --tier=API_TIER_STRING \
    --region=REGION
    

    vCPU 및 메모리 크기 값에는 다음과 같은 제한이 적용됩니다.

    • vCPU는 1 또는 2~96 사이의 짝수여야 합니다.
    • 메모리는 다음과 같아야 합니다.
      • vCPU당 0.9~6.5GB
      • 256MB의 배수
      • 최소 3.75GB(3,840MB)

    예를 들어 다음 문자열은 vCPU가 2개 있고 메모리가 7,680MB인 Cloud SQL Enterprise 버전 인스턴스를 만듭니다.

    gcloud sql instances create myinstance \
    --database-version=POSTGRES_14 \
    --cpu=2 \
    --memory=7680MB \
    --region=us-central1
    

    다음 문자열은 코어 4개가 있는 Cloud SQL Enterprise 버전 인스턴스를 만듭니다.

    gcloud sql instances create myinstance \
    --database-version=POSTGRES_14 \
    --tier=db-perf-optimized-N-4 \
    --edition=ENTERPRISE_PLUS \
    --region=us-central1
    
    --cpu--memory의 크기를 조정하는 방법에 대한 자세한 내용은 커스텀 인스턴스 구성을 참조하세요.

    REGION의 기본값은 us-central1입니다.

    이름은 외부에 공개되므로 민감한 정보나 개인 식별 정보는 포함하지 마세요.
    인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

    고가용성 인스턴스를 만드는 경우 --zone 매개변수와 --secondary-zone 매개변수를 사용하여 기본 영역과 보조 영역을 모두 지정할 수 있습니다. 인스턴스를 만들거나 수정하는 동안 보조 영역이 사용되는 경우에는 다음 조건이 적용됩니다.

    • 영역이 유효한 영역이어야 합니다.
    • 보조 영역이 지정된 경우 기본 영역도 지정해야 합니다.
    • 기본 영역과 보조 영역을 지정할 경우 서로 별도의 영역이어야 합니다.
    • 기본 영역과 보조 영역을 지정할 경우 두 영역이 같은 리전에 있어야 합니다.

    매개변수를 추가하여 다른 인스턴스 설정을 결정할 수 있습니다.

    설정 매개변수 참고
    필수 매개변수
    데이터베이스 버전 --database-version 데이터베이스 버전은 Cloud SQL 버전을 기반으로 합니다.
    리전 --region 유효한 값 알아보기
    비밀번호 정책 설정
    비밀번호 정책 사용 설정 --enable-password-policy 비밀번호 정책이 사용되는 경우 사용 설정합니다. 기본적으로 비밀번호 정책은 사용 중지되어 있습니다. --clear-password-policy 매개변수를 사용하여 사용 중지하면 다른 비밀번호 정책 매개변수가 재설정됩니다.
    최소 길이 --password-policy-min-length 비밀번호에 필요한 최소 문자 수를 지정합니다.
    비밀번호 복잡성 --password-policy-complexity 비밀번호 복잡성 검사를 사용하여 비밀번호에 소문자, 대문자, 숫자, 영숫자가 아닌 문자 등 각 문자 유형 중 하나가 포함되어 있는지 확인합니다. 값을 COMPLEXITY_DEFAULT로 설정합니다.
    비밀번호 재사용 제한 --password-policy-reuse-interval 재사용할 수 없는 이전 비밀번호의 수를 지정합니다.
    사용자 이름 허용 안함 --password-policy-disallow-username-substring 비밀번호에서 사용자 이름을 사용하지 못하게 합니다. 검사를 사용 중지하려면 --no-password-policy-disallow-username-substring 매개변수를 사용합니다.
    비밀번호 변경 간격 설정 --password-policy-password-change-interval 비밀번호를 변경할 수 있는 최소 기간을 지정합니다(예: 2분의 경우 2m).
    연결
    비공개 IP --network

    --no-assign-ip(선택사항)

    --allocated-ip-range-name(선택사항)

    --enable-google-private-path(선택사항)

    --network: 이 인스턴스에 사용할 VPC 네트워크의 이름을 지정합니다. 비공개 서비스 액세스가 이미 네트워크에 구성되어 있어야 합니다. 베타 명령어(gcloud beta sql instances create)에서만 사용할 수 있습니다.

    --no-assign-ip: 인스턴스에 비공개 IP 주소만 있습니다.

    --allocated-ip-range-name: 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 예를 들면 google-managed-services-default입니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다. (gcloud alpha sql instances create).

    --enable-google-private-path: 이 매개변수를 사용하면 BigQuery와 같은 다른 Google Cloud 서비스가 Cloud SQL의 데이터에 액세스하고 비공개 IP 연결을 통해 이 데이터에 대해 쿼리할 수 있습니다.

    이 매개변수는 다음 경우에만 유효합니다.

    • --no-assign-ip 매개변수를 사용합니다.
    • --network 매개변수를 사용하여 비공개 연결을 만드는 데 사용할 VPC 네트워크의 이름을 지정합니다.

    비공개 IP 구성에 대해 자세히 알아보세요.

    공개 IP --authorized-networks 공개 IP 연결의 경우 승인된 네트워크의 연결만 인스턴스에 연결됩니다. 자세히 알아보기
    SSL 시행

    --ssl-mode

    --require-ssl

    ssl-mode 매개변수는 연결에 SSL/TLS 시행을 적용합니다. 자세한 내용은 PostgreSQL용 Cloud SQL 설정을 참조하세요.

    require-ssl 매개변수는 IP를 통한 SSL 연결이 적용되는지 여부를 결정합니다. require-ssl은 기존 매개변수입니다. 대신 ssl-mode를 사용하세요. 자세한 내용은 IpConfiguration을 참조하세요.

    머신 유형 및 스토리지
    머신 유형 --tier 공유 코어 인스턴스를 지정하는 데 사용됩니다(db-f1-micro 또는db-g1-small). 커스텀 인스턴스 구성의 경우 --cpu 또는 --memory 매개변수를 대신 사용합니다. 커스텀 인스턴스 구성을 참조하세요.
    스토리지 유형 --storage-type 인스턴스 스토리지 유형(SSD 또는 HDD)을 결정합니다. 자세히 알아보기
    스토리지 용량 --storage-size 인스턴스에 제공된 스토리지 용량(GB)입니다. 자세히 알아보기
    스토리지 자동 증가 --storage-auto-increase 인스턴스에 여유 공간이 부족할 때 Cloud SQL에서 자동으로 스토리지를 제공할지 여부를 결정합니다 자세히 알아보기
    스토리지 자동 증가 한도 --storage-auto-increase-limit Cloud SQL이 자동으로 스토리지를 늘릴 수 있는 정도를 결정합니다. 베타 명령어(gcloud beta sql instances create)에서만 사용할 수 있습니다. 자세히 알아보기
    데이터 캐시(선택사항) --enable-data-cache 인스턴스의 데이터 캐시를 사용 설정 또는 중지합니다. 자세한 내용은 데이터 캐시를 참조하세요.
    자동 백업 및 고가용성
    고가용성 --availability-type 고가용성 인스턴스의 경우 REGIONAL로 설정합니다. 자세히 알아보기
    보조 영역 --secondary-zone 고가용성 인스턴스를 만드는 경우 --zone--secondary-zone parameters를 사용하여 기본 영역과 보조 영역을 모두 지정할 수 있습니다. 인스턴스를 만들거나 수정하는 동안 보조 영역이 사용되는 경우에는 다음 제한 사항이 적용됩니다.
    • 영역이 유효한 영역이어야 합니다.
    • 보조 영역이 지정된 경우 기본 영역도 지정해야 합니다.
    • 기본 영역과 보조 영역을 지정할 경우 서로 별도의 영역이어야 합니다.

      기본 영역과 보조 영역을 지정할 경우 두 영역이 같은 리전에 있어야 합니다.

    자동 백업 --backup-start-time 백업을 시작할 시간 자세히 알아보기
    자동 백업 보관 설정 --retained-backups-count 보관할 자동 백업 수입니다. 자세히 알아보기
    point-in-time recovery --enable-point-in-time recovery point-in-time recovery 및 미리 쓰기 로깅을 사용 설정합니다. 자세히 알아보기
    바이너리 로깅 보관 설정 --retained-transaction-log-days point-in-time recovery에 대한 미리 쓰기 로그를 보관할 일 수입니다.여기서 자세히 알아보세요.
    데이터베이스 플래그 추가
    데이터베이스 플래그 --database-flags 데이터베이스 플래그를 사용하여 인스턴스의 설정과 매개변수를 제어할 수 있습니다. 데이터베이스 플래그에 대해 자세히 알아보세요.
    유지보수 일정
    유지보수 기간 --maintenance-window-day,
    --maintenance-window-hour
    Cloud SQL이 인스턴스에 방해가 되는 유지보수 작업을 수행할 기간(1시간)을 설정합니다. 이 기간을 설정하지 않으면 방해가 되는 유지보수 작업이 언제든지 발생할 수 있습니다. 자세히 알아보기
    유지보수 시점 --maintenance-release-channel 동일한 프로젝트의 다른 인스턴스와 비교하여 선호하는 업데이트 시간을 설정합니다. 이전 업데이트에는 preview를 사용하고 이후 업데이트에는 production을 사용합니다. 자세히 알아보기
    Vertex AI와 통합
    --enable-google-ml-integration Cloud SQL 인스턴스를 Vertex AI에 연결하여 실시간 예측 및 통계 요청을 AI에 전달할 수 있습니다.
    --database-flags cloudsql.enable_google_ml_integration=on 이 플래그를 사용 설정하면 Cloud SQL을 Vertex AI와 통합할 수 있습니다.

  2. 자동 할당된 IP 주소를 기록합니다.

    Cloud SQL 인증 프록시를 사용하지 않는 경우 이 주소를 호스트 주소로 사용하여 애플리케이션 또는 도구에서 인스턴스로 연결합니다.

  3. postgres 사용자의 비밀번호를 설정합니다.
    gcloud sql users set-password postgres \
    --instance=INSTANCE_NAME \
    --password=PASSWORD
    

Terraform

인스턴스를 만들려면 Terraform 리소스를 사용합니다.

resource "google_sql_database_instance" "postgres_pvp_instance_name" {
  name             = "postgres-pvp-instance-name"
  region           = "asia-northeast1"
  database_version = "POSTGRES_14"
  root_password    = "abcABC123!"
  settings {
    tier = "db-custom-2-7680"
    password_validation_policy {
      min_length                  = 6
      reuse_interval              = 2
      complexity                  = "COMPLEXITY_DEFAULT"
      disallow_username_substring = true
      password_change_interval    = "30s"
      enable_password_policy      = true
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

변경사항 적용

Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.

Cloud Shell 준비

  1. Cloud Shell을 실행합니다.
  2. Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.

    이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.

디렉터리 준비

각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.

  1. Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는 .tf 확장자가 있어야 합니다(예: main.tf). 이 튜토리얼에서는 파일을 main.tf라고 합니다.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.

    샘플 코드를 새로 만든 main.tf에 복사합니다.

    필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.

  3. 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
  4. 변경사항을 저장합니다.
  5. Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
    terraform init

    원하는 경우 최신 Google 공급업체 버전을 사용하려면 -upgrade 옵션을 포함합니다.

    terraform init -upgrade

변경사항 적용

  1. 구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
    terraform plan

    필요에 따라 구성을 수정합니다.

  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 Terraform 구성을 적용합니다.
    terraform apply

    Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.

  3. 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.

변경사항 삭제

변경사항을 삭제하려면 다음 단계를 따르세요.

  1. Terraform 구성 파일에서 삭제 보호를 사용 중지하려면 deletion_protection 인수를 false로 설정합니다.
    deletion_protection =  "false"
  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 업데이트된 Terraform 구성을 적용합니다.
    terraform apply
  1. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 이전에 Terraform 구성에 적용된 리소스를 삭제합니다.

    terraform destroy

REST v1

인스턴스 만들기

이 예시에서는 인스턴스를 만듭니다. 백업 및 바이너리 로깅과 같은 일부 선택적 매개변수도 포함됩니다. 이 호출의 전체 매개변수 목록은 인스턴스 삽입을 참조하세요. 리전에 따른 유효값을 포함한 인스턴스 설정에 대한 자세한 내용은 인스턴스 설정을 참조하세요.

인스턴스 ID는 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요.
인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • INSTANCE_ID: 인스턴스 ID
  • REGION: 리전
  • DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다. 예를 들면 POSTGRES_13입니다.
  • PASSWORD: 루트 사용자의 비밀번호입니다.
  • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]와 같은 머신(등급) 유형의 열거형 문자열입니다.
  • EDITION_TYPE: Cloud SQL 버전
  • DATA_CACHE_ENABLED: (선택사항) 인스턴스에 데이터 캐시를 사용 설정하려면 true로 설정합니다.
  • PRIVATE_NETWORK: 이 인스턴스에 사용하려는 Virtual Private Cloud(VPC) 네트워크 이름을 지정합니다. 비공개 서비스 액세스가 이미 네트워크에 구성되어 있어야 합니다.
  • AUTHORIZED_NETWORKS: 공개 IP 연결의 경우 인스턴스에 연결할 수 있는 승인된 네트워크의 연결을 지정합니다.

인스턴스를 만들 때 비밀번호 정책을 설정하려면 요청에 passwordValidationPolicy 객체를 포함합니다. 필요에 따라 다음 매개변수를 설정합니다.

  • enablePasswordPolicy: true로 설정하면 비밀번호 정책을 사용 설정합니다.

    비밀번호 정책을 삭제하려면 null을 사용하여 PATCH 요청을 enablePasswordPolicy 값으로 사용하면 됩니다. 이 경우 다른 비밀번호 정책 매개변수가 재설정됩니다.

  • minLength: 비밀번호에 필요한 최소 문자 수를 지정합니다.
  • complexity: 비밀번호가 소문자, 대문자, 숫자, 영숫자가 아닌 문자의 조합인지 확인합니다. 기본값은 COMPLEXITY_DEFAULT입니다.
  • reuseInterval: 재사용할 수 없는 이전 비밀번호의 수를 지정합니다.
  • disallowUsernameSubstring: true로 설정하면 비밀번호에 사용자 이름을 사용하지 못하게 합니다.
  • passwordChangeInterval: 비밀번호를 변경할 수 있는 최소 기간을 지정합니다. 값은 초 단위이며, 소수점 아래 9자리까지 지정 가능하고 s로 끝납니다. 예를 들면 3.5s입니다.

Vertex AI와 통합되도록 인스턴스를 만들려면 요청에 enableGoogleMlIntegration 객체를 포함합니다. 이 통합을 통해 Vertex AI에서 호스팅되는 대규모 언어 모델(LLM)을 PostgreSQL용 Cloud SQL 데이터베이스에 적용할 수 있습니다.

필요에 따라 다음 매개변수를 설정합니다.

  • enableGoogleMlIntegration: 이 매개변수가 true로 설정되면 Cloud SQL 인스턴스가 Vertex AI에 연결하여 실시간 예측 및 통계 요청을 AI에 전달할 수 있습니다.
  • cloudsql.enable_google_ml_integration: 이 매개변수가 on으로 설정되면 Cloud SQL이 Vertex AI와 통합될 수 있습니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

JSON 요청 본문:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "enableGoogleMlIntegration": "true" | "false"
    "databaseFlags":
    [
      {
        "name": "cloudsql.enable_google_ml_integration",
        "value": "on" | "off"
      }
    ]
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
      "passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
    }
    "ipConfiguration": {
      "privateNetwork": "PRIVATE_NETWORK",
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      "ipv4Enabled": false,
      "enablePrivatePathForGoogleCloudServices": true
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2019-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

응답은 장기 실행 작업이므로 완료하는 데 몇 분 정도 소요될 수 있습니다.

IPv4 주소 검색

새로운 인스턴스에 자동으로 할당된 IPv4 주소를 검색합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 이전 단계에서 생성한 인스턴스 ID

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0_18",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "us-west1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "18:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "1",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "us-west1",
  "gceZone": "us-west1-a"
}

응답에서 ipAddress 필드를 찾습니다.

REST v1beta4

인스턴스 만들기

이 예시에서는 인스턴스를 만듭니다. 백업 및 바이너리 로깅과 같은 일부 선택적 매개변수도 포함됩니다. 이 호출의 전체 매개변수 목록은 instances:insert 페이지를 참조하세요. 리전에 따른 유효값을 포함한 인스턴스 설정에 대한 자세한 내용은 인스턴스 설정을 참조하세요.

인스턴스 ID는 외부에 공개되므로 민감한 정보나 개인 식별 정보를 포함하지 마세요.
인스턴스 이름에 프로젝트 ID를 포함하지 않아도 됩니다. 필요한 경우 자동으로 포함됩니다(예: 로그 파일에서).

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • INSTANCE_ID: 인스턴스 ID
  • REGION: 리전
  • DATABASE_VERSION: 데이터베이스 버전의 열거형 문자열입니다. 예를 들면 POSTGRES_13입니다.
  • PASSWORD: 루트 사용자의 비밀번호입니다.
  • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]와 같은 머신(등급) 유형의 열거형 문자열입니다.
  • EDITION_TYPE: Cloud SQL 버전
  • DATA_CACHE_ENABLED: (선택사항) true로 설정하여 인스턴스에 데이터 캐시 사용 설정

인스턴스를 만들 때 비밀번호 정책을 설정하려면 요청에 passwordValidationPolicy 객체를 포함합니다. 필요에 따라 다음 매개변수를 설정합니다.

  • enablePasswordPolicy: true로 설정하면 비밀번호 정책을 사용 설정합니다.

    비밀번호 정책을 삭제하려면 null을 사용하여 PATCH 요청을 enablePasswordPolicy 값으로 사용하면 됩니다. 이 경우 다른 비밀번호 정책 매개변수가 재설정됩니다.

  • minLength: 비밀번호에 필요한 최소 문자 수를 지정합니다.
  • complexity: 비밀번호가 소문자, 대문자, 숫자, 영숫자가 아닌 문자의 조합인지 확인합니다. 기본값은 COMPLEXITY_DEFAULT입니다.
  • reuseInterval: 재사용할 수 없는 이전 비밀번호의 수를 지정합니다.
  • disallowUsernameSubstring: true로 설정하면 비밀번호에 사용자 이름을 사용하지 못하게 합니다.
  • passwordChangeInterval: 비밀번호를 변경할 수 있는 최소 기간을 지정합니다. 값은 초 단위이며, 소수점 아래 9자리까지 지정 가능하고 s로 끝납니다. 예를 들면 3.5s입니다.

Vertex AI와 통합되도록 인스턴스를 만들려면 요청에 enableGoogleMlIntegration 객체를 포함합니다. 이 통합을 통해 Vertex AI에서 호스팅되는 대규모 언어 모델(LLM)을 PostgreSQL용 Cloud SQL 데이터베이스에 적용할 수 있습니다.

필요에 따라 다음 매개변수를 설정합니다.

  • enableGoogleMlIntegration: 이 매개변수가 true로 설정되면 Cloud SQL 인스턴스가 Vertex AI에 연결하여 실시간 예측 및 통계 요청을 AI에 전달할 수 있습니다.
  • cloudsql.enable_google_ml_integration: 이 매개변수가 on으로 설정되면 Cloud SQL이 Vertex AI와 통합될 수 있습니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

JSON 요청 본문:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "enableGoogleMlIntegration": "true" | "false"
    "databaseFlags":
    [
      {
        "name": "cloudsql.enable_google_ml_integration",
        "value": "on" | "off"
      }
    ]
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
      "passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

응답은 장기 실행 작업이므로 완료하는 데 몇 분 정도 소요될 수 있습니다.

IPv4 주소 검색

새로운 인스턴스에 자동으로 할당된 IPv4 주소를 검색합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 이전 단계에서 생성한 인스턴스 ID

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0_18",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "us-west1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "18:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "1",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "us-west1",
  "gceZone": "us-west1-a"
}

응답에서 ipAddress 필드를 찾습니다.

이 작업에 적합한 기본 REST API 요청을 구성하는 방법은 instances:insert 페이지의 API 탐색기를 참조하세요.

커스텀 인스턴스 구성

Cloud SQL 인스턴스에 사용 가능한 메모리 및 가상 코어를 결정합니다. 머신 유형 가용성은 Cloud SQL 버전에 따라 결정됩니다.

온라인 트랜잭션 처리(OLTP)와 같이 실시간 처리가 필요한 워크로드의 경우 인스턴스에 전체 작업 세트를 포함할 만큼 충분한 메모리가 있는지 확인하세요. 그러나 메모리 요구사항에 영향을 줄 수 있는 다른 요인(예: 활성 연결 수 및 내부 오버헤드 프로세스)도 있습니다. 프로덕션 환경에서 성능 문제가 발생하지 않도록 부하 테스트를 수행해야 합니다.

인스턴스를 구성할 때 워크로드를 처리하기에 충분한 메모리와 vCPU를 선택하고 워크로드가 증가함에 따라 업그레이드하세요. vCPU가 부족한 머신 구성에는 SLA가 적용되지 않을 수 있습니다. 자세한 내용은 운영 가이드라인을 참조하세요.

Cloud SQL Enterprise Plus 버전 인스턴스의 머신 유형

Cloud SQL Enterprise Plus 버전 인스턴스의 경우 머신 유형은 다음과 같이 사전 정의됩니다.

Enterprise Plus 머신 유형 vCPU 메모리(GB) 로컬 SSD
db-perf-optimized-N-2 2 16 375
db-perf-optimized-N-4 4 32 375
db-perf-optimized-N-8 8 64 375
db-perf-optimized-N-16 16 128 750
db-perf-optimized-N-32 32 256 1500
db-perf-optimized-N-48 48 384 3000
db-perf-optimized-N-64 64 512 6000
db-perf-optimized-N-80 80 640 6000
db-perf-optimized-N-96 96 768 6000
db-perf-optimized-N-128 128 864 9000

Cloud SQL Enterprise 버전 인스턴스의 머신 유형

Cloud SQL Enterprise 버전 인스턴스의 경우 gcloud sql instances create 명령어를 사용하여 커스텀 인스턴스 구성을 만들 수도 있습니다. 커스텀 인스턴스 구성을 사용하면 인스턴스에 필요한 메모리와 CPU의 용량을 선택할 수 있습니다. 이러한 유연성 덕분에 워크로드에 적합한 VM 형태를 선택할 수 있습니다.

머신 유형 이름은 다음 형식을 사용합니다. db-custom-#-#

첫 번째 # 자리표시자를 머신의 CPU 수로 바꾸고 두 번째 # 자리표시자를 머신의 메모리 양으로 바꿉니다.

예를 들어 머신 이름이 db-custom이고 머신에 1개의 CPU와 3,840MB의 RAM이 있는 경우 머신 형식은 db-custom-1-3840입니다.

CPU 수 및 메모리 양을 선택할 때 선택한 구성에 다음 제한사항이 적용됩니다.

  • vCPU는 1 또는 2~96 사이의 짝수여야 합니다.
  • 메모리는 다음과 같아야 합니다.
    • vCPU당 0.9~6.5GB
    • 256MB의 배수
    • 최소 3.75GB(3,840MB)

다음 표에는 각 기존 머신 유형의 이름, 각 머신 유형의 CPU와 RAM의 수, 머신 유형의 결과 문자열이 나와 있습니다.

Google Cloud 콘솔에서 동등한 CPU와 RAM을 지정하거나, gcloud CLI를 사용하거나, API에서 db-custom-#-#를 지정하여 동일한 머신 유형을 만들 수 있습니다.

기존 머신 유형 vCPU 메모리(MB) db-custom-CPU-RAM 문자열(API 등급 문자열)
db-n1-standard-1 1 3840 db-custom-1-3840
db-n1-standard-2 2 7680 db-custom-2-7680
db-n1-standard-4 4 15360 db-custom-4-15360
db-n1-standard-8 8 30720 db-custom-8-30720
db-n1-standard-16 16 61440 db-custom-16-61440
db-n1-standard-32 32 122880 db-custom-32-122880
db-n1-standard-64 64 245760 db-custom-64-245760
db-n1-standard-96 96 368640 db-custom-96-368640
db-n1-highmem-2 2 13312 db-custom-2-13312
db-n1-highmem-4 4 26624 db-custom-4-26624
db-n1-highmem-8 8 53248 db-custom-8-53248
db-n1-highmem-16 16 106496 db-custom-16-106496
db-n1-highmem-32 32 212992 db-custom-32-212992
db-n1-highmem-64 64 425984 db-custom-64-425984
db-n1-highmem-96 96 638976 db-custom-96-638976

문제 해결

문제 문제 해결
오류 메시지: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. 할당된 IP 범위에 사용 가능한 주소가 더 이상 없습니다. 다음과 같은 몇 가지 시나리오가 있을 수 있습니다.

  • 비공개 서비스 연결에 할당된 IP 범위의 크기가 /24보다 작습니다.
  • 비공개 서비스 연결에 할당된 IP 범위의 크기가 Cloud SQL 인스턴스 수에 비해 너무 작습니다.
  • 인스턴스가 여러 리전에서 생성되는 경우 할당된 IP 범위의 크기 요구사항이 더 커집니다. 할당된 범위 크기를 참조하세요.

이 문제를 해결하려면 기존 할당된 IP 범위를 확장하거나 추가 IP 범위를 비공개 서비스 연결에 할당할 수 있습니다. 자세한 내용은 IP 주소 범위 할당을 참조하세요.

Cloud SQL 인스턴스를 만들 때 --allocated-ip-range-name 플래그를 사용한 경우 지정된 IP 범위만 확장할 수 있습니다.

새 범위를 할당할 경우 할당이 기존 할당과 겹치지 않도록 합니다.

새 IP 범위를 만든 후 다음 명령어를 사용하여 VPC 피어링을 업데이트합니다.


gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

기존 할당을 확장하는 경우 할당 범위를 늘리기만 하고 줄이지 않도록 합니다. 예를 들어 원래 할당이 10.0.10.0/24인 경우 새 할당을 최소 10.0.10.0/23으로 만듭니다.

일반적으로 /24 할당에서 시작하는 경우 각 조건(추가 인스턴스 유형 그룹, 추가 리전)에 대해 /mask를 1만큼 줄이는 것이 좋은 규칙입니다. 예를 들어 동일한 할당에서 두 인스턴스 유형 그룹을 모두 만들려는 경우 /24에서 /23으로 전환하면 충분합니다.

기존 IP 범위를 확장한 후 다음 명령어를 사용하여 VPC 피어링을 업데이트합니다.


gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
오류 메시지: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. Cloud SQL 인스턴스를 다시 만들어 보세요.

다음 단계

  1. 인스턴스에 PostgreSQL 데이터베이스 만들기
  2. 인스턴스에 PostgreSQL 사용자 만들기
  3. 인스턴스 액세스 보안 및 제어
  4. 인스턴스와 PostgreSQL 클라이언트 연결
  5. 데이터베이스로 데이터 가져오기