Cloud SQL로 관리형 MySQL 데이터베이스 만들기

Google Cloud SQL은 클라우드에서 관계형 MySQL 데이터베이스를 쉽게 설정, 유지, 관리할 수 있는 완전 관리형 데이터베이스 서비스입니다.

이 실습에서는 새로운 빈 Cloud SQL 인스턴스를 만들어 MySQL 명령줄 인터페이스를 사용하여 연결하고, 새로운 빈 데이터베이스를 만듭니다.

학습할 내용

  • Google Cloud Console에서 Cloud SQL 웹 UI에 액세스하는 방법
  • Google Cloud Console을 사용하여 Cloud SQL 인스턴스를 만드는 방법
  • Google Cloud Console을 사용하여 루트 비밀번호를 설정하는 방법
  • Cloud Shell을 통해 Cloud SQL 인스턴스에 연결하는 방법
  • Google Cloud Console을 사용하여 Cloud SQL 인스턴스를 삭제하는 방법

필요한 항목

본 튜토리얼을 어떻게 사용하실 계획인가요?

읽기만 할 계획입니다 읽은 다음 연습 활동을 완료할 계획입니다

Google Cloud Platform 서비스 및 Firebase 사용 경험을 평가해 주세요.

초급 중급 고급

자습형 환경 설정

Google 계정 (Gmail 또는 Google 앱)이 아직 없다면 계정을 만들어야 합니다. Google Cloud Platform Console (console.cloud.google.com)에 로그인하여 새 프로젝트를 만듭니다.

2016-02-10 12:45:26.png 스크린샷

모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억하세요(위의 이름은 이미 사용되었으므로 사용할 수 없습니다). 이 ID는 나중에 이 Codelab에서 PROJECT_ID라고 부릅니다.

다음으로 Google Cloud 리소스를 사용하려면 Cloud Console에서 결제를 사용 설정해야 합니다.

이 codelab을 실행하는 과정에는 많은 비용이 들지 않지만 더 많은 리소스를 사용하려고 하거나 실행 중일 경우 비용이 더 들 수 있습니다(이 문서 마지막의 '삭제' 섹션 참조).

Google Cloud Platform의 신규 사용자는 $300 무료 체험판을 사용할 수 있습니다.

Google Cloud Console에서 화면 왼쪽 상단의 메뉴 아이콘을 클릭합니다.

아래로 스크롤하여 Storage 하위 섹션에서 SQL을 선택합니다.

이제 Cloud SQL 웹 UI가 표시됩니다. 현재 Cloud SQL 인스턴스가 없는 프로젝트를 사용 중인 경우에는 새 Cloud SQL 인스턴스를 만들 수 있도록 초대하는 대화상자가 표시됩니다.

이미 1개 이상의 Cloud SQL 인스턴스가 있는 프로젝트를 사용하는 경우 다음 인스턴스 목록이 표시됩니다.

프로젝트에 Cloud SQL 인스턴스가 없다고 가정하면 인스턴스 만들기 버튼을 눌러 인스턴스를 만드세요.

이미 Cloud SQL 인스턴스가 하나 이상 있는 프로젝트를 사용하는 경우 아래와 같이 인스턴스 화면에서 인스턴스 버튼을 누르세요.

두 경우 모두 인스턴스 유형 선택 페이지가 표시됩니다. 이 Codelab에서는 Cloud SQL 2세대 인스턴스를 만들어 보겠습니다. 2세대 선택을 클릭합니다.

2ndGenCloudSQLCreate.png

인스턴스 만들기 페이지로 이동합니다. 여기서는 인스턴스의 이름을 지정해야 합니다. 이 이름은 프로젝트 내에서 고유해야 하며 프로젝트 전체에서 고유해야 합니다. 따라서 프로젝트에 다른 Cloud SQL 인스턴스가 없다고 가정하고 이 예시에 나온 인스턴스 이름 codelab-0을 사용하면 됩니다. 인스턴스 ID 상자에 \'codelab-0"를 입력합니다. 이 Codelab의 목적상 나머지 구성은 기본값으로 둘 수 있습니다.

Cloud SQL 인스턴스를 삭제하면 최대 1주일 동안은 해당 인스턴스 이름을 재사용할 수 없습니다. 이 프로젝트를 실험용으로 사용할 계획이라면 실제 작업에 사용할 인스턴스 이름과 다른 인스턴스 이름을 선택해야 합니다. 그렇지 않으면 일정 기간 동안 인스턴스 이름을 다시 사용할 수 없게 됩니다.

2ndGenCloudSQLCreate_2.png

페이지 하단으로 스크롤하여 만들기를 누릅니다.

2ndGenCloudSQLCreate_3.png

인스턴스 페이지로 이동합니다. 이 페이지에서는 왼쪽에 스피너가 있는 새 인스턴스가 아직 생성 중임을 확인할 수 있습니다.

2~3분 후에 인스턴스를 사용할 수 있으며 녹색 체크 표시가 파란색 스피너를 대체합니다. 다음과 같이 페이지를 경우에 따라 새로고침합니다.

이제 Cloud SQL 인스턴스를 사용할 수 있습니다.

인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 표시한 다음 액세스 제어를 클릭합니다.

액세스 제어 탭에서 사용자를 누릅니다.

Users(사용자) 탭에서 Change root password(루트 비밀번호 변경)를 클릭합니다.

비밀번호 변경 페이지에서 새 비밀번호를 입력하고 확인을 누릅니다.

Google Cloud Console에서 메시지 버튼을 눌러 Google Cloud Shell을 활성화합니다.

이 프로젝트에 Google Cloud Shell을 처음 사용한다면 Google Cloud Shell 화면이 표시됩니다. Cloud Shell 시작을 누릅니다.

cloudShellWelcome.png

새 Google Cloud Console은 Google Cloud Shell 하단에서 표시되며, 이 프로젝트에서 처음 사용한 경우 Google Cloud Shell에서 시작을 누른 후 또는 이전에 사용한 Google Cloud Shell 활성화 버튼을 누른 직후에 확인할 수 있습니다.

Screen Shot 2016-03-07 12.18.01.png

아래에 표시된 gcloud sql 명령어를 사용하여 Cloud SQL 인스턴스에 연결하되, 이름이 다를 경우 "codelab-0"를 인스턴스 이름으로 바꿉니다.

gcloud sql connect codelab-0 --user=root

다음과 같이 표시됩니다.

$ gcloud sql connect codelab-0 --user=root
Whitelisting your IP for incoming connection for 1 minute...done.
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11302
Server version: 5.6.29-google-log (Google)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

여기에 나와 있는 것처럼 이전 단계에서 설정한 비밀번호를 입력하라는 메시지가 표시됩니다. 이제 "root"로 로그인된 완전 관리형 MySQL 프롬프트가 생겼습니다. 이를 사용하여 SQL 쿼리(예: 'Codelab"'라고 함)를 새로 만듭니다.

mysql> CREATE DATABASE codelab;
Query OK, 1 row affected (0.00 sec)

쿼리가 정상으로 돌아오면 인스턴스가 작동합니다. 일부 샘플 데이터를 종료하고 로드하여 실제 쿼리를 실행할 수 있습니다.

'exit;'를 입력하고 Enter 키를 눌러 MySQL 프롬프트를 종료합니다.

공식 MySQL 문서에 있는 직원 샘플 데이터 세트가 로드됩니다.

먼저 스크립트와 데이터를 다운로드해야 합니다.

$ wget https://codeload.github.com/datacharmer/test_db/zip/master -O sampledb.zip
$ unzip sampledb.zip && cd test_db-master

둘째, 데이터베이스와 테이블을 만들고 데이터를 로드해야 합니다. 마찬가지로, Codelab-0을 인스턴스 이름으로 바꿉니다(다른 경우).

$ gcloud sql connect codelab-0 --user=root < employees.sql

이제 데이터를 쿼리할 수 있으므로 아래에서 몇 가지 샘플 쿼리를 확인할 수 있습니다. 쿼리를 직접 만들 수도 있습니다. DB 스키마를 알아보려면 employees.sql 파일을 살펴봅니다. 먼저 sql 프롬프트에 로그인하고 직원 데이터베이스로 전환합니다. 다시 말하지만, 이름이 다를 경우 codelab-0을 인스턴스 이름으로 바꿉니다.

$ gcloud sql connect codelab-0 --user=root
mysql> USE employees;
Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT avg(s.salary) avg_salary_by_hire_year, YEAR(e.hire_date) FROM employees e, salaries s WHERE e.emp_no = s.emp_no GROUP BY YEAR(e.hire_date);
+-------------------------+-------------------+
| avg_salary_by_hire_year | YEAR(e.hire_date)|
+-------------------------+-------------------+
|              66966.7550 |              1985 |
|              66187.3453 |              1986 |
...
16 rows in set (2.70 sec)

mysql> SELECT de.dept_no, sum(s.salary) sum_salaries_per_department FROM employees e, salaries s, dept_emp de WHERE e.emp_no = de.emp_no AND e.emp_no = s.emp_no GROUP BY de.dept_no;
+---------+-----------------------------+
| dept_no | sum_salaries_per_department|
+---------+-----------------------------+
| d001    |                 13725425266 |
| d002    |                 11650834677 |
...
+---------+-----------------------------+
9 rows in set (4.22 sec)

mysql> exit;

샘플 직원 데이터 세트를 쿼리한 후 'exit' 명령어를 사용하여 MySQL 프롬프트를 종료합니다.

이 단계는 선택사항입니다. Cloud SQL 인스턴스를 계속 실험하고 싶다면 지금은 삭제하지 않아도 됩니다. 하지만 사용 중인 프로젝트에 대해서는 여전히 인스턴스에 요금이 청구됩니다. 이 인스턴스에 더 이상 필요하지 않은 경우 요금이 청구되지 않도록 지금 삭제해야 합니다.

Cloud SQL 인스턴스를 삭제하면 최대 1주일 동안은 해당 인스턴스 이름을 재사용할 수 없습니다.

Cloud SQL 인스턴스를 삭제하는 방법에는 두 가지가 있습니다.

1) Cloud Shell 환경에서 gcloud를 사용합니다. 마찬가지로, Codelab-0을 인스턴스 이름으로 바꿉니다(다른 경우).

$ gcloud sql instances delete codelab-0
All of the instance data will be lost when the instance is deleted.

Do you want to continue (Y/n)?  Y

Deleting Cloud SQL instance...done.
Deleted
$

또는

2) 왼쪽 상단에서 SQL을 클릭하여 Cloud SQL 인스턴스 페이지로 돌아갑니다.

삭제할 인스턴스 옆의 드롭다운 메뉴를 열고 '삭제'를 선택합니다.

인스턴스를 삭제하면 되돌릴 수 없습니다. 이 인스턴스의 데이터는 복구할 수 없습니다. 실수로 잘못된 인스턴스를 삭제하는 것을 방지하려면 확인 대화상자에 인스턴스 이름을 입력하여 삭제를 확인해야 합니다.

인스턴스 이름을 입력하고 Delete를 누릅니다.

새 Cloud SQL 인스턴스를 만들고 루트 비밀번호를 구성하고 빈 데이터베이스를 만들었으며 Cloud SQL 인스턴스 (선택사항)를 삭제했습니다.

학습한 내용

  • Google Cloud Console을 통해 Cloud SQL 인스턴스를 만듭니다.
  • Google Cloud Console을 통해 SQL 루트 비밀번호를 설정합니다.
  • mysql 클라이언트를 사용하여 데이터베이스에 연결
  • mysql 프롬프트를 통해 새 MySQL 데이터베이스를 만듭니다.
  • Cloud SQL 인스턴스 삭제

자세히 알아보기

  • Google Cloud SQL 문서 보기