가이드: 자동 워크플로를 사용하여 MySQL에서 Cloud SQL로 마이그레이션

이 가이드에서는 Cloud SQL 자동 마이그레이션 워크플로를 사용하여 MySQL 5.7 데이터베이스를 Cloud SQL로 마이그레이션하는 방법을 설명합니다. 이 가이드는 지원 문서인 MySQL에서 Cloud SQL로 마이그레이션에서 설명하는 외부 복제본 승격 전략을 따릅니다. 이 가이드에서는 사용자가 MySQL 개념에 익숙하고 Cloud SQL의 기능 및 성능을 잘 알고 있으며 개념 문서를 읽은 것으로 가정합니다.

목표

  • MySQL 데이터베이스를 소스 데이터베이스 역할을 하는 Compute Engine에 배포합니다.
  • Cloud SQL 마이그레이션 기본 요건을 모두 충족하는지 확인합니다.
  • 자동 마이그레이션 워크플로를 사용하여 Cloud SQL 복제본을 만듭니다.
  • 복제본 데이터베이스가 Cloud SQL에서 실행되는지 확인합니다.
  • Cloud SQL 데이터베이스를 복제본에서 기본 데이터베이스로 승격합니다.
  • Cloud SQL 데이터베이스를 사용하기 위해 애플리케이션을 업데이트합니다.
  • 기본 데이터베이스가 Cloud SQL에서 실행되는지 확인합니다.

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

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

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Compute Engine and Cloud SQL API를 사용 설정합니다.

    API 사용 설정

아키텍처

빌드할 초기 아키텍처에는 Cloud Deployment Manager를 사용하여 배포되고 Compute Engine에서 실행되는 MySQL 기반 WordPress 애플리케이션이 포함됩니다. 이 가이드에서는 Compute Engine에서 소스 데이터베이스를 실행하지만, 이 가이드의 절차에 따라 공개 IPv4 액세스 권한이 있는 MySQL 데이터베이스를 위치에 관계없이 마이그레이션할 수 있습니다. 여기에는 온프레미스 환경, 코로케이션 시설, 클라우드 제공업체 위치가 포함됩니다.

다음 다이어그램과 같이 우선 MySQL를 데이터베이스로 사용하는 Compute Engine에서 실행되는 애플리케이션을 만듭니다.

시작 데이터베이스 아키텍처

그리고 다음 다이어그램과 같이 mysqldump 명령어를 사용하여 MySQL 데이터베이스를 Cloud SQL에 복제합니다.

데이터베이스 복제 아키텍처

그런 다음 Cloud SQL 복제본을 기본 데이터베이스로 승격한 다음 새로운 기본 데이터베이스 사용을 위해 애플리케이션을 업데이트합니다. 마이그레이션이 완료되면 아키텍처는 Cloud SQL에서 호스팅된 데이터베이스를 사용합니다. 다음 다이어그램은 새로운 Cloud SQL 데이터베이스를 사용하는 앱을 보여줍니다.

마이그레이션된 데이터베이스 아키텍처

Compute Engine에 소스 MySQL 데이터베이스 배포

먼저 Cloud SQL로 이전할 소스 MySQL 데이터베이스를 설정합니다. 버전 5.6 또는 5.7을 실행하는 MySQL 데이터베이스의 경우 Cloud SQL 자동 마이그레이션 워크플로를 활용할 수 있습니다.

Deployment Manager를 사용하여 WordPress 배포

Google Cloud Marketplace에서 Click-to-Deploy 솔루션의 WordPress 설치를 사용하면 소스 데이터베이스의 배포를 단순화할 수 있습니다. WordPress는 MySQL를 사용하는 일반적인 웹사이트 저작 및 콘텐츠 관리 도구입니다. Google Cloud에 제공되는 Click-to-Deploy 버전은 MySQL 5.7을 사용하므로 Cloud SQL로의 마이그레이션 요구사항을 충족합니다.

  1. Cloud Console에서 Google Click-to-Deploy 페이지로 이동합니다.

    Google Click-to-Deploy 페이지로 이동

  2. WordPress 솔루션을 클릭합니다.

  3. 실행을 클릭합니다.

  4. 다음 필드를 입력합니다.

    1. 배포 이름: my-wordpress-server
    2. 영역: us-east-1b
    3. 관리자 이메일 주소: 사용자의 이메일 주소를 입력하세요.
    4. 방화벽: HTTP 및 HTTPS 옵션이 모두 선택된 상태여야 합니다.
  5. 배포를 클릭합니다.

    WordPress VM 설치 프로세스가 시작됩니다. 몇 분 후 배포된 WordPress VM의 세부사항이 Deployment Manager에 표시됩니다. MySQL root 사용자와 wordpress 사용자 이름 및 비밀번호 정보를 비롯한 모든 정보는 나중에 이 가이드에서 사용할 수 있도록 저장해 둡니다.

  6. 사이트 주소 링크를 클릭하여 WordPress 사이트가 실행 중인지 확인합니다.

    모두 올바르게 작동한다면 다음과 같이 출력이 표시됩니다.

    클릭하여 배포할 수 있는 WordPress 홈페이지 예시

WordPress 서버에 API 범위 할당

Compute Engine VM에서 WordPress 설치 설정을 완료하려면 API 범위 권한을 추가해야 합니다. 이렇게 하면 VM에서 데이터베이스 내보내기를 Cloud Storage에 쓸 수 있습니다. Cloud Storage의 내보내기는 이후에 Cloud SQL 복제본을 만들 때 사용됩니다.

  1. Cloud Shell을 엽니다.

    Cloud Shell 열기

  2. WordPress VM을 종료합니다.

    gcloud compute instances stop my-wordpress-server-vm \
        --zone us-east1-b
    

    API 범위 전체에 새로운 권한을 적용하려면 VM이 중지된 상태여야 합니다.

    다음 단계를 진행하려면 서버가 완전히 종료될 때까지 기다리세요.

  3. VM에서 Cloud Storage에 쓸 수 있도록 새 범위를 적용합니다.

    gcloud beta compute instances set-scopes my-wordpress-server-vm \
        --scopes storage-rw \
        --zone us-east1-b
    
  4. VM을 다시 시작합니다.

    gcloud compute instances start my-wordpress-server-vm \
        --zone us-east1-b
    

이제 VM에서 Cloud Storage에 읽고 쓸 수 있습니다.

WordPress 관리자로 연결 및 게시물 작성

이제 WordPress 관리 인터페이스에 연결하여 새 게시물을 작성하고 애플리케이션과 데이터베이스가 올바르게 작동하는지 확인합니다. 서버 중지와 다시 시작을 반복하면 IP 주소가 변경될 수 있으므로 WordPress VM의 현재 공개 IP 주소를 확인해야 합니다.

  1. WordPress가 실행되는 VM의 공개 IP 주소를 확인합니다.

    1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스 페이지로 이동

    2. my-wordpress-server-vm.외부 IP 값을 기록해 둡니다.

  2. WordPress 애플리케이션이 실행되는지 확인합니다. 브라우저에서 방금 확인한 외부 IP 주소를 사용하여 WordPress VM의 공개 IP 주소로 이동합니다.

    http://your-public-ip
    

    IP 주소가 올바르면 기본 WordPress 페이지가 다시 표시됩니다.

  3. 브라우저에서 WordPress의 관리 페이지로 이동합니다.

    http://your-public-ip/wp-admin
    
  4. WordPress 관리자와 WordPress 관리자 비밀번호를 사용하여 관리 인터페이스에 로그인합니다.

  5. Posts(게시물)Add New(새로 추가)를 차례로 클릭합니다.

  6. 게시물 제목을 My First Post로 지정하고 텍스트를 추가합니다.

  7. 완료했으며 Publish(게시)를 클릭하고 확인을 위해 Publish(게시)를 다시 클릭합니다.

    첫 번째 게시물 게시

  8. 사이트 주소 링크를 클릭하여 새 게시물을 확인합니다.

이제 MySQL 버전 5.7 데이터베이스가 실행되는 WordPress VM이 준비되었습니다.

Cloud SQL 마이그레이션 기본 요건 확인

자동 마이그레이션 워크플로를 사용하여 Cloud SQL로 마이그레이션하려면 먼저 소스 데이터베이스 서버 구성에 필요한 기본 요건이 충족되어야 합니다. 다음 섹션에서는 이러한 프로세스를 한 번에 하나씩 안내합니다.

SSH를 통해 VM에 연결

WordPress가 실행 중인 VM에서 기본 요건을 확인하려면 먼저 VM 인스턴스에 연결해야 합니다.

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 가상 머신 인스턴스 목록에서 연결할 인스턴스 행의 SSH를 클릭합니다.

    SSH를 통해 WordPress VM에 연결

    Cloud Shell이 열리면 명령줄을 통해 VM에 액세스할 수 있습니다.

모든 기본 요건 확인

이제 명령줄을 통해 WordPress 서버에 연결되었으므로 MySQL을 마이그레이션할 준비가 완료되었는지 확인할 수 있습니다.

복제 사용자 만들기

데이터베이스의 복제를 지원하려면 MySQL에 복제 사용자 계정을 만듭니다. 이렇게 하면 이후 단계에서 root 사용자를 사용하지 않아도 됩니다.

  1. WordPress VM에서 root 사용자로 MySQL 데이터베이스에 연결합니다.

    mysql -u root -p -h localhost wordpress
    

    메시지가 표시되면 이전의 Deployment Manager 단계에서 기록해 둔 root 비밀번호를 입력합니다.

  2. MySQL 데이터베이스에 연결되어 있는 동안 복제 사용자를 만듭니다.

    CREATE USER 'replication'@'%' IDENTIFIED BY 'mysupersecretpassword';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
    

    다음과 같이 출력이 표시됩니다.

    mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'mysupersecretpassword';
    Query OK, 0 rows affected (0.00 sec)
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
  3. quit을 입력하여 mysql 인터페이스를 종료합니다.

이제 Cloud SQL 자동 마이그레이션 워크플로에서 사용할 수 있는 복제 사용자가 준비되었습니다.

MySQL 구성 파일 업데이트

MySQL 구성 파일에 설정해야 하는 변수는 4가지가 있습니다. 구성 파일은 /etc/mysql/mysql.conf.d/mysqld.cnf에 있습니다. 추가해야 하는 값은 다음과 같습니다.

  • server-id. 바이너리 로깅을 사용 설정하려면 이 값을 설정해야 합니다. 값은 1과 (2^32)-1 (4,294,967,295) 사이여야 하며 서버별로 고유해야 합니다. 이 가이드에서는 이 값을 2로 설정합니다.
  • log-bin. 이 설정은 바이너리 로깅을 사용 설정하고 로그를 저장하는 데이터베이스에서 사용할 파일 이름을 나타냅니다. 이 가이드에서는 이 값을 mysql-bin으로 설정합니다.
  • gtid_mode. 이 설정은 트랜잭션을 식별하는 데 사용되는 글로벌 트랜잭션 식별자(GTID)를 사용 설정합니다. 이 설정이 작동하려면 다음 명령어가 포함되어야 합니다. 이 가이드에서는 이 값을 on로 설정합니다.
  • enforce-gtid-consistency. 이 설정은 GTID를 사용하여 로깅할 수 있는 구문만 허용하여 GTID 일관성을 강화합니다. 이 가이드에서는 이 값을 true로 설정합니다.

다음 단계에서는 4가지의 모든 MySQL 변수의 값을 설정하는 방법을 설명합니다.

  1. WordPress VM의 터미널 창에서 앞에서 설명한 대로 mysqld.cnf 구성을 설정합니다.

    sudo -s
    echo "server-id = 2" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "log-bin = mysql-bin" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "gtid_mode = ON" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    echo "enforce-gtid-consistency = true" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    exit
    
  2. 명령어가 적용되도록 MySQL 서버를 다시 시작합니다.

    sudo service mysql restart
    
  3. mysql 인터페이스에 다시 로그인합니다.

    mysql -u root -p -h localhost wordpress
    
  4. 재부팅 후 모든 변수가 올바르게 설정되었는지 확인합니다.

    SELECT @@gtid_mode, @@enforce_gtid_consistency, @@server_id;
    

    다음과 같이 출력이 표시됩니다.

    mysql> select @@gtid_mode, @@enforce_gtid_consistency, @@server_id;
    +-------------+----------------------------+-------------+
    | @@gtid_mode | @@enforce_gtid_consistency | @@server_id |
    +-------------+----------------------------+-------------+
    | ON          | ON                         |           2 |
    +-------------+----------------------------+-------------+
    1 row in set (0.00 sec)
    
  5. quit를 입력하여 mysql 인터페이스를 닫습니다.

데이터베이스에 IPv4 액세스 사용 설정

Cloud SQL 자동 마이그레이션 워크플로를 사용하려면 공개 IPv4 주소를 사용하여 소스 데이터베이스에 액세스할 수 있어야 합니다. WordPress 서버에는 자동 할당된 공개 IP 주소가 있기 때문에 VPC 방화벽 규칙을 사용하여 이 연결을 허용할 수 있습니다.

  1. Cloud Shell에서 WordPress VM에 새 네트워크 태그를 추가합니다.

    gcloud compute instances add-tags my-wordpress-server-vm \
        --tags allowmysql \
        --zone us-east1-b
    
  2. 공개 인터넷에서 VM으로 이동하는 MySQL 네트워크 트래픽을 허용합니다.

    gcloud compute firewall-rules create "mysql-replication-access" \
        --allow tcp:3306 \
        --target-tags "allowmysql"
    

이제 포트 3306에서 공개 인터넷과 WordPress VM 사이의 MySQL 트래픽을 허용하는 방화벽 규칙이 준비되었습니다.

프로덕션 데이터베이스는 다양한 방식으로 관리하고 보호할 수 있습니다. 자동 마이그레이션 워크플로를 통해 모든 프로덕션 데이터베이스 마이그레이션에 필요한 액세스 권한을 조정하려면 네트워크 및 보안 관리자에게 문의하세요.

Click-to-Deploy WordPress 서버는 로컬 웹 서버가 로컬 데이터베이스에 액세스하는 것을 허용하도록 설계되었습니다. 마이그레이션을 지원하기 위해 다른 데이터베이스 연결도 허용해야 하므로 mysqld.cnf 파일에서 MySQL bind_address 항목을 업데이트하여 localhost 외의 다른 포트에서도 리슨해야 합니다.

  1. WordPress VM의 터미널 창에서 MySQL bind_address 값을 0.0.0.0으로 변경합니다.

    sudo sed -i 's|bind-address.*|bind-address = 0.0.0.0|' /etc/mysql/mysql.conf.d/mysqld.cnf
    

    이렇게 하면 사용 가능한 모든 네트워크 인터페이스에서 MySQL 연결이 허용됩니다.

  2. 변경사항이 적용되도록 MySQL 데이터베이스를 다시 시작합니다.

    sudo service mysql restart
    

데이터베이스 백업 파일 만들기

다음으로 Cloud SQL에서 복제본을 만들기 위해 데이터베이스 백업 파일을 만들어야 합니다. 이때 MySQL mysqldump 명령어를 사용하면 됩니다.

기본 데이터 확인

백업을 만들기 전에 WordPress 데이터베이스에 있는 수많은 게시물을 검증해야 합니다. 그러면 콘텐츠가 성공적으로 백업되었는지 확인할 수 있습니다.

  1. SSH를 통해 WordPress 서버에 연결합니다.
  2. wp_posts 테이블의 행 수를 계수합니다.

    mysql -u root -p -D wordpress -e "SELECT count(*) from wp_posts"
    

    다음과 비슷한 출력이 표시됩니다.

    SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        6 |
    +----------+
    1 row in set (0.01 sec)
    

이제 테이블의 시작 행 수가 확인되었습니다.

데이터베이스 백업 만들기 및 Cloud Storage에 업로드

다음으로 백업 프로세스의 결과를 Cloud Storage 버킷에 복사합니다.

  1. Cloud Shell에서 데이터베이스 백업을 보관할 Cloud Storage 버킷을 새로 만듭니다.

    gsutil mb gs://${DEVSHELL_PROJECT_ID}-mysqldump/
    

    이 명령어는 프로젝트에서 mysqldump 파일을 저장할 고유한 이름(Google Cloud 프로젝트 ID 기준)의 버킷을 생성합니다.

  2. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  3. 가상 머신 인스턴스 목록에서 VM에 연결할 WordPress 서버 행의 SSH를 클릭합니다.

    SSH를 통해 WordPress VM에 연결

  4. WordPress VM의 터미널 창에서 mybackup1.sql이라는 백업을 생성합니다.

    sudo mysqldump \
        -h localhost -P 3306 -u root -p \
        --databases wordpress \
        --hex-blob --skip-triggers --master-data=1 \
        --order-by-primary --compact --no-autocommit \
        --default-character-set=utf8 \
        --single-transaction --set-gtid-purged=on > mybackup1.sql
    
  5. MySQL root 비밀번호를 입력합니다.

  6. mybackup1.sql 파일을 Cloud Storage 버킷에 복사합니다.

    sudo gsutil cp ./mybackup1.sql gs://[your_project_name]-mysqldump
    

    다음과 같이 출력이 표시됩니다.

    Copying file://./mybackup1.sql [Content-Type=application/x-sql]...
    / [1 files][510.4 KiB/510.4 KiB]
    Operation completed over 1 objects/510.4 KiB.
    

    이제 백업 파일이 Cloud Storage에 업로드되었습니다.

자동 마이그레이션 워크플로를 사용하여 Cloud SQL 외부 복제본 만들기

이제 데이터베이스의 행 수를 알았고 데이터베이스에 대한 전체 백업이 준비되었으므로 자동 마이그레이션 워크플로를 사용하여 Cloud SQL에 복제본 데이터베이스를 만듭니다.

  1. Cloud Console에서 Cloud SQL 페이지로 이동합니다.

    Cloud SQL 페이지로 이동

  2. 데이터 마이그레이션을 클릭합니다.

  3. 마이그레이션 시작을 클릭합니다.

  4. 데이터 소스 세부정보 섹션에 다음 값을 입력합니다.

    • 데이터 소스 이름: 소스 데이터베이스의 이름입니다. mywordpress를 사용하세요.
    • 소스의 공개 IP 주소: WordPress VM의 외부 IP 주소입니다. Deployment Manager에서 서버를 만들 때 기록해 둔 값을 사용합니다.
    • 소스의 포트 번호: 3306
    • MySQL 복제 사용자 이름: replication
    • MySQL 복제 사용자 비밀번호: mysupersecretpassword
    • 데이터베이스 버전: 5.7
  5. 다음을 클릭합니다.

  6. Cloud SQL 읽기 복제본 만들기 섹션에 다음 값을 입력합니다

    • 읽기 복제본 인스턴스 ID: Cloud SQL 서비스 인스턴스의 이름입니다. mywordpress-cloudsql을 사용하세요.
    • 위치: WordPress VM이 생성된 리전 및 영역입니다. 이 가이드에서는 us-east1-b을 사용하세요.
    • 스토리지 유형: SSD
    • 스토리지 용량: 10 GB
    • 스토리지 용량 자동 증가 사용 설정: 이 옵션은 항상 사용 설정해야 합니다.
    • SQL 덤프 파일: 찾아보기를 클릭하고 앞에서 만든 버킷과 mysqldump 파일을 선택합니다.
  7. 고급 설정을 클릭합니다.

  8. + 네트워크 추가를 클릭한 후 다음을 수행합니다.

    • 네트워크 이름을 external로 지정합니다.
    • 네트워크0.0.0.0/0을 입력합니다.
    • 완료를 클릭합니다.

    0.0.0.0/0을 추가하면 외부 복제본에 대한 공개 액세스가 허용됩니다.

  9. 데이터베이스 플래그에서 +항목 추가를 클릭합니다.

  10. 플래그 선택 목록에서 다음을 수행합니다

    1. sql_mode를 선택합니다.
    2. 오른쪽에 나타나는 드롭다운 목록에서 ALLOW_INVALID_DATES를 선택합니다.

    sql_mode 플래그는 WordPress 데이터베이스를 Cloud SQL로 마이그레이션하는 데 필요합니다.

  11. 만들기를 클릭합니다.

    인스턴스가 백그라운드에 생성됩니다.

  12. 데이터 동기화 섹션에서 발신 IP 주소 필드의 값을 기록해 둡니다.

    이 필드를 입력하는 데 몇 분 정도 걸릴 수 있습니다. 단, IP 주소가 있다면 Cloud SQL 인스턴스가 생성된 것입니다.

  13. 다음을 클릭합니다.

  14. 마침을 클릭합니다.

자동 마이그레이션 워크플로에 따라 WordPress VM의 소스 데이터베이스가 Cloud SQL 복제본 데이터베이스로 복제되기 시작합니다. 이 프로세스는 데이터베이스의 크기, 소스와 대상 간의 거리, 기본 및 복제본 데이터베이스 모두에 제공되는 IOPS에 따라 다소 시간이 걸릴 수 있습니다. 이 경우에는 데이터베이스가 작기 때문에 프로세스가 빠르게 진행됩니다.

몇 분 후 데이터베이스 이름 옆에 녹색 체크표시가 나타나면 복제가 사용 설정된 것입니다. 새 데이터베이스를 클릭하면 복제가 사용 설정되었습니다라는 메시지가 표시됩니다.

Console에 복제가 사용 설정되었다고 표시됨

이것으로 Cloud SQL 복제본이 작동하고 있는지 확인할 수 있습니다.

복제본 데이터베이스에 MySQL 사용자 계정 만들기

MySQL 서버의 일부로 단일 데이터베이스를 마이그레이션하는 경우 데이터베이스 자체의 사용자 계정이 마이그레이션되지는 않습니다. 사용자 및 애플리케이션에 대한 변경을 제한하기 위해 Cloud SQL 복제본 데이터베이스에 중요 계정을 다시 생성해야 합니다.

  1. Cloud Shell에서 기본 WordPress 데이터베이스와 동일한 루트 비밀번호를 사용하도록 Cloud SQL 데이터베이스에 루트 사용자 계정을 재설정합니다.

    gcloud sql users set-password root --host=% \
        --instance=mywordpress-cloudsql \
        --password=primary-root-password
    
  2. 기본 WordPress 데이터베이스의 이름 및 비밀번호와 일치하는 사용자 이름과 비밀번호를 사용하여 wordpress 사용자 계정을 만듭니다.

    gcloud sql users create wordpress --host=% \
        --instance=mywordpress-cloudsql \
         --password=your-wordpress-db-password
    

복제본 데이터베이스가 Cloud SQL에서 실행되는지 확인

Cloud SQL 복제가 사용 설정되었으므로 이제 데이터 복제를 확인해야 합니다. 데이터 복제를 확인하려면 새 Cloud SQL 데이터베이스에 연결한 다음 새 콘텐츠로 기본 WordPress 데이터베이스를 업데이트해야 합니다. 복제가 작동하면 Cloud SQL 복제본에 업데이트된 데이터가 표시됩니다.

Cloud SQL에서 기본 데이터 확인

다음 단계에서는 Cloud SQL 복제본 데이터베이스에 연결하는 방법을 설명합니다.

  1. Cloud Console에서 Cloud SQL 페이지로 이동합니다.

    Cloud SQL 페이지로 이동

  2. 복제본 데이터베이스를 클릭하여 인스턴스 세부정보 페이지를 엽니다.

  3. 이 인스턴스에 연결에서 Cloud Shell을 사용해 연결을 클릭합니다.

    그러면 Cloud Shell이 열리고 연결 IP 주소가 방화벽에 자동으로 추가됩니다.

  4. ENTER 키를 눌러 명령어를 실행합니다.

  5. 비밀번호를 입력하라는 메시지가 표시되면 데이터베이스의 루트 사용자 비밀번호를 입력합니다.

    그러면 MySQL이 Cloud SQL 복제본에 연결됩니다.

  6. 데이터베이스를 선택합니다.

    USE wordpress
    
  7. 데이터베이스 wp_posts 테이블의 행 수를 계수하는 쿼리를 실행합니다.

    SELECT count(*) from wp_posts;
    

    이전의 행 수와 일치하는 출력이 표시됩니다.

    mysql> SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        6 |
    +----------+
    1 row in set (0.01 sec)
    

    이것으로 데이터베이스 생성 중에 복제가 완료되었는지 확인할 수 있습니다.

다음 단계를 위해 이 Cloud Shell 세션을 열어두세요.

새 데이터베이스 콘텐츠 만들기

이제 새로운 WordPress 게시물을 작성하여 데이터베이스에 추가합니다. 이를 통해 새 데이터가 Cloud SQL에 복제되고 있는지 확인할 수 있습니다.

  1. 브라우저에서 WordPress 인스턴스의 관리 페이지로 이동합니다.

    http://your-public-ip/wp-admin
    
  2. WordPress 관리자와 WordPress 관리자 비밀번호를 사용하여 관리 인터페이스에 로그인합니다.

  3. Posts(게시물)Add New(새로 추가)를 차례로 클릭합니다.

  4. 게시물 제목을 My Second Post로 지정하고 텍스트를 추가합니다.

  5. Publish(게시)를 클릭하고 확인을 위해 Publish(게시)를 다시 클릭합니다.

    두 번째 게시물 게시

  6. 사이트 주소 링크를 클릭하여 새 게시물을 확인합니다.

기본 및 복제본 모두에서 행 수가 증가했는지 확인

이제 기본 및 복제본 데이터베이스 모두에 데이터가 추가되었는지 확인할 수 있습니다.

  1. SSH를 통해 WordPress VM에 연결합니다.
  2. wp_posts 테이블의 행 수를 계수하는 쿼리를 실행합니다.

    mysql -u root -p -D wordpress -e "SELECT count(*) from wp_posts"
    

    다음과 같이 출력이 표시됩니다.

    SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        8 |
    +----------+
    1 row in set (0.01 sec)
    

    기본 데이터베이스의 데이터 행 수가 증가한 것이 확인됩니다.

  3. 복제본 Cloud SQL 데이터베이스에 연결된 Cloud Shell 세션을 엽니다.

  4. 복제본 wp_posts 테이블의 행 수를 계수하는 쿼리를 실행합니다.

    SELECT count(*) from wp_posts;
    

    다음과 같이 출력이 표시됩니다.

    Mysql [wordpress]> SELECT count(*) from wp_posts;
    +----------+
    | count(*) |
    +----------+
    |        8 |
    +----------+
    1 row in set (0.01 sec)
    

    원본 데이터베이스 테이블과 복제본 데이터베이스 테이블의 행 수가 동일하면 새 콘텐츠가 데이터베이스에 추가될 때 복제가 성공한 것입니다.

Cloud SQL 데이터베이스를 복제본에서 기본으로 승격

복제본이 Cloud SQL에서 실행되고 복제가 확인되었으므로 이제 복제본을 기본으로 승격하여 데이터베이스를 Cloud SQL로 마이그레이션하는 과정을 완료합니다.

다운타임 고려사항

모든 MySQL 마이그레이션에는 일정 시간의 데이터베이스 다운타임이 수반됩니다. 자동 마이그레이션 워크플로를 사용할 경우 다운타임이 최소화되지만 그래도 단 몇 분의 다운타임은 발생합니다. 마이그레이션을 시작하기 전에 애플리케이션 요구사항, 서비스 수준 목표, 서비스수준계약을 이해하고 있어야 합니다.

기본 데이터베이스 중지

첫 번째 단계로 WordPress VM에서 실행되는 MySQL 서비스를 중지합니다. 그러면 데이터베이스에 대한 모든 쓰기가 중지되고 데이터베이스 및 데이터베이스에 연결된 모든 애플리케이션의 다운타임 기간이 시작됩니다.

  1. WordPress VM의 터미널 창에서 MySQL 데이터베이스를 중지합니다.

    sudo service mysql stop
    

    그러면 기본 MySQL 데이터베이스는 오프라인 상태가 됩니다.

  2. 브라우저에서 WordPress 사이트로 이동합니다.

    이제 애플리케이션이 오프라인 상태임을 확인하는 오류 메시지가 표시됩니다.

    데이터베이스 연결 설정 오류

애플리케이션 엔드포인트 업데이트

기본 데이터베이스가 중지되면 Cloud SQL 서버를 사용하도록 애플리케이션을 업데이트해야 합니다. 이를 통해 복제본을 기본 데이터베이스로 승격하기 전에 애플리케이션과 Cloud SQL 데이터베이스 간의 기본 연결이 확인됩니다.

WordPress에는 Cloud SQL 복제본에 해당하는 애플리케이션을 가리키도록 업데이트해야 하는 간단한 구성 파일이 있습니다.

  1. Cloud Console에서 Cloud SQL 페이지로 이동합니다.

    Cloud SQL 페이지로 이동

  2. 복제본 데이터베이스를 클릭하여 인스턴스 세부정보 페이지를 엽니다.

  3. 공개 IP 주소를 복사합니다.

  4. SSH를 통해 WordPress VM에 연결합니다.

  5. 인스턴스의 터미널에서 구성 파일의 대상 데이터베이스의 주소를 업데이트합니다. your-cloud-sql-ip를 Cloud SQL 복제본의 공개 IP 주소로 바꿉니다.

    sudo sed -i -e 's/localhost/your-cloud-sql-ip/' /var/www/html/wp-config.php
    

복제본 승격

이제 새로운 Cloud SQL 데이터베이스 위치를 지원하도록 애플리케이션 코드를 업데이트했으므로 Cloud SQL 복제본을 기본 인스턴스로 승격해야 합니다. Cloud SQL 복제본이 기본 데이터베이스가 되도록 승격하면 MySQL 데이터베이스를 Cloud SQL로 마이그레이션하는 과정이 완료됩니다.

  1. Cloud Console에서 Cloud SQL 페이지로 이동합니다.

    Cloud SQL 페이지로 이동

  2. 복제본 데이터베이스를 클릭하여 인스턴스 세부정보 페이지를 엽니다.

  3. 복제본 승격 버튼을 클릭합니다.

    복제본을 기본으로 승격

  4. 확인을 클릭하여 데이터베이스의 승격을 시작합니다.

몇 분 후 Cloud SQL 인스턴스 페이지에 데이터베이스가 사용 가능한 상태로 표시됩니다. 이제 WordPress 사이트로 이동하여 사이트가 온라인 상태로 전환되었는지 확인합니다.

삭제

이 가이드에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.

프로젝트 삭제

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계