Cloud SQL로 Google Cloud App Engine의 데이터베이스 호스팅

6669 단어
Cloud SQL은 Google Cloud의 App Engine을 통해 앱을 배포할 때 데이터베이스를 호스팅하는 편리한 사내 방식입니다. 다음은 SQL 데이터베이스를 시작하고 실행하는 방법에 대한 간략한 설명입니다.

Cloud SQL 인스턴스 만들기



프로젝트의 Google Cloud Console에서 Storage -> SQL -> Create Instance로 이동합니다.

인스턴스 ID, 지역/영역, 스토리지 용량과 같은 옵션은 사용자에게 달려 있습니다. 이러한 구성이 완료되면 아래와 같이 인스턴스의 IP 주소와 연결 이름이 필요합니다.

사용자 계정에는 "IAM 및 관리자"섹션의 "IAM"부분에 있는 "Cloud SQL 관리자"권한이 있어야 합니다.

Cloud SQL API와 함께 Cloud Admin API를 사용 설정해야 합니다. 이들은 "API's and Services"메뉴 섹션에서 찾을 수 있습니다. 또한 gcloud 명령줄 도구를 통해 Google Cloud 애플리케이션을 제어할 수 있는 Google Cloud SDK가 설치되어 있어야 합니다. Google Cloud SDK를 처음 사용할 때 gcloud init를 실행해야 합니다. . 마지막으로 Google Cloud SDK에 접속하여 데이터베이스 인스턴스를 로컬에서 유지하려면 인스턴스의 "연결"영역("네트워크 추가")에 승인된 네트워크로 IP 주소를 나열해야 합니다.

Cloud SQL 인스턴스에 액세스



Cloud Shell을 사용하여 연결하려면 gcloud sql connect [INSTANCE_NAME] --user=root를 실행하고 비밀번호를 입력하십시오. 암호화 없이 인스턴스에 연결하려면 mysql --host=[INSTANCE_IP] --user=root --password(위 예에서 INSTANCE_IP는 0.00.000.000임)를 사용하여 MySQL에 쉘을 적용하고 인스턴스에 대해 생성한 암호를 입력할 수 있습니다. 참고: 이 방법은 안전하지 않으며 민감한 정보를 관리하는 경우 SSL 연결을 추구해야 합니다.

Cloud SQL 인스턴스에 앱 연결: app.yaml



App Engine 앱은 구성 및 환경 변수에 app.yaml 파일을 사용합니다. 아직 없는 경우 루트 디렉터리에 app.yaml 파일을 만듭니다. 참고: app.yaml 파일은 프로젝트의 루트 디렉터리에 있어야 합니다. 다음 정보를 포함해야 합니다(최소한).

runtime: nodejs10
env_variables:
  DB_USER: "root"
  DB_NAME: "<database name>"
  DB_PASS: "<instance password>"
  DB_INSTANCE_CONNECTION_NAME: "<instance connection name>"


호스트(IP 주소)는 프로덕션에서만 사용되지만 인스턴스 연결 이름은 배포 시 연결됩니다. 프로덕션의 경우 .env 파일에 다음 정보가 필요합니다.

  DB_USER: "root"
  DB_NAME: "<database name>"
  DB_PASS: "<instance password>"
  DB_HOST: "<instance ip>"


프로덕션에서 연결 구성은 다음과 같습니다(여기서 호스트 속성 뒤의 구성을 조정할 수 있음).

  const connection = mysql.createPool({
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_NAME,
    host: process.env.DB_HOST,
    connectTimeout: 10000,
    acquireTimeout: 10000,
    waitForConnections: true,
    queueLimit: 0,
  });


한편, 배포 시 소켓을 통해 앱을 데이터베이스에 연결해야 하므로 데이터베이스에 대한 소켓 경로를 설정해 보겠습니다(다시 말하지만 구성은 빠르고 정확하지 않습니다).

  poolConnection = mysql.createPool({
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_NAME,
    socketPath: `/cloudsql/${process.env.DB_INSTANCE_CONNECTION_NAME}`,
    connectTimeout: 10000,
    acquireTimeout: 10000,
    waitForConnections: true,
    connectionLimit: 20,
    queueLimit: 20,
  });


위에 사용된 createPool에 주목하십시오. 풀 연결은 데이터베이스 작업에서 구현하려는 데이터베이스 연결 방식의 중요한 부분입니다. 다른 블로그 게시물에서 해당 주제에 대해 자세히 설명합니다! 하지만 지금은 Cloud SQL 데이터베이스 인스턴스를 만들고 유지 관리를 위해 액세스하고 프로덕션 및 배포 모드를 위해 앱을 연결하는 방법을 배웠습니다. 이 튜토리얼이 도움이 되었기를 바랍니다!

좋은 웹페이지 즐겨찾기