๊ฐ์
Database Migration Service๋ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ Cloud SQL ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ์ง์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง์ํฉ๋๋ค.
PostgreSQL์ ์ง์๋๋ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Amazon RDS 9.6.10 ์ด์, 10.5 ์ด์, 11.1 ์ด์, 12, 13, 14, 15, 16, 17
- Amazon Aurora 10.11 ์ด์, 11.6 ์ด์, 12.4 ์ด์, 13.3 ์ด์, 14.6 ์ด์, 15.2 ์ด์, 16, 17
- ์์ฒด ๊ด๋ฆฌํ PostgreSQL (์จํ๋ ๋ฏธ์ค ๋๋ ์์ ํ ์ ์ดํ๋ ๋ชจ๋ Cloud VM) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17
- PostgreSQL์ฉ Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16, 17
- PostgreSQL์ฉ Microsoft Azure Database Flexible Server: 11 ์ด์
์์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์์ค ์ธ์คํด์ค์ ๊ธฐ๋ณธ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ ๋ค ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์์ค ์ธ์คํด์ค ๊ตฌ์ฑ
์์ค ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- Cloud SQL ์์ค: ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ Cloud SQL ์ธ์คํด์ค์์ RFC 1918 ์ด์ธ์ ์ฃผ์ IP ๋ฒ์๋ฅผ ์ฌ์ฉํ๋ Cloud SQL ์ธ์คํด์ค๋ก ์ด์ ํ๋ ๊ฒฝ์ฐ ์์ค Cloud SQL ์ธ์คํด์ค์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ RFC 1918 ์ด์ธ์ ๋ฒ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. Cloud SQL ๋ฌธ์์ ์น์ธ๋ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ์ธ์.
- ์์ค ์ธ์คํด์ค์๋
postgres
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด ์๋ก ๋ง๋์ธ์. ์์ค ์ธ์คํด์ค์
pglogical
ํจํค์ง๋ฅผ ์ค์นํ๊ณshared_preload_libraries
๋ณ์์ ํฌํจ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ํ๊ฒฝ์ ๋ฐ๋ผ ์์ค ์ธ์คํด์ค์pglogical
ํจํค์ง ์ค์น๋ฅผ ์ฐธ๊ณ ํ์ธ์.์์ค ์ธ์คํด์ค์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ํ์ธํฉ๋๋ค. Database Migration Service๋ Cloud SQL์์ ์ง์๋์ง ์๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ง์ด๊ทธ๋ ์ด์ ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ํ์ฅ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฐจ๋จ๋์ง๋ ์์ง๋ง ์ํํ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค๋ฅผ ์ํด ๊ฐ์ฒด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ง์๋์ง ์๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ฐธ์กฐํ์ง ์๋์ง ํ์ธํ์ธ์. ๊ณ์ํ๊ธฐ ์ ์ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ฌํ ํ์ฅ ํ๋ก๊ทธ๋จ๊ณผ ์ฐธ์กฐ๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
pg_cron
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ์์ค์ ๊ฒฝ์ฐ:pg_cron
ํ์ฅ ํ๋ก๊ทธ๋จ (๋๋ ํ์ฅ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ฒฐ๋cron
์ค์ )์ Database Migration Service์์ ๋ง์ด๊ทธ๋ ์ด์ ๋์ง ์์ง๋ง PostgreSQL์ฉ Cloud SQL ๋์์์๋ ์ง์๋ฉ๋๋ค. ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์pg_cron
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์๋ฃ๋ ํ ๋์ ์ธ์คํด์ค์ ๋ค์ ์ค์นํ ์ ์์ต๋๋ค.
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ
Database Migration Service๋ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ธํ ์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค PostgreSQL ์์ค: ํ
ํ๋ฆฟ ๋ฐ์ดํฐ๋ฒ ์ด์ค
template0
,template1
- Amazon RDS ์์ค:
template0
,template1
,rdsadmin
- Cloud SQL ์์ค: ํ
ํ๋ฆฟ ๋ฐ์ดํฐ๋ฒ ์ด์ค
template0
,template1
- Microsoft Azure ์์ค์ ๊ฒฝ์ฐ:
azure_maintenance
,azure_sys
,template0
,template1
์์ ์ธ๊ธ๋์ง ์์ ์์ค ์ธ์คํด์ค์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ค์์ ์ํํฉ๋๋ค.
PostgreSQL ๋ฒ์ 9.4 ์์ค๋ง ํด๋น: ์์ค ์ธ์คํด์ค์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์
pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.CREATE EXTENSION IF NOT EXISTS pglogical;
CREATE EXTENSION IF NOT EXISTS pglogical_origin;
๊ธฐํ ๋ชจ๋ ๋ฒ์ ์ ๊ฒฝ์ฐ ์์ค ์ธ์คํด์ค์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ๋ง ์ค์นํฉ๋๋ค.CREATE EXTENSION IF NOT EXISTS pglogical
๊ธฐ๋ณธ ํค๊ฐ ์๋ ํ ์ด๋ธ์ ๊ฒฝ์ฐ Database Migration Service๋ CDC ๋จ๊ณ์์ ์ด๊ธฐ ์ค๋ ์ท๊ณผ
INSERT
๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.UPDATE
๋ฐDELETE
๋ฌธ์ ์๋์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํด์ผ ํฉ๋๋ค.์์ค ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ ์ค์ธ USER (์ฐ๊ฒฐ ํ๋กํ ํ์ด์ง์์ ์ฌ์ฉ์๋ก ๊ตฌ์ฑ๋จ)๋ ๊ธฐ๋ณธ
postgres
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฟ๋ง ์๋๋ผ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ํน์ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ์ฌ์ฉ์๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ถํ์ ์ค์ ํ๋ ค๋ฉด ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์.GRANT USAGE on SCHEMA SCHEMA to USER
: ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์คํค๋ง์์ ์คํ (์ ๋ณด ์คํค๋ง ๋ฐ 'pg_'๋ก ์์ํ๋ ์คํค๋ง ์ ์ธ)GRANT USAGE on SCHEMA pglogical to PUBLIC;
: ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํGRANT SELECT on ALL TABLES in SCHEMA pglogical to USER
: ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณต์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํGRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USER
: ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์คํค๋ง์์ ์คํ (์ ๋ณด ์คํค๋ง ๋ฐ 'pg_'๋ก ์์ํ๋ ์คํค๋ง ์ ์ธ)GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USER
: ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์คํค๋ง์์ ์คํ (์ ๋ณด ์คํค๋ง ๋ฐ 'pg_'๋ก ์์ํ๋ ์คํค๋ง ์ ์ธ)- ์์ค๊ฐ Amazon RDS์ธ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
GRANT rds_replication to USER
- ์์ค๊ฐ Amazon RDS๊ฐ ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
ALTER USER USER with REPLICATION
์ญํ
์์ค ์ธ์คํด์ค์ pglogical
ํจํค์ง ์ค์น
์ด ์น์
์์๋ ์์ค ์ธ์คํด์ค์ ๋ฐ๋ผ pglogical
ํจํค์ง์ ๊ด๋ จ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
์จํ๋ ๋ฏธ์ค ๋๋ ์์ฒด ๊ด๋ฆฌํ PostgreSQL
- ์๋ฒ์ pglogical ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
- ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๊ณ ํ์์ ๋ฐ๋ผ ๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
shared_preload_libraries
์๋pglogical
์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค.์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด
ALTER SYSTEM SET shared_preload_libraries = 'pglogical,[any other libraries in your instance]';
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.wal_level
์logical
๋ก ์ค์ ํฉ๋๋ค.์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด
ALTER SYSTEM SET wal_level = 'logical';
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.wal_sender_timeout
์0
๋ก ์ค์ ํฉ๋๋ค.์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด
ALTER SYSTEM SET wal_sender_timeout = 0;
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์ฌ๊ธฐ์0
๋ ๋นํ์ฑ ๋ณต์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ํ ์๊ฐ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉ ์ค์งํฉ๋๋ค.max_replication_slots๋ ์์ค ์ธ์คํด์ค๊ฐ ์ง์ํ ์ ์๋ ์ต๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ์ ์ํฉ๋๋ค. ์ฐ๊ฒฐ์ด ์์๋๋ ๊ตฌ๋ ์์ ํ ์ด๋ธ ๋๊ธฐํ๋ฅผ ์ํ ์ฝ๊ฐ์ ๋น์ถ๋ถ์ ๋ํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
Database Migration Service๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ง๋ค 1๊ฐ์ ์ฌ๋กฏ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 5๊ฐ ์๊ณ ์์ค์ ๋ํ 2๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์์ฑ๋ ๊ฒฝ์ฐ ๋ณต์ ์ฌ๋กฏ ์๋ 5 * 2 = 10๊ฐ ์ด์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ณต์ ์ฌ๋กฏ ์์ ํฉํ ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด
ALTER SYSTEM SET max_replication_slots = #;
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์ฌ๊ธฐ์ #๋ ์ต๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ๋ํ๋ ๋๋ค.max_wal_senders๋
max_replication_slots
์ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ ๋ฐ์ ์ ์๋ฅผ ํฉํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.์๋ฅผ ๋ค์ด
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉดmax_replication_slots
๋งค๊ฐ๋ณ์๊ฐ10
์ผ๋ก ์ค์ ๋์ด ์๊ณ ์ด๋ฏธ ๋ฐ์ ์๋ฅผ 2๊ฐ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ๋์์ ์คํ๋๋ WAL ๋ฐ์ ์ ํ๋ก์ธ์ค ์๋ 10+2 = 12๊ฐ์ ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ, ๋ฐ์ ์ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.ALTER SYSTEM SET max_wal_senders = #;
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์ฌ๊ธฐ์ #๋ ๋์์ ์คํ๋๋ WAL ๋ฐ์ ์ ํ๋ก์ธ์ค ์๋ฅผ ๋ํ๋ ๋๋ค.- max_worker_processes๋ Database Migration Service์์ ๋ง์ด๊ทธ๋ ์ด์
ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ
max_worker_processes
์๋ฅผ ํฉํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ์์ปค ํ๋ก์ธ์ค ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ๋ ค๋ฉด
ALTER SYSTEM SET max_worker_processes = #;
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์ฌ๊ธฐ์ #๋ ์ด์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฅผ ๋ํ๋ ๋๋ค.
- ๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ์์ค ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
PostgreSQL์ฉ Microsoft Azure Database
PostgreSQL์ฉ Microsoft Azure Database ์์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ์๋ฒ์ pglogical ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
PostgreSQL ๋ฒ์ 9.4 ์์ค๋ง ํด๋น: ์์ค ์ธ์คํด์ค์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์
pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.CREATE EXTENSION IF NOT EXISTS pglogical;
CREATE EXTENSION IF NOT EXISTS pglogical_origin;
๊ธฐํ ๋ชจ๋ ๋ฒ์ ์ ๊ฒฝ์ฐ ์์ค ์ธ์คํด์ค์ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(
CREATE EXTENSION IF NOT EXISTS pglogical
)์pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.Microsoft Azure ํฌํธ์ ์ฌ์ฉํ์ฌ ์์ค์ ํ์ํ ์๋ฒ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์์ PostgreSQL์ฉ Azure Database์์ ์๋ฒ ๋งค๊ฐ๋ณ์ ๊ตฌ์ฑ ๋ฐ PostgreSQL์ฉ Azure Database์ ์๋ฒ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
pglogical
์ ํฌํจํ๋๋กshared_preload_libraries
์ ์ค์ ํฉ๋๋ค.pglogical
์ ํฌํจํ๋๋กazure.extensions
์ ์ค์ ํฉ๋๋ค.wal_level
๋ฅผlogical
๋ก ์ค์ ํฉ๋๋ค.max_replication_slots
๋ฅผ ์ต์ํ ์ฐ๊ฒฐ์ด ์์๋๋ ๊ตฌ๋ ์์ ํ ์ด๋ธ ๋๊ธฐํ๋ฅผ ์ํ ์ฝ๊ฐ์ ๋น์ถ๋ถ์ผ๋ก ์ค์ ํฉ๋๋ค.max_replication_slots
๋งค๊ฐ๋ณ์๋ ์์ค ์ธ์คํด์ค๊ฐ ์ง์ํ ์ ์๋ ์ต๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ์ ์ํฉ๋๋ค.Database Migration Service๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ง๋ค 1๊ฐ์ ์ฌ๋กฏ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 5๊ฐ ์๊ณ ์์ค์ ๋ํ 2๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์์ฑ๋ ๊ฒฝ์ฐ ๋ณต์ ์ฌ๋กฏ ์๋ 5 * 2 = 10๊ฐ ์ด์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ณต์ ์ฌ๋กฏ ์์ ํฉํ ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
max_wal_senders
๋ฅผ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ ๋ฐ์ ์ ์์max_replication_slots
์ ๋์ผํ ์๋ฅผ ๋ํ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.์๋ฅผ ๋ค์ด
max_replication_slots
๋งค๊ฐ๋ณ์๊ฐ10
์ผ๋ก ์ค์ ๋์ด ์๊ณ ์ด๋ฏธ ๋ฐ์ ์๋ฅผ 2๊ฐ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ๋์์ ์คํ๋๋ WAL ๋ฐ์ ์ ํ๋ก์ธ์ค ์๋ 10+2 = 12๊ฐ์ ๋๋ค.์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ, ๋ฐ์ ์ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
max_worker_processes
๋ฅผ Database Migration Service์์ ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํmax_worker_processes
์๋ฅผ ํฉํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํฉ๋๋ค.์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ์์ปค ํ๋ก์ธ์ค ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
require_secure_transport
์ค์ ์ ๊ฐ์ ํ์ธํฉ๋๋ค.๊ธฐ๋ณธ์ ์ผ๋ก Microsoft Azure ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ชจ๋ ์์ ์ฐ๊ฒฐ์ SSL/TLS ์ํธํ๊ฐ ํ์ํฉ๋๋ค.
require_secure_transport
๊ฐ์ ๋ฐ๋ผ ์์ค ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋ค ๋ ๋ค์ ์ํธํ ์ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.require_secure_transport
๊ฐon
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ, TLS ๋๋ mTLS๋ฅผ ์ ํํฉ๋๋ค.require_secure_transport
์ดoff
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์์์ ์ ํํฉ๋๋ค.
- ๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ์์ค ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
Amazon RDS PostgreSQL
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์
pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํฉ๋๋ค.์์ธํ ๋ด์ฉ์ Amazon RDS ๋ฌธ์์ PostgreSQL์ฉ Amazon RDS์์ PostgreSQL ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ ์ฐธ๊ณ ํ์ธ์.
๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ์์ค ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์ ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค. ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์์ ๋ค์์ ์คํํฉ๋๋ค.
shared_preload_libraries
๋งค๊ฐ๋ณ์์pglogical
๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.rds.logical_replication
๋งค๊ฐ๋ณ์๋ฅผ 1๋ก ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด '๋ ผ๋ฆฌ์ ' ์์ค์์ WAL ๋ก๊ทธ๊ฐ ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค.wal_sender_timeout
๋งค๊ฐ๋ณ์๋ฅผ 0์ผ๋ก ์ค์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋นํ์ฑ ๋ณต์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ํ ์๊ฐ ๋ฉ์ปค๋์ฆ์ด ์ค์ง๋ฉ๋๋ค.max_replication_slots ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ ์์ค ์ธ์คํด์ค๊ฐ ์ง์ํ ์ ์๋ ์ต๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ์ ์ํฉ๋๋ค. ์ฐ๊ฒฐ์ด ์์๋๋ ๊ตฌ๋ ์์ ํ ์ด๋ธ ๋๊ธฐํ๋ฅผ ์ํ ์ฝ๊ฐ์ ๋น์ถ๋ถ์ ๋ํ ๊ฐ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
Database Migration Service๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ง๋ค 1๊ฐ์ ์ฌ๋กฏ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 5๊ฐ ์๊ณ ์์ค์ ๋ํ 2๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์์ฑ๋ ๊ฒฝ์ฐ ๋ณต์ ์ฌ๋กฏ ์๋ 5 * 2 = 10๊ฐ ์ด์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ณต์ ์ฌ๋กฏ ์์ ํฉํ ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ๋๋ฆฌ๊ณ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
์ด ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
max_wal_senders ๋งค๊ฐ๋ณ์๋ฅผ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ ๋ฐ์ ์ ์์ ์ต์ํ
max_replication_slots
์ ๋์ผํ ์๋ฅผ ๋ํ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.์๋ฅผ ๋ค์ด
max_replication_slots
๋งค๊ฐ๋ณ์๊ฐ10
์ผ๋ก ์ค์ ๋์ด ์๊ณ ์ด๋ฏธ ๋ฐ์ ์๋ฅผ 2๊ฐ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ๋์์ ์คํ๋๋ WAL ๋ฐ์ ์ ํ๋ก์ธ์ค ์๋ 10+2 = 12๊ฐ์ ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ฐ์ ์ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.์ด ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
max_worker_processes ์์ค ๋งค๊ฐ๋ณ์๋ฅผ Database Migration Service์์ ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ
max_worker_processes
์๋ฅผ ํฉํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์์ปค ํ๋ก์ธ์ค ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.์ด ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ 8์ ๋๋ค.
์ธ์คํด์ค์ ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ ์ฐ๊ฒฐํฉ๋๋ค. ์ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ ์ถ๊ฐ ๊ตฌ์ฑ์์ ์ด ์ต์ ์ ์ฐพ์ ์ ์์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ธ์คํด์ค๋ฅผ ์์ ํ์ฌ ๋งค๊ฐ๋ณ์ ๊ทธ๋ฃน์ ์ฐ๊ฒฐํฉ๋๋ค.
๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ์์ค ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
PostgreSQL์ฉ Cloud SQL
๋ค์ ํ๋๊ทธ๋ฅผ ๊ตฌ์ฑํ์ฌ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ ๋ณต์ ๋ฐ ๋์ฝ๋ฉ์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
cloudsql.logical_decoding
๋ฐcloudsql.enable_pglogical
ํ๋๊ทธ๋ฅผon
๋ก ์ค์ ํฉ๋๋ค.max_replication_slots ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ์์ค ์ธ์คํด์ค๊ฐ ์ง์ํ ์ ์๋ ์ต๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ์ ์ํฉ๋๋ค. ์ฐ๊ฒฐ์ด ์์๋๋ ๊ตฌ๋ ์์ ํ ์ด๋ธ ๋๊ธฐํ๋ฅผ ์ํ ์ฝ๊ฐ์ ๋น์ถ๋ถ์ ๋ํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
Database Migration Service๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ง๋ค 1๊ฐ์ ์ฌ๋กฏ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ 5๊ฐ ์๊ณ ์์ค์ ๋ํ 2๊ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์์ฑ๋ ๊ฒฝ์ฐ ๋ณต์ ์ฌ๋กฏ ์๋ 5 * 2 = 10๊ฐ ์ด์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ณต์ ์ฌ๋กฏ ์์ ํฉํ ๊ฐ์ด์ด์ผ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ณต์ ์ฌ๋กฏ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.
์ด ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
max_wal_senders ํ๋๊ทธ๋ฅผ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ ๋ฐ์ ์ ์์ ์ต์ํ
max_replication_slots
์ ๋์ผํ ์๋ฅผ ๋ํ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.์๋ฅผ ๋ค์ด
max_replication_slots
ํ๋๊ทธ๊ฐ10
๋ก ์ค์ ๋์ด ์๊ณ ์ด๋ฏธ ๋ฐ์ ์๋ฅผ 2๊ฐ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ ๋์์ ์คํ๋๋ WAL ๋ฐ์ ์ ํ๋ก์ธ์ค ์๋ 10+2 = 12๊ฐ์ ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ, ๋ฐ์ ์ ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.์ด ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ 10์ ๋๋ค.
max_worker_processes ์์ค ํ๋๊ทธ๋ฅผ Database Migration Service๊ฐ ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ (์์ค ์ธ์คํด์ค์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ์ธ์คํด์ค์์ ์ด๋ฏธ ์ฌ์ฉํ
max_worker_processes
์๋ฅผ ํฉํ ๊ฐ ์ด์์ผ๋ก ์ค์ ํฉ๋๋ค. ์กฐ์ ๋ ๋ฐ์ดํฐ ๋คํ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ค ๋ ์์ ์ ํ๋ก์ธ์ค ์๋ฅผ ๋๋ฆฌ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ๊ตฌ์ฑ์ ํ์ธํ์ธ์.์ด ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ 8์ ๋๋ค.
wal_sender_timeout
๋งค๊ฐ๋ณ์๋ฅผ0
๋ก ์ค์ ํฉ๋๋ค.ALTER SYSTEM SET wal_sender_timeout = 0;
0
๊ฐ์ ๋นํ์ฑ ๋ณต์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ์ ํ ์๊ฐ ๋ฉ์ปค๋์ฆ์ ์ค์งํฉ๋๋ค.- ํ๋๊ทธ์ ์ ์ฉ๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋ ์ ์๋๋ก ์์ค ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
9.6 ๋ฏธ๋ง PostgreSQL ๋ฒ์ ์ ๋ณต์ ์ง์ฐ ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ์ค์
9.6 ์ด์ PostgreSQL ๋ฒ์ ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ ๋ณต์ ์ง์ฐ ์ธก์ ํญ๋ชฉ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋์ง ์์ต๋๋ค. ๋ค์ ๋์์ ์ฌ์ฉํ๋ฉด ์ด ์ธก์ ํญ๋ชฉ์ ์ถ์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์น๊ฒฉํ ๋ ๋ค์ดํ์์ ์ต์ํํ ์ ์์ต๋๋ค.
์ต์ 1: Database Migration Service๊ฐ ํน์ ์ฟผ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ฌ ๋ณต์ ์ง์ฐ์ ์ถ์ ํ๋๋ก ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
SUPERUSER
๊ถํ์ด ์๋ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.Database Migration Service์์ ๋ณต์ ์ง์ฐ์ ์ฟผ๋ฆฌํ ์ ์๋๋ก ๋ค์ ํจ์๋ฅผ ์ ์ํฉ๋๋ค.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ USER์
EXECUTE
๊ถํ์ ๋ถ์ฌํฉ๋๋ค.REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
์ต์ 2: ์์ค ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ USER์ ์ง์
SUPERUSER
๊ถํ์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Database Migration Service๊ฐ ๋ณต์ ์ง์ฐ์ ์ง์ ์ฝ์ ์ ์์ต๋๋ค.์ต์ 3: ๋ค์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ์ง์ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ถ์ ํฉ๋๋ค.
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
์ด ์ต์ ์์ Database Migration Service๋ ๊ทธ๋ํ ๋๋ API ์๋ต์ ๋ณต์ ์ง์ฐ ์ธก์ ํญ๋ชฉ์ ๋ฐ์ํ์ง ์์ต๋๋ค.