1세대용 외부 마스터 구성

이 페이지에서는 1세대 복제본으로 복제되는 외부 마스터를 구성하는 방법을 설명합니다.

외부 마스터는 Cloud SQL 외부의 MySQL 인스턴스이며 1세대 인스턴스의 마스터 역할을 합니다. Compute Engine에서 실행되는 MySQL 서버는 Cloud SQL의 외부 서버로 간주됩니다.

외부 마스터 구성 정보

Cloud SQL 외부 마스터를 구성하면 Cloud SQL의 외부에 있는 마스터를 복제하는 Cloud SQL 1세대 인스턴스를 만들 수 있습니다. 해당 Cloud SQL 복제본은 애플리케이션에서 액세스할 수 없으며 독립형 1세대 인스턴스로 승격되거나 마스터에서 데이터의 최신 사본으로 사용될 수 있습니다.

이러한 구성에는 내부 마스터 인스턴스라고 하는 Cloud SQL 인스턴스가 필요합니다. 이 인스턴스는 Cloud SQL에서 Cloud SQL 복제본의 마스터로 표시됩니다. 내부 마스터 인스턴스는 외부 인스턴스와 함께 Cloud SQL 복제본의 마스터 인스턴스를 구성합니다.

외부 마스터 구성 다이어그램

데이터는 외부 마스터에서 Cloud SQL 복제본으로 직접 복제됩니다. 내부 마스터 인스턴스는 데이터 복제에 관여하지 않습니다. 내부 마스터 인스턴스가 표준 Cloud SQL 인스턴스인 것처럼 보이지만 내부 마스터 인스턴스에는 요금이 부과되지 않습니다. 내부 마스터 인스턴스는 직접 관리할 수 없습니다.

시작하기 전에

  • 외부 마스터 인스턴스의 요구사항을 충족하는 외부 인스턴스가 있어야 합니다.
  • 외부 마스터 인스턴스의 외부 IP 주소 및 포트와 마스터 인스턴스 복제 사용자의 사용자 이름 및 비밀번호 정보가 있어야 합니다.
  • Cloud SQL Admin API를 사용 설정합니다.

    API 사용 설정

외부 마스터 구성 요구사항

  • 내부 마스터 인스턴스 및 Cloud SQL 복제본은 1세대 인스턴스여야 합니다.
  • 외부 마스터 인스턴스 및 Cloud SQL 복제본은 같은 버전의 MySQL(5.5 또는 5.6)을 사용해야 합니다.
  • 외부 마스터에서 바이너리 로깅을 사용 설정해야 합니다. 자세히 알아보기
  • server-id 옵션은 2 이상의 값으로 설정해야 합니다. 자세히 알아보기
  • 외부 마스터가 Compute Engine 인스턴스에 있는 경우 할당된 공용 IP 주소가 있어야 합니다.
  • 공개 IP 주소로 외부 마스터에 액세스할 수 있어야 합니다.
  • 내부 마스터의 시작 이미지를 제공하는 데 사용할 마스터의 덤프 파일은 Cloud SQL의 덤프 파일 요구사항을 준수해야 합니다. 자세히 알아보기
  • 외부 마스터의 복제 사용자 계정을 REPLICATION SLAVE 권한으로 구성해야 합니다.

데이터 준비

외부 마스터 구성에 사용할 데이터를 준비하려면 마스터 인스턴스의 데이터가 포함된 mysqldump 파일을 만들고 이를 Cloud Storage에 업로드합니다.

  1. Cloud Storage 버킷을 만듭니다.

    버킷에는 복제본으로 가져올 덤프 파일이 보관됩니다. 자세한 내용은 저장소 버킷 만들기를 참조하세요.

  2. SQL 덤프 파일 만들기의 외부 복제 안내에 따라 마스터 인스턴스에서 mysqldump 파일을 만듭니다.

  3. 파일을 Cloud Storage 버킷에 업로드합니다.

    자세한 내용은 버킷에 데이터 업로드하기를 참조하세요.

외부 마스터 구성하기

  1. 복제본을 저장할 영역과 외부 마스터 인스턴스의 외부 IP 주소 및 포트를 사용하여 내부 마스터 인스턴스를 만듭니다.

    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"name": "[INTERNAL_MASTER_INSTANCE_NAME]",
              "region": "[REGION_NAME]",
              "databaseVersion": "[EXTERNAL_MASTER_DATABASE_VERSION]",
              "onPremisesConfiguration": {"hostPort": "[IP_ADDRESS:PORT]"}}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    내부 마스터 인스턴스가 만들어지면 외부 마스터의 IP 주소 및 포트는 내부 마스터의 IP 주소로 표시됩니다.

  2. 내부 마스터 인스턴스 초기화가 완료되면 외부 마스터의 복제 사용자 계정 정보와 이전에 준비한 데이터 위치를 제공하여 복제본을 만듭니다.

    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"replicaConfiguration":
               {"mysqlReplicaConfiguration":
                 {"username": "[REPLICATION_USER]",
                  "password": "[REPLICATION_USER_PASSWORD]",
                  "dumpFilePath": "[BUCKET_LOCATION]",
                  "caCertificate": "[SOURCE_SERVER_CA]",
                  "clientCertificate": "[CLIENT_CERT]",
                  "clientKey": "[PRIVATE_KEY]"}},
              "settings": {"tier": "[TIER]","activationPolicy": "ALWAYS"},
              "databaseVersion": "[EXTERNAL_MASTER_DATABASE_VERSION]",
              "masterInstanceName": "[INTERNAL_MASTER_INSTANCE_NAME]",
              "name": "[REPLICA_NAME]", "region": "[REGION_NAME]"}' \
     -X POST \
     https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    요청 본문에서 dumpFile, username, password 필드는 필수 항목입니다. dumpFile 필드의 형식은 gs://bucket-location/filename입니다. D4와 같은 1세대 등급을 사용해야 합니다. databaseVersion의 경우 마스터 인스턴스의 MySQL 버전(MYSQL_5_5 또는 MYSQL_5_6)을 제공합니다. region 필드는 마스터와 같아야 합니다.

    SSL/TLS 정보는 선택사항이지만 보안을 위해 적극 권장됩니다.

    처음 생성 시 복제본은 마스터보다 오래된 상태이지만 복제본의 크기가 작업 부하에 맞게 조정되면 점차 업데이트됩니다.

  3. (선택 사항) 이전 단계를 반복하여 추가 복제본을 만듭니다.

  4. SSL/TLS를 사용하도록 마스터 인스턴스를 구성하지 않은 경우 업데이트를 통해 최소한 복제 사용자가 복제본에서만 액세스할 수 있도록 해야 합니다. 자세히 알아보기

다음 단계

복제본 관리 알아보기

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

MySQL용 Cloud SQL