๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋Œ€์‹  Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†Œ๊ฐœ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œํ”„ํŠธ์›จ์–ด ์ œ๊ณต์—…์ฒด๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ ๊ฐœ์„ , ๋ณด์•ˆ ๊ฐœ์„ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์ƒˆ๋กœ์šด ์ฃผ ๋ฒ„์ „์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค. Cloud SQL์€ ์ด๋Ÿฌํ•œ ์ฃผ ๋ฒ„์ „์ด ์ถœ์‹œ๋œ ํ›„ ์ƒˆ ๋ฒ„์ „์„ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค. Cloud SQL์—์„œ ์ƒˆ๋กœ์šด ์ฃผ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์ด ์ œ๊ณต๋œ ํ›„ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ธํ”Œ๋ ˆ์ด์Šค๋กœ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ฃผ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ํ˜„์žฌ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„, IP ์ฃผ์†Œ, ๊ธฐํƒ€ ์„ค์ •์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ด๋™ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋ณด๋‹ค ๋‹ค์šดํƒ€์ž„์ด ์งง์Šต๋‹ˆ๋‹ค.

MySQL 8.0.15 ์ดํ•˜์˜ ๊ฒฝ์šฐ MySQL ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์€ mysql_upgrade ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. MySQL 8.0.16 ์ด์ƒ์—์„œ๋Š” MySQL server ํ”„๋กœ์„ธ์Šค์—์„œ MySQL ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL ์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋Š” ํ•ญ๋ชฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ„ํš

  1. ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์—ญํ• (Cloud SQL ์†Œ์œ ์ž ๋˜๋Š” Cloud SQL ๊ด€๋ฆฌ์ž)์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๋Œ€์ƒ ์ฃผ ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    gcloud

    gcloud CLI ์„ค์น˜ ๋ฐ ์‹œ์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud CLI ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Cloud Shell ์‹œ์ž‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Shell ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ธ์Šคํ„ด์Šค์—์„œ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    2. gcloud sql instances describe INSTANCE_NAME
         

      INSTANCE_NAME์„ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    3. ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ์—์„œ upgradableDatabaseVersions ๋ผ๋ฒจ์ด ์ง€์ •๋œ ์„น์…˜์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
    4. ๊ฐ ํ•˜์œ„ ์„น์…˜์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ•˜์œ„ ์„น์…˜์—์„œ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.
      • majorVersion: ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
      • name: ์ฃผ ๋ฒ„์ „์„ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. MySQL์šฉ Cloud SQL์˜ ๊ฒฝ์šฐ ์ด ํ•„๋“œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€ ๋ฒ„์ „๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
      • displayName: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ํ‘œ์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    REST v1

    ์ฃผ ๋ฒ„์ „ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด Cloud SQL Admin API์˜ instances.get ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    REST v1beta4

    ์ธ์Šคํ„ด์Šค์˜ ์ฃผ ๋ฒ„์ „ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด Cloud SQL Admin API์˜ instances.get ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    Cloud SQL์ด ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ๋ฐ ๋ฒ„์ „ ์ •์ฑ…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  3. ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์— ์ œ๊ณต๋œ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•ด์„œ ๋น„ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ๋กœ์šด ์ฃผ ๋ฒ„์ „์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ, ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ๋จผ์ € ๋Œ€์ƒ ์ฃผ ๋ฒ„์ „์˜ ์ถœ์‹œ ๋…ธํŠธ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ํ•ด๊ฒฐ์ด ํ•„์š”ํ•œ ๋น„ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    ์ดํ›„ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ผ๋ถ€ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL 5.6 ๋ฐ MySQL 5.7์—์„œ character_set_server์˜ ๊ธฐ๋ณธ๊ฐ’์€ utf8์ž…๋‹ˆ๋‹ค. MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด character_set_server ๊ธฐ๋ณธ๊ฐ’์ด utf8mb4๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. utf8๋กœ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ์ˆ˜๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ๊ฐ’์„ ์ด์ „ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ๊ฐ’ ๋ณ€๊ฒฝ์€ MySQL ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค(์„œ๋ฒ„ ๊ธฐ๋ณธ๊ฐ’ ์—…๊ทธ๋ ˆ์ด๋“œ ์ฐธ์กฐ).

  4. ์—…๊ทธ๋ ˆ์ด๋“œ ์‚ฌ์ „ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • MySQL 5.7์—์„œ 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ MySQL 5.7์—์„œ 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ฌ์ „ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. MySQL ์…ธ์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒ€์‚ฌ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • MySQL 8.0์—์„œ 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ MySQL 8.0์—์„œ 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ฌ์ „ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. MySQL ์…ธ์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒ€์‚ฌ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์‚ฌ์ „ ๊ฒ€์‚ฌ ์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL์€ ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘ ์‚ฌ์ „ ๊ฒ€์‚ฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ด๋„ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ๋””์Šคํฌ ๊ณต๊ฐ„ ๋ฐ ์ธ์Šคํ„ด์Šค ๋จธ์‹  ์œ ํ˜•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์—๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ํ…Œ์ด๋ธ”์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค. MySQL 5.7์—์„œ 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ด์ „ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ ๋ฐ์ดํ„ฐ ์‚ฌ์ „์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๊ฐ ํ…Œ์ด๋ธ”์— ๋ฉ”๋ชจ100KB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋จธ์‹  ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. MySQL 5.7์—์„œ MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ MySQL 8.0์—์„œ ์‚ฌ์šฉ์ž ๋ถ€์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    MySQL์šฉ Cloud SQL ๋ฒ„์ „ 8.0์€ partial_revokes๋ผ๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ํ”Œ๋ž˜๊ทธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ON์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. MySQL 5.7๊ณผ ๋‹ฌ๋ฆฌ ์ด ํ”Œ๋ž˜๊ทธ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค GRANT ๋ช…๋ น์–ด์— ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์˜ ์ „์ฒด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ MySQL 8.0์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL 8.0์˜ partial_revokes๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  7. ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ํ†ตํ•ด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์—”๋“œ ํˆฌ ์—”๋“œ ์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค์˜ ์‹œํ—˜ ์ด์ „์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  8. ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ๊ฐ„์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉ ์ค‘์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ๋™์ด ์ ์€ ๊ธฐ๊ฐ„์— ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ณ„ํšํ•ฉ๋‹ˆ๋‹ค.

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์ค€๋น„

์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

  1. MySQL 5.7์—์„œ 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ: ์‚ฌ์ „ ๊ฒ€์‚ฌ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐœ๊ฒฌ๋œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    1. ์ €์žฅ ํ”„๋กœ์‹œ์ €, ํŠธ๋ฆฌ๊ฑฐ, ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด์— RANKS, GROUPS, FUNCTION๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์˜ˆ์•ฝ๋œ ํ‚ค์›Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ‚ค์›Œ๋“œ ๋ฐ ์˜ˆ์•ฝ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    2. ํ…Œ์ด๋ธ” ์ •์˜์— ์ž˜๋ชป๋œ UTF ๋ฌธ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    3. ์ปค๋ฐ‹ํ•ด์•ผ ํ•˜๋Š” ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ XA ์ „ํ™˜(XA COMMIT ๋ฌธ ์‚ฌ์šฉ) ๋˜๋Š” ๋กค๋ฐฑ(XA ROLLBACK ๋ฌธ ์‚ฌ์šฉ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    4. ์ด๋ฆ„์˜ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์ด 64์ž๋ฅผ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.
    5. ์—ด์˜ ํ˜ผํ•ฉ ์ƒ‰์ธ์— ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์‚ฌ์ „ ๊ฒ€์‚ฌ ์ค‘์— ์˜ค๋ฅ˜ ๋ฐ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด MySQL 8.0์œผ๋กœ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ๊ด€๋ จ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ผ๋ฐ˜์ ์ธ MySQL ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์œ„ํ•œ ์„ค์น˜ ์ค€๋น„ ๋ฐ MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    MySQL 8.0์—์„œ 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ: ์‚ฌ์ „ ๊ฒ€์‚ฌ ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐœ๊ฒฌ๋œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • ์˜ค๋ž˜๋œ ๋ณต์ œ ์šฉ์–ด. MASTER ๋ฐ SLAVE ์šฉ์–ด๊ฐ€ MySQL 8.4์—์„œ ์™„์ „ํžˆ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์šฉ์–ด๊ฐ€ ํฌํ•จ๋œ ๋ช…๋ น์–ด๋‚˜ ๊ตฌ์„ฑ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์šฉ์–ด๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL 8.0 ์ดํ›„ MySQL 8.4์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • ์ง€์› ์ค‘๋‹จ๋œ mysql_native_password ํ”Œ๋Ÿฌ๊ทธ์ธ ๋Œ€์‹  caching_sha2_password ์ธ์ฆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ธฐ์กด ์‚ฌ์šฉ์ž ๊ณ„์ •์˜ ์ธ์ฆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

      caching_sha2_password ์ธ์ฆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
           ALTER USER 'username'@'%'
           IDENTIFIED WITH caching_sha2_password BY 'user_password';
           
      username ๋ฐ user_password๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  2. ๋””์Šคํฌ ๊ณต๊ฐ„ ๋ฐ ์ธ์Šคํ„ด์Šค ๋จธ์‹  ์œ ํ˜• ํ™•์ธ

    ์ฃผ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ํ…Œ์ด๋ธ”๊ณผ ์ƒˆ ๋ฐ์ดํ„ฐ ์‚ฌ์ „์„ ์ €์žฅํ•  ์ถ”๊ฐ€ ๋””์Šคํฌ ๊ณต๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์›๋ž˜ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค. Cloud SQL์—์„œ๋Š” ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ตœ์†Œ 100KB ์ด์ƒ ์žˆ์„ ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ : ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋จธ์‹  ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋จธ์‹  ์œ ํ˜• ๋ณ€๊ฒฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์ˆ˜ํ–‰

๋‹จ์ผ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์ด์ € ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์ด์ € ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์—ฐ์‡„ ๋ณต์ œ๋ณธ ๋ฐ ๋ฆฌ์ „ ๊ฐ„ ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•œ ๋ชจ๋“  ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ

๋‹จ์ผ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ฉด Cloud SQL์€ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Cloud SQL์—์„œ ๊ตฌ์„ฑ์„ ํ™•์ธํ•œ ํ›„ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  6. ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฐฑ์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด Cloud SQL์ด ๊ธฐ๋ณธ ๋ถ€ ๋ฒ„์ „์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค ์ •๋ณด ์„น์…˜์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•จ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ์„ ํƒ ํŽ˜์ด์ง€์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ๋ชฉ๋ก์„ ํด๋ฆญํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์ธ์Šคํ„ด์Šค ID ์ƒ์ž์— ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ ํ›„ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ์ž‘ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๊ฐœ์š” ํŽ˜์ด์ง€์˜ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ ์•„๋ž˜์— ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    gcloud sql instances patch ๋ช…๋ น์–ด๋ฅผ --database-version ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ํ˜„์žฌ ๋ฒ„์ „๋ณด๋‹ค ๋‚˜์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜•์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด๊ฑฐํ˜•์€ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ„ํš์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ์—ด๊ฑฐํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์ด ํ•„์š”ํ•˜๋ฉด SqlDatabaseEnums๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    gcloud sql instances patch INSTANCE_NAME \
    --database-version=DATABASE_VERSION

    ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ gcloud sql operations wait ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ซ์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

  2. ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    gcloud sql operations list ๋ช…๋ น์–ด๋ฅผ --instance ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ INSTANCE_NAME ๋ณ€์ˆ˜๋ฅผ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud sql operations list --instance=INSTANCE_NAME
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    gcloud sql operations describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ OPERATION ๋ณ€์ˆ˜๋ฅผ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ฐ€์ ธ์˜จ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud sql operations describe OPERATION

REST v1

  1. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    instances:patch ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ PATCH ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ์˜ ID
    • INSTANCE_NAME: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "databaseVersion": DATABASE_VERSION
    }

    DATABASE_VERSION์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜•์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „๋ณด๋‹ค ๋‚˜์ค‘์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด๊ฑฐํ˜•์€ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ„ํš์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ์—ด๊ฑฐํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ SqlDatabaseVersion์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ”์„œ operations.list ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ GET ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊พธ๊ณ  operations.get ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ GET ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ์˜ ID์ž…๋‹ˆ๋‹ค.
    • OPERATION_NAME: ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ฐ€์ ธ์˜จ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME

Terraform

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด Terraform ๋ฆฌ์†Œ์Šค ๋ฐ Google Cloud์šฉ Terraform ์ œ๊ณต์—…์ฒด ๋ฒ„์ „ 4.34.0 ์ด์ƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource "google_sql_database_instance" "instance" {
  name             = "mysql-instance"
  region           = "us-central1"
  database_version = "MYSQL_8_0"
  settings {
    tier = "db-n1-standard-2"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

ํ”„๋กœ์ ํŠธ์— Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด Google Cloud ๋‹ค์Œ ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

Cloud Shell ์ค€๋น„

  1. Cloud Shell์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•  ๊ธฐ๋ณธ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ์–ด๋–ค ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ช…์‹œ์  ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ ์ค€๋น„

๊ฐ Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—๋Š” ์ž์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ(๋ฃจํŠธ ๋ชจ๋“ˆ์ด๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Cloud Shell์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์—๋Š” .tf ํ™•์žฅ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: main.tf). ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํŒŒ์ผ์„ main.tf๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์„น์…˜์ด๋‚˜ ๋‹จ๊ณ„์—์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  main.tf์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ํ•„์š”ํ•œ ๊ฒฝ์šฐ GitHub์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Terraform ์Šค๋‹ˆํŽซ์ด ์—”๋“œ ํˆฌ ์—”๋“œ ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  3. ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. Terraform์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    terraform init

    ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  Google ๊ณต๊ธ‰์—…์ฒด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -upgrade ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    terraform init -upgrade

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  1. ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  Terraform์—์„œ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    terraform plan

    ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply

    Terraform์— '์ ์šฉ ์™„๋ฃŒ' ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  3. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ UI์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™ํ•˜์—ฌ Terraform์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ์‚ฌํ•ญ ์‚ญ์ œ

๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด deletion_protection ์ธ์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    deletion_protection =  "false"
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด์ „์— Terraform ๊ตฌ์„ฑ์— ์ ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    terraform destroy

์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋ฉด Cloud SQL์ด ๋จผ์ € ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL์—์„œ ์ธ์Šคํ„ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ํ™•์ธํ•˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์ด ์‹คํŒจํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ณต์ œ๋ณธ ํฌํ•จ

๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์— ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ชจ๋“  ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud SQL์€ ๋ฆฌ์ „ ๊ฐ„ ๋ณต์ œ๋ณธ ๋ฐ ์—ฐ์‡„ ๋ณต์ œ๋ณธ์„ ๋น„๋กฏํ•œ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ๋ชจ๋“  ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•˜๋ฉด Cloud SQL์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค ๋ฐ ๋ณต์ œ๋ณธ์˜ ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋ฐ ๋ณต์ œ๋ณธ์ด ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ์ด์ „ ๋ฐฑ์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  4. ๋ชจ๋“  ๋ณต์ œ๋ณธ์˜ ๋ณต์ œ๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋ฉด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ  ๋ณต์ œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  7. Cloud SQL์€ ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  8. Cloud SQL์€ ๋ชจ๋“  ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ์˜ ๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์— ์‹คํŒจํ•˜๋”๋ผ๋„ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋Š” ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•˜๋Š” ๋ฐGoogle Cloud ์ฝ˜์†”์ด๋‚˜ Terraform์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. gcloud CLI ๋˜๋Š” Cloud SQL Admin API๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud

  1. ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    --database-version ๋ฐ --include-replicas-for-major-version-upgrade ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ gcloud sql instances patch ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • INSTANCE_NAME: ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • DATABASE_VERSION: ํ˜„์žฌ ๋ฒ„์ „๋ณด๋‹ค ๋‚˜์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜•์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด๊ฑฐํ˜•์€ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ„ํš์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ์—ด๊ฑฐํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์ด ํ•„์š”ํ•˜๋ฉด SqlDatabaseEnums๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    gcloud sql instances patch INSTANCE_NAME \
      --database-version=DATABASE_VERSION \
      --include-replicas-for-major-version-upgrade

    ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์˜ˆ์ƒ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ gcloud sql operations wait ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ซ์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  2. ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    gcloud sql operations list ๋ช…๋ น์–ด๋ฅผ --instance ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ INSTANCE_NAME ๋ณ€์ˆ˜๋ฅผ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud sql operations list --instance=INSTANCE_NAME
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    gcloud sql operations describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ OPERATION ๋ณ€์ˆ˜๋ฅผ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ฐ€์ ธ์˜จ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud sql operations describe OPERATION

REST

  1. ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    instances:patch ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ PATCH ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ์˜ ID
    • INSTANCE_NAME: ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "databaseVersion": DATABASE_VERSION
      "includeReplicasForMajorVersionUpgrade": true
    }

    • DATABASE_VERSION์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜•์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „๋ณด๋‹ค ๋‚˜์ค‘์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด๊ฑฐํ˜•์€ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ„ํš์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ์—ด๊ฑฐํ˜•์˜ ์ „์ฒด ๋ชฉ๋ก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ SqlDatabaseVersion์„ ์ฐธ์กฐํ•˜์„ธ์š”.
    • includeReplicasForMajorVersionUpgrade ํ•„๋“œ์— true๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ”์„œ operations.list ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ GET ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊พธ๊ณ  operations.get ๋ฉ”์„œ๋“œ์™€ ํ•จ๊ป˜ GET ์š”์ฒญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ์˜ ID์ž…๋‹ˆ๋‹ค.
    • OPERATION_NAME: ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ฐ€์ ธ์˜จ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—… ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME

์ž๋™ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ Cloud SQL์€ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” 2๊ฐœ์˜ ์ฃผ๋ฌธํ˜• ๋ฐฑ์—…์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์€ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ์ž‘ ์ง์ „์— ์ˆ˜ํ–‰๋˜๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฑ์—…์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์ „ ๋ฒ„์ „ ์ƒํƒœ๋กœ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์€ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šค์—์„œ ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ ์ž‘์—…์ด ํ—ˆ์šฉ๋˜๋Š” ์ฆ‰์‹œ ์ˆ˜ํ–‰๋˜๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฐฑ์—…์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—… ๋ชฉ๋ก์„ ๋ณด๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์ด On-demand ์œ ํ˜•์œผ๋กœ ๋‚˜์—ด๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์€ ๋น ๋ฅด๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ผ๋ฒจ์ด ์ง€์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL 5.7์—์„œ MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์—๋Š” Pre-upgrade backup, MYSQL_5_7 to MYSQL_8_0. ๋ผ๋ฒจ์ด, ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฐฑ์—…์—๋Š” Post-upgrade backup, MYSQL_8_0 from MYSQL_5_7. ๋ผ๋ฒจ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. MySQL 8.0์—์„œ MySQL 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์—๋Š” Pre-upgrade backup, MYSQL_8_0 to MYSQL_8_4. ๋ผ๋ฒจ์ด, ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฐฑ์—…์—๋Š” Post-upgrade backup, MYSQL_8_4 from MYSQL_8_0. ๋ผ๋ฒจ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ฃผ๋ฌธํ˜• ๋ฐฑ์—…์—์„œ์™€ ๊ฐ™์ด ๋ฐฑ์—…์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์ด ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. PITR์„ ์‚ฌ์šฉ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ๋ณด๊ด€ ๊ธฐ๊ฐ„ ๋™์•ˆ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์„ ์‚ญ์ œํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์—๋Š” PITR์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์ด ๋” ์ด์ƒ ๋ณด๊ด€ ๊ธฐ๊ฐ„์ด ์•„๋‹ˆ๊ฒŒ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์™„๋ฃŒ

๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

  1. ์ˆ˜๋ฝ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ์‹œ์Šคํ…œ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. ์„ ํƒ์‚ฌํ•ญ: ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝ์šฐ MySQL์—์„œ ๋ณด์•ˆ ๋ฐ ๊ณ„์ • ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL 8.0์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ด๋กœ ์ธํ•ด ์ธ์Šคํ„ด์Šค์˜ MySQL 5.7 ๋ฒ„์ „์—์„œ ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” MySQL 8.0์—์„œ ์ง์ ‘ ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž์™€ ๋™์ผํ•œ ๊ถŒํ•œ์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL 5.7์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” CREATE ROLE ๊ถŒํ•œ๊ณผ DROP ROLE ๊ถŒํ•œ์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MySQL 5.7์— ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Cloud SQL์—์„œ๋Š” ์‚ฌ์šฉ์ž ๊ถŒํ•œ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์žฌ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    MySQL 8.0์—์„œ MySQL 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝ์šฐ MySQL 8.4์— ๋„์ž…๋œ ๊ถŒํ•œ ์ถ”๊ฐ€, MySQL 8.0์— ์žˆ๋˜ ๊ถŒํ•œ ์‚ญ์ œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์ด ์ถ”๊ฐ€๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL 8.4 ์‚ฌ์šฉ์ž ๊ถŒํ•œ(cloudsqlsuperuser)์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ MySQL 8.0 ๋˜๋Š” MySQL 8.4์—์„œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    1. cloudsqlsuperuser ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    2. ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ํ†ตํ•ด ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ์‚ฌ์šฉ์ž์˜ ์ด์ „ ๊ถŒํ•œ์„ ๋ชจ๋‘ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

      REVOKE ALL PRIVILEGES ON *.* FROM user@host
    3. ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ˆ์ƒ๋˜๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ ํƒ์‚ฌํ•ญ: ๋ฐฑ์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ Cloud SQL์—์„œ ์ž๋™์œผ๋กœ ๋ฐฑ์—…์„ ์ƒ์„ฑํ•˜์ง€๋งŒ, Cloud SQL์—์„œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง์ ‘ ๋ฐฑ์—…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  4. ์„ ํƒ์‚ฌํ•ญ: MySQL์šฉ Cloud SQL 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝ์šฐ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ, ํด๋ผ์ด์–ธํŠธ, MySQL ์…ธ๋„ MySQL 8.4๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฌธ์ œ ํ•ด๊ฒฐ

์˜ˆ๋ฅผ ๋“ค์–ด ์ธ์Šคํ„ด์Šค์— ์ƒˆ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ๋“ฑ ์ž˜๋ชป๋œ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ช…๋ น์–ด๋ฅผ ์‹œ๋„ํ•˜๋ฉด Cloud SQL์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์˜ ๋ฌธ๋ฒ•์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์˜ ๊ตฌ์กฐ๊ฐ€ ์œ ํšจํ•˜๋‹ค๋ฉด ๋‹ค์Œ ์ถ”์ฒœ ์กฐ์น˜๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”.

์˜ค๋ฅ˜ ๋กœ๊ทธ ๋ณด๊ธฐ

์—…๊ทธ๋ ˆ์ด๋“œ ์š”์ฒญ์ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Cloud SQL์—์„œ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋กœ๊ทธ ํ•ญ๋ชฉ์—๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธ์Šคํ„ด์Šค ์‹๋ณ„์ž์™€ ํ•จ๊ป˜ ๋ผ๋ฒจ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud์ฝ˜์†”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ธ์Šคํ„ด์Šค ๊ฐœ์š” ํŽ˜์ด์ง€์˜ ์ž‘์—… ๋ฐ ๋กœ๊ทธ ์ฐฝ์—์„œ MySQL ์˜ค๋ฅ˜ ๋กœ๊ทธ ๋ณด๊ธฐ ๋งํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  4. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋กœ๊ทธ ์ด๋ฆ„ ๋กœ๊ทธ ํ•„ํ„ฐ์—์„œ ๋กœ๊ทธ ์ด๋ฆ„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ฟผ๋ฆฌ ํ•„ํ„ฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณ ๊ธ‰ ์ฟผ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋ชจ๋“  ํ•„๋“œ ๊ฒ€์ƒ‰ ์ƒ์ž์— ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ DATABASE_ID๋ฅผ

    ํ”„๋กœ์ ํŠธ ID์™€ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ํ˜•์‹์€ project_id:instance_name๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    resource.type="cloudsql_database"
    resource.labels.database_id="DATABASE_ID"
    logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err"

    ์˜ˆ๋ฅผ ๋“ค์–ด buylots ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ shopping-db๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

     resource.type="cloudsql_database"
     resource.labels.database_id="buylots:shopping-db"
     logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fmysql.err"

    ํŠน์ • ๊ธฐ๊ฐ„ ๋‚ด์— ๋ณด๊ณ ๋œ ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ์‹ฌ๊ฐ๋„๋ณ„๋กœ ๋กœ๊ทธ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ ์˜ต์…˜์—์„œ ๋‹ค์Œ ํ•„ํ„ฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ธด๊ธ‰
    • ์•Œ๋ฆผ
    • ์‹ฌ๊ฐ
    • ์˜ค๋ฅ˜

    MySQL ๋ฒ„์ „ 5.7์—์„œ 8.0์œผ๋กœ ์‚ฌ์ „ ๊ฒ€์‚ฌ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋™์•ˆ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด MySQL 8.0์œผ๋กœ์˜ ์ธํ”Œ๋ ˆ์ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ ๊ด€๋ จ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์ „ ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ ๋ณต์›

์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณต์›ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ์ƒˆ ์ธ์Šคํ„ด์Šค์ธ Cloud SQL ๋ณต๊ตฌ ์ธ์Šคํ„ด์Šค๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋ณต์›ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

    ์ž๋™ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฑ์—…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ๋ณต๊ตฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์ด ์ˆ˜ํ–‰๋  ๋•Œ Cloud SQL์—์„œ ์‹คํ–‰ํ•˜๋˜ ์ฃผ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์›๋ž˜ ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์ผํ•œ ํ”Œ๋ž˜๊ทธ ๋ฐ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  3. ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

    ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฐฑ์—…์„ ๋ณต๊ตฌ ์ธ์Šคํ„ด์Šค๋กœ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  5. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด ๋ณต๊ตฌ๋˜์—ˆ์œผ๋ฉด ๋ณต๊ตฌ ์ธ์Šคํ„ด์Šค ๋ฐ ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ์ „ ๋ฒ„์ „์—์„œ ํŠธ๋ž˜ํ”ฝ ์ œ๊ณต์„ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ์‚ฌํ•ญ

์ด ์„น์…˜์—์„œ๋Š” ์ธํ”Œ๋ ˆ์ด์Šค ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ์ œํ•œ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ์™ธ๋ถ€ ๋ณต์ œ๋ณธ์—์„œ๋Š” ์ธํ”Œ๋ ˆ์ด์Šค ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • MySQL 5.7์—์„œ ํ…Œ์ด๋ธ”์ด 512,000๊ฐœ๊ฐ€ ๋„˜๋Š” 8.0์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MySQL 8.0์—์„œ ํ…Œ์ด๋ธ”์ด 512,000๊ฐœ๊ฐ€ ๋„˜๋Š” 8.4๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์ œํ•œ ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MySQL 8.0์—์„œ 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ ๋ณต์ œ๋ณธ์„ MySQL 8.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์ง€๋งŒ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ง€์› ์ค‘๋‹จ๋œ mysql_native_password ์ธ์ฆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์ง€ ์•Š์€ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์— ์ƒˆ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ์งํ›„์— ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์—์„œ๋งŒ ์ƒˆ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    CREATE USER 'USERNAME'@'%' IDENTIFIED WITH caching_sha2_password BY 'PASSWORD';

    USERNAME ๋ฐ PASSWORD๋ฅผ ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

FAQ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘์— ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‚˜์š”?
์˜ˆ. Cloud SQL์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”?

๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 10๋ถ„ ๋ฏธ๋งŒ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์—์„œ ์†Œ๋Ÿ‰์˜ vCPU ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ๊ฐ„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ์ฒด ์ˆ˜์— ์ƒ์‘ํ•˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ˜ธ์ŠคํŒ…ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋งค์šฐ ํฐ ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ช‡ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๊ทธ์— ๋น„๋ก€ํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ๋ณต์ œ๋ณธ ์ˆ˜์— ๋”ฐ๋ผ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋Š” ๋ฐ ์ตœ๋Œ€ 1์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
Cloud SQL์—์„œ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๊ฐœ๋ณ„ ๋‹จ๊ณ„๋Š” ์ถ”์ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
์•„๋‹ˆ์š”. ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์‹œ์ž‘๋œ ๋‹ค์Œ์—๋Š” ์ด๋ฅผ ์ทจ์†Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด Cloud SQL์ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค.
์—…๊ทธ๋ ˆ์ด๋“œ ๋„์ค‘ ๋‚ด ์„ค์ •์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

์ธํ”Œ๋ ˆ์ด์Šค ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ธ์Šคํ„ด์Šค ์ด๋ฆ„, IP ์ฃผ์†Œ, ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”Œ๋ž˜๊ทธ ๊ฐ’, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •์ด Cloud SQL์—์„œ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL 5.7์—์„œ character_set_server ํ”Œ๋ž˜๊ทธ์˜ ๊ธฐ๋ณธ๊ฐ’์€ utf8์ž…๋‹ˆ๋‹ค. MySQL 8.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ์˜ ๊ธฐ๋ณธ๊ฐ’์ด utf8mb4๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. utf8๋กœ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ ๊ฐ’์„ ์ด์ „ ๊ฐ’์œผ๋กœ ๋‹ค์‹œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ํŠน์ • ํ”Œ๋ž˜๊ทธ ๋˜๋Š” ๊ฐ’์ด ๋Œ€์ƒ ๋ฒ„์ „์—์„œ ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” Cloud SQL์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋™์•ˆ ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๋ณต์ œ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๋ณต์ œ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด Cloud SQL์—์„œ ๋ณต์ œ๋ณธ์„ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ MySQL ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ์„ ๋‹ค์‹œ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜๋ฉด ๋ณต์ œ๊ฐ€ ๋‹ค์‹œ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ๋ณต์ œ๋ณธ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋Œ€์‹  ๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ณต์ œ๋ณธ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ์ด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์†์ƒ๋œ ๋ณต์ œ๋ณธ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“  ๋‹ค์Œ ์ƒˆ ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.

    ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋‹ค์‹œ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์— ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ์ฐพ๊ณ  ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜์ •ํ•œ ๋‹ค์Œ ๋ณต์ œ๋ณธ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

  2. ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค ์—…๊ทธ๋ ˆ์ด๋“œ

    ๋ณต์ œ๋ณธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ์ž‘์—…์—์„œ ๋ณต์ œ๋ณธ์„ ๋‹ค์‹œ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ณต์ œ๋ณธ์ด ์ด์ „ ๋ฉ”์ด์ € ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์—…๊ทธ๋ ˆ์ด๋“œ์— ์‹คํŒจํ•˜๋ฉด ๋ณต์ œ๋ณธ์ด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ์„ ๋‹ค์‹œ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜๋ฉด ๋ณต์ œ๋ณธ์˜ mysql.err ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [REPL]... failed executing transaction.... end_log_pos...; Failure Reason๊ณผ ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋ณ€๊ฒฝ๊ณผ ํ•จ๊ป˜ Access denied for AuthId....๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด mysql ๋ฐ sys ์Šคํ‚ค๋งˆ์—์„œ MySQL 5.7 ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ MySQL 8.0์˜ ๋ณด์•ˆ ๋ฐ ๊ณ„์ • ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์ค‘์ง€ํ•œ ํ›„ ๋ณต์ œ๋ณธ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL์—์„œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์—์„œ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

MySQL ๋กœ๊ทธ์—์„œ Access denied for AuthID....์™€ ๊ฐ™์€ ์‹คํŒจ ์ด์œ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋ณต์ œ๋ณธ์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ํ›„ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์›์ธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์ „์— ๋น„ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ฃผ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ์ค€๋น„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„