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

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

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

학습할 내용

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

필요한 항목

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

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

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

초급 중급 고급

자습형 환경 설정

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

Screenshot from 2016-02-10 12:45:26.png

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

그런 다음 Google Cloud 리소스를 사용할 수 있도록 Cloud 콘솔에서 결제를 사용 설정해야 합니다.

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

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

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

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

이제 Cloud SQL 웹 UI가 표시됩니다. 현재 Cloud SQL 인스턴스가 없는 프로젝트를 사용하고 있다면 새 Cloud SQL 인스턴스를 만들도록 요청하는 대화상자가 표시됩니다.

하나 이상의 Cloud SQL 인스턴스가 이미 있는 프로젝트를 사용 중인 경우 대신 해당 인스턴스 목록이 표시됩니다.

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

하나 이상의 Cloud SQL 인스턴스가 이미 있는 프로젝트를 사용하는 경우 인스턴스 화면에서 인스턴스 만들기 버튼을 누릅니다.

어느 경우든 이제 인스턴스 유형 선택 페이지가 표시됩니다. 이 Codelab에서는 Cloud SQL 2세대 인스턴스를 만듭니다. 2세대 선택을 클릭합니다.

2ndGenCloudSQLCreate.png

인스턴스 만들기 페이지로 이동됩니다. 여기에서 인스턴스 이름을 지정해야 합니다. 이 이름은 프로젝트 내에서 고유해야 하지만 프로젝트 간에는 고유하지 않아도 되므로 프로젝트에 다른 Cloud SQL 인스턴스가 없는 경우 이 예에 표시된 것과 동일한 인스턴스 이름 codelab-0을 사용할 수 있습니다. 인스턴스 ID 상자에 'codelab-0'을 입력합니다. 이 Codelab에서는 나머지 구성을 기본값으로 둘 수 있습니다.

Cloud SQL 인스턴스를 삭제하면 최대 일주일 동안 해당 인스턴스 이름을 재사용할 수 없습니다. 실험 이상의 용도로 이 프로젝트를 사용하려는 경우 실제 작업에 사용할 수 있는 인스턴스 이름과 다른 인스턴스 이름을 선택해야 합니다. 그렇지 않으면 일정 기간 동안 해당 인스턴스 이름을 다시 사용할 수 없습니다.

2ndGenCloudSQLCreate_2.png

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

2ndGenCloudSQLCreate_3.png

인스턴스 페이지로 이동하면 왼쪽에 스피너가 있는 새 인스턴스가 표시됩니다. 이는 아직 인스턴스가 생성 중임을 나타냅니다.

2~3분 후 인스턴스를 사용할 수 있게 되며 파란색 스피너가 녹색 체크표시로 바뀝니다. 수시로 페이지를 새로고침하세요.

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

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

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

사용자 탭에서 루트 비밀번호 변경을 클릭합니다.

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

Google Cloud Console에서 프롬프트 버튼을 눌러 Google Cloud Shell을 활성화합니다.

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

cloudShellWelcome.png

새 Cloud Shell은 이 프로젝트에서 처음 사용하는 경우 Google Cloud Shell 화면에서 Cloud Shell 시작을 누른 후 또는 이전에 사용한 적이 있는 경우 Google Cloud Shell 활성화 버튼을 누른 직후 Google Cloud 콘솔 하단에 표시됩니다.

Screen Shot 2016-03-07 at 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)

쿼리가 OK로 돌아오면 인스턴스가 작동하는 것입니다. 종료하고 샘플 데이터를 로드하여 실제 쿼리를 실행해 보겠습니다.

'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 프롬프트에 로그인하고 employee 데이터베이스로 전환합니다. 인스턴스 이름이 다른 경우 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 인스턴스를 삭제하면 최대 일주일 동안 해당 인스턴스 이름을 재사용할 수 없습니다.

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 인스턴스 페이지로 돌아갑니다.

삭제하려는 인스턴스 옆에 있는 드롭다운 메뉴를 열고 '삭제'를 선택합니다.

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

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

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

학습한 내용

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

자세히 알아보기

  • Google Cloud SQL 문서 보기