๊ฐ์
Database Migration Service๋ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ Cloud SQL ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ์ผํ์ฑ ๋ฐ ์ง์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง์ํฉ๋๋ค.
MySQL์ ์ง์๋๋ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Amazon RDS 5.6, 5.7, 8.0
- ์์ฒด ๊ด๋ฆฌํ MySQL(์จํ๋ ๋ฏธ์ค ๋๋ ์์ ํ ์ ์ดํ๋ ๋ชจ๋ Cloud VM) 5.5, 5.6, 5.7, 8.0
- MySQL์ฉ Cloud SQL 5.6, 5.7, 8.0, 8.4
- Amazon Aurora 5.6, 5.7, 8.0
- MySQL์ฉ Microsoft Azure Database 5.7, 8.0
MySQL 8.0 ์์ค์ ๊ฒฝ์ฐ Database Migration Service๋ ๋ค์ ๋ง์ด๋ ๋ฒ์ ๋ ์ง์ํฉ๋๋ค.8.0.18, 8.0.26, 8.0.27, 8.0.28, 8.0.30, 8.0.31, 8.0.32, 8.0.33, 8.0.34, 8.0.35, 8.0.36, 8.0.37, 8.0.39, 8.0.40, 8.0.41, 8.0.42
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
- Cloud SQL ์์ค: ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ Cloud SQL ์ธ์คํด์ค์์ RFC 1918 ์ด์ธ์ ์ฃผ์ IP ๋ฒ์๋ฅผ ์ฌ์ฉํ๋ Cloud SQL ์ธ์คํด์ค๋ก ์ด์ ํ๋ ๊ฒฝ์ฐ ์์ค Cloud SQL ์ธ์คํด์ค์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ RFC 1918 ์ด์ธ์ ๋ฒ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. Cloud SQL ๋ฌธ์์ ์น์ธ๋ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ์ธ์.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ด์ ํ๊ธฐ ์ ์ ์ ์ฒด ๋คํ ๋จ๊ณ ์ค์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ ์ธ์ด (DDL) ์ฐ๊ธฐ ์์ ์ ์ค์งํด์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ DDL ์์ ์ด ์ค์ง๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ด CDC ๋จ๊ณ์ ์์ผ๋ฉด DDL ์์ ์ ์ฌ๊ฐํ ์ ์์ต๋๋ค.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์๊ฐ DEFINER ์ ๋ก ์ ์ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ง ์์์ง ํ์ธํฉ๋๋ค. DEFINER ์ ์ด ์๋ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ MySQL ๋ง์ด๊ทธ๋ ์ด์ ์์ ๋ง๋ค๊ธฐ ๋ฐ ์คํ์ ์ฐธ๊ณ ํ์ธ์.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์
mysql
,performance_schema
,information_schema
,ndbinfo
๋๋sys
์์คํ ์คํค๋ง์ ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ๋ณต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ด๋ฌํ ์์คํ ์คํค๋ง ํ ์ด๋ธ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.๋ณต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฌํ ํ ์ด๋ธ์ด ์์ผ๋ฉด ์ด์ ์์ ์ด
Unknown table in system schema
์ค๋ฅ์ ํจ๊ป ์คํจํ ์ ์์ต๋๋ค. - server-id ์ต์ ์ 1 ์ด์์ ๊ฐ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ฐ ๋ฐ์ด๋๋ฆฌ ๋ก๊น ์ต์ ๋ฐ ๋ณ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
GTID_MODE
๋ฅผON
๋๋OFF
๋ก ์ค์ ํ์ฌ ์ ์ญ ํธ๋์ญ์ ID (GTID) ๋ก๊น ์ ๊ตฌ์ฑํฉ๋๋ค.ON_PERMISSIVE
์GTID_MODE
๊ฐ์ ์ง์๋์ง ์์ต๋๋ค.์ฌ์ฉํ ๊ฐ์ ์ด์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
- ์ฝ๊ธฐ ๋ณต์ ๋ณธ์ด ์ฌ์ฉ ์ค์ ๋
๊ธฐ์กด ๋์ ์ธ์คํด์ค๋ก ์ด์ ํ๋ ๊ฒฝ์ฐ
GTID_MODE
๋ฅผON
๋ก ์ค์ ํฉ๋๋ค. - ์๋ ๋คํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ด์ ํ๋ ๊ฒฝ์ฐ
GTID_MODE
๋ฅผON
๋ก ์ค์ ํฉ๋๋ค.
GTID_MODE
์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์ ์ญ ๊ฑฐ๋ ID ์์คํ ๋ณ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.- ์ฝ๊ธฐ ๋ณต์ ๋ณธ์ด ์ฌ์ฉ ์ค์ ๋
๊ธฐ์กด ๋์ ์ธ์คํด์ค๋ก ์ด์ ํ๋ ๊ฒฝ์ฐ
-
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ๊ณ์ ์ ๊ตฌ์ฑํ์ฌ ๋ชจ๋ ์์น์์ ์ฐ๊ฒฐ์ ์๋ฝํ๋๋ก ํด์ผ ํฉ๋๋ค (ํธ์คํธ =
%
). ์ดํ ๋จ๊ณ์์ ์ด ์ฌ์ฉ์์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค.๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค๋ฅธ ํญ๋ชฉ์ด ์์๋ ๊ฐ๋ฅ์ฑ์ ์ ํํ๋ ค๋ฉด ์ด ์ฉ๋๋ก ๋ณ๋์ ๊ณ์ ์ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ๊ณผ ๋คํ ์กฐํฉ ์ ํ์๋ ๋ค ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ ํ 1: ์ง์์ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ๊ด๋ฆฌํ ๋คํ
- ์ ํ 2: ์ง์์ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ์๋ ๋คํ
- ์ ํ 3: ์ผํ์ฑ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ๊ด๋ฆฌํ ๋คํ
- ์ ํ 4: ์ผํ์ฑ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ์๋ ๋คํ
๋ง์ด๊ทธ๋ ์ด์ ๊ณผ ๋คํ ์กฐํฉ์ ๊ฐ ์ ํ ๊ถํ์ ์๋ ํญ์ ๋์ด๋์ด ์์ต๋๋ค.
์ ํ 1
๊ตฌ์ฑํ๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋ค์ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
REPLICATION SLAVE
EXECUTE
SELECT
SHOW VIEW
REPLICATION CLIENT
RELOAD
TRIGGER
- (Amazon RDS ๋ฐ Amazon Aurora์์๋ง ๋ง์ด๊ทธ๋ ์ด์
)
LOCK TABLES
MySQL ๋ฒ์ 8.0 ์ด์: ์ต์ ์ ์ฑ๋ฅ์ ์ํด ์ด ๊ณ์ ์
BACKUP_ADMIN
๊ถํ์ ๋ถ์ฌํ์ง ๋ง์ธ์.์ ํ 2
๊ตฌ์ฑํ๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋ค์ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
REPLICATION SLAVE
EXECUTE
์ ํ 3
๊ตฌ์ฑํ๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋ค์ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
SELECT
SHOW VIEW
TRIGGER
- (Amazon RDS ๋ฐ Amazon Aurora์์๋ง ๋ง์ด๊ทธ๋ ์ด์
)
LOCK TABLES
- (
GTID_MODE = ON
์ค์ ์ผ๋ก๋ง ์์ค์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ)RELOAD
MySQL ๋ฒ์ 8.0 ์ด์: ์ต์ ์ ์ฑ๋ฅ์ ์ํด ์ด ๊ณ์ ์
BACKUP_ADMIN
๊ถํ์ ๋ถ์ฌํ์ง ๋ง์ธ์.์ ํ 4
ํ์ํ ๊ถํ์ด ์์ต๋๋ค.
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ ์ ๋ค์์ ํ์ธํฉ๋๋ค.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ํ ๊ธฐ๋ฐ ๋ฐ์ด๋๋ฆฌ ๋ก๊น ์ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง์ํ๊ธฐ์ ์ถฉ๋ถํ ๊ธฐ๊ฐ ๋์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ๋ณด๊ดํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ผ์ฃผ์ผ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค.
๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์์ค์ ์น์ ์ ํผ์นฉ๋๋ค.
์์ฒด ํธ์คํ MySQL
MySQL ๋ฒ์ ์ ๋ฐ๋ผ ๋ณต์ ๊ฐ ์๋ฃ๋ ์ ์๋ ์ถฉ๋ถํ ์๊ฐ์ ์ง์ ํฉ๋๋ค.
- MySQL 5.5 - 5.7:
expire_logs_days
- MySQL 8.0:
expire_logs_days
,binlog_expire_logs_seconds
MySQL์ฉ Microsoft Azure Database
MySQL์ฉ Microsoft Azure Database์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ๋ก๊น ์ด ์ฌ์ฉ ์ค์ ๋์ด ์์ต๋๋ค. ์ฌ์ฉ ์ค์ ํ ํ์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ค์๊ณผ ๊ฐ์ ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
binlog_expire_logs_seconds
๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง์ํ๊ธฐ์ ์ถฉ๋ถํ ๊ธฐ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.์์ธํ ๋ด์ฉ์ PostgreSQL์ฉ Azure Database์์ ์๋ฒ ํ๋ผ๋ฏธํฐ ๊ตฌ์ฑ ๋ฐ Microsoft ๋ฌธ์์
binlog_expire_logs_seconds
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.- ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋๋๋ก ์๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
Amazon RDS
Amazon RDS์ ๊ฒฝ์ฐ
binlog retention hours
๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ์ฌ ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์์ ํ ๊ธฐ๋ฐ ๊ตฌ์ฑ์ ์ค์ ํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ Amazon RDS์์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ํ์ผ์ ๋ณด๊ดํด์ผ ํ๋ ์๊ฐ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.Amazon RDS์์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ๋ณด๊ด ๊ธฐ๊ฐ์ ์ค์ ํ๋ ค๋ฉด
mysql.rds_set_configuration
์ ์ฅ ํ๋ก์์ ๋ฅผ ์ฌ์ฉํ๊ณ ๋ณต์ ๊ฐ ๋ฐ์ํ๊ธฐ์ ์ถฉ๋ถํ ์๊ฐ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.call mysql.rds_set_configuration('binlog retention hours',168);
Amazon Aurora
Amazon Aurora์ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ด๋๋ฆฌ ๋ก๊น ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ ๋ณด๊ด ๊ธฐ๊ฐ์ ์ค์ ํฉ๋๋ค.
mysql> call mysql.rds_set_configuration('binlog retention hours', 168);
- ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋๋๋ก ์๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
- ๋ชจ๋ ํ ์ด๋ธ(์์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ์ ์ธ)์ด InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํฉ๋๋ค.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ ์ฌ์ฉ์ ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ 32์(์๋ฌธ ๊ธฐ์ค) ์ดํ์ฌ์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ MySQL ๋ณต์ ์๋ง ํด๋นํฉ๋๋ค.
MySQL์ฉ Microsoft Azure Database ์์ค๋ง ํด๋น:
require_secure_transport
์ค์ ์ ๊ฐ์ ํ์ธํฉ๋๋ค.๊ธฐ๋ณธ์ ์ผ๋ก Microsoft Azure ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ชจ๋ ์์ ์ฐ๊ฒฐ์ SSL/TLS ์ํธํ๊ฐ ํ์ํฉ๋๋ค.
require_secure_transport
๊ฐ์ ๋ฐ๋ผ ์์ค ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋ค ๋ ๋ค์ ์ํธํ ์ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.require_secure_transport
๊ฐon
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ, TLS ๋๋ mTLS๋ฅผ ์ ํํฉ๋๋ค.require_secure_transport
์ดoff
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์์์ ์ ํํฉ๋๋ค.