๋ฐํ์ ์ค์ ์ด์ ์์ ํ๋ก์ธ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ชป๋ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ์ผ๋ถ ์ค๋ฅ๋ ๋ณต๊ตฌํ ์ ์์ผ๋ฏ๋ก ์์ ํ ์ ์์ผ๋ฉฐ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์๋์ผ๋ก ์ฌ๊ฐ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ณต์ ์ค๋ฅ์ ๊ฐ์ด ๋ณต๊ตฌํ ์ ์๋ ์ค๋ฅ๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์ฒ์๋ถํฐ ๋ค์ ์์ํด์ผ ํฉ๋๋ค.
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ด์ ์์
์ํ๊ฐ Failed
๋ก ๋ณ๊ฒฝ๋๊ณ ํ์ ์ํ๋ ์คํจ ์ ์ ๋ง์ง๋ง ์ํ๋ฅผ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์คํจํ ์ด์ ์์ ์ผ๋ก ์ด๋ํ์ฌ ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ ์ค๋ฅ ๋ฉ์์ง์ ์ค๋ช ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
์ค๋ฅ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด ์ด์ ์์ ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ Cloud Monitoring์ผ๋ก ์ด๋ํ์ธ์. ๋ก๊ทธ๊ฐ ํน์ ์ด์ ์์ ์ผ๋ก ํํฐ๋ง๋ฉ๋๋ค.
๋ค์ ํ์์ ๋ฌธ์ ์ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ค๋ช | ๋ฌธ์ ์์ธ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
---|---|---|
๊ธฐ์กด ๋์ ์ธ์คํด์ค๋ก ์ด์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
The destination instance contains existing data or user defined
entities (for example databases, tables, or functions). You can only
migrate to empty instances. Clear your destination instance and retry
the migration job.
|
๋์ Cloud SQL ์ธ์คํด์ค์ ์ถ๊ฐ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋น์ด ์๋ ๊ธฐ์กด ์ธ์คํด์ค๋ก๋ง ์ด์ ํ ์ ์์ต๋๋ค. ์๋ ค์ง ์ ํ์ฌํญ์ ์ฐธ๊ณ ํ์ธ์. | ๋์ ์ธ์คํด์ค๋ฅผ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ธ์คํด์ค๋ก ์น๊ฒฉํ๊ณ , ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ํ, ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ค์ ์๋ํฉ๋๋ค. ๊ธฐ์กด ๋์ ์ธ์คํด์ค์์ ์ถ๊ฐ ๋ฐ์ดํฐ ์ญ์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. | ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค์ ๋์ ์ธ์คํด์ค ๊ฐ์ ์ฐ๊ฒฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. | ์ฐ๊ฒฐ ๋๋ฒ๊น ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ ๋๋ค. |
์์ค ๋ฐ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ด ํธํ๋์ง ์์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์คํํ ์ ์์ | ์์ค ๋ฐ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ ์กฐํฉ์ด ์ง์๋์ง ์์ต๋๋ค. ํนํ ์ ๊ณต๋ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ด ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ๊ณผ ํธํ๋์ง ์์ต๋๋ค. | ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ด ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ๊ณผ ๋์ผํ๊ฑฐ๋ ํ ๋จ๊ณ ์์์ ์ฃผ ๋ฒ์ ์ธ์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ง๋ญ๋๋ค. |
์์ค์์ ๋ฐ์ดํฐ ์ ์ ์ธ์ด (DDL) ๋๋ ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด (DML)๊ฐ ์ฐจ๋จ๋ฉ๋๋ค. | ACCESS EXCLUSIVE ์ ๊ธ์ด ํ์ํ๊ณ ์ ์ฒด ๋คํ ๋จ๊ณ ์ค์ ์คํ๋๋ DDL์ ์ฐจ๋จ๋ฉ๋๋ค. |
์ด๊ธฐ ๋๊ธฐํ ํ๋ก์ธ์ค (์ ์ฒด ๋คํ) ์ค์ ํ
์ด๋ธ์์ ์๋ฅผ ๋ค์ด ํ
์ด๋ธ์ด ์์ง ์ด๊ธฐ ๋๊ธฐํ ํ๋ก์ธ์ค์ ์๊ณ ๋์ผํ ํ
์ด๋ธ์์ |
์ค๋ฅ ๋ฉ์์ง: No pglogical extension installed on databases (X)
|
ํ๋ ์ด์์ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ pglogical ๊ฐ ์ค์น๋์ด ์์ง ์์ต๋๋ค. |
์ด ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ผ ์์ค ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ pglogical ๋ฅผ ์ค์นํฉ๋๋ค. |
PostgreSQL ๋ฒ์ 15๋ก ์ด์ ํ ๋ ํ์ ์ฐ๊ฒฐ ์ฌ์๋ ํ์๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ฉด ๋ค์ ์ฆ์ ์ค ํ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
|
์ด ๋ฌธ์ ๋ pglogical ํ์ฅ ํ๋ก๊ทธ๋จ์ ๊ต์ฐฉ ์ํ ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์์ธํ ๋ด์ฉ์
GitHub์ pglogical Issue Tracker๋ฅผ ์ฐธ๊ณ ํ์ธ์.
|
๋ง์ด๊ทธ๋ ์ด์
์์
์ ๋ค์ ์๋ํ๊ฑฐ๋ ๋จผ์ ์ค๊ฐ PostgreSQL ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์
์ค๋ฅ ๋ฉ์์ง: Cannot connect to invalid database ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
|
์ค๋ฅ ๋ฉ์์ง: Replication user 'x' doesn't have sufficient privileges.
|
Database Migration Service๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ์ง์ ๋ ์์ ์ ์คํํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์์ต๋๋ค. | ์ด ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ผ ์ฌ์ฉ์์๊ฒ ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. |
์ค๋ฅ ๋ฉ์์ง: Unable to connect to source database server.
|
Database Migration Service์์ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. | ์์ค ๋ฐ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๊ฐ ์๋ก ํต์ ํ ์ ์๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์ค์ ์ ์ ์ํ ๋ ํ์๋ ๋ชจ๋ ํ์ ๊ธฐ๋ณธ ์๊ฑด์ ์๋ฃํ๋์ง ํ์ธํฉ๋๋ค. |
์ค๋ฅ ๋ฉ์์ง: The source database 'wal_level' configuration must be equal to 'logical'.
|
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ wal_level ๊ฐ logical ๊ฐ ์๋ ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค. |
wal_level ๋ฅผ logical ๋ก ์ค์ ํฉ๋๋ค. |
์ค๋ฅ ๋ฉ์์ง: The source database 'max_replication_slots' configuration is not sufficient.
|
max_replication_slots ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์์ต๋๋ค. |
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ค๋ฉด ์ด ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด์ธ์. |
์ค๋ฅ ๋ฉ์์ง: The source database 'max_wal_senders' configuration is not sufficient.
|
max_wal_senders ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์์ต๋๋ค. |
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ค๋ฉด ์ด ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด์ธ์. |
์ค๋ฅ ๋ฉ์์ง: The source database 'max_worker_processes' configuration is not sufficient.
|
max_worker_processes ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์ง ์์์ต๋๋ค. |
์ด ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ค๋ฉด ์ด ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด์ธ์. |
์ค๋ฅ ๋ฉ์์ง: ๋๋
์ค๋ฅ ๋ฉ์์ง: |
๋ณต์ ์ ํ์ํ ์ค์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์น๊ฒฉํ๋ ๋์ ์ ๋ฆฌํ ์ ์์ต๋๋ค. | ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์คํํ ๋ช ๋ น์ด์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ์ฌ๋กฏ ์ญ์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
์ค๋ฅ ๋ฉ์์ง: |
Database Migration Service์ ์ ๊ณต๋ ์์ค CA ์ธ์ฆ์์๋ ๋ฃจํธ ์ธ์ฆ์๋ง ํฌํจ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ค ์ธ์ฆ์์๋ ๋ฃจํธ ์ธ์ฆ์์ ์ค๊ฐ ์ธ์ฆ์๊ฐ ๋ชจ๋ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Amazon Relational Database Service์ ๊ฒฝ์ฐ rds-ca-2019-root.pem ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. |
๋ฃจํธ ์ธ์ฆ์์ ๋ชจ๋ ํ์ ์ค๊ฐ ์ธ์ฆ์๊ฐ ๋ชจ๋ ํฌํจ๋ ๊ฒฐํฉ๋ ์์ค CA ์ธ์ฆ์๋ฅผ ๋ง๋ญ๋๋ค. Amazon Relational Database Service ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ rds-ca-2019-root.pem ์ธ์ฆ์ ๋์ rds-combined-ca-bundle.pem ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ธ์. |
์ค๋ฅ ๋ฉ์์ง: |
max_locks_per_transaction ๋งค๊ฐ๋ณ์์ ์ค์ ๋ ๊ฐ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค. |
์ด ๋งค๊ฐ๋ณ์์ ๊ฐ์ {max_number_of_tables_per_database }/(max_connections + max_prepared_transactions ) ์ด์์ผ๋ก ์ค์ ํฉ๋๋ค. |
์ค๋ฅ ๋ฉ์์ง: |
์์ค ์ธ์คํด์ค์ pglogical ํจํค์ง๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋์ง ์์์ต๋๋ค. | ์ด ํจํค์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์์ค ์ธ์คํด์ค์ pglogical ํจํค์ง ์ค์น๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
์ค๋ฅ ๋ฉ์์ง: |
๊ตฌ์ฑ๋ ์์ค๊ฐ ๋ณต๊ตฌ ๋ชจ๋์ ๋๋ค. | ๋ณต๊ตฌ ๋ชจ๋๊ฐ ์๋ ์์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. |
์ ์ฒด ๋คํ๊ฐ ๋๋ฆฝ๋๋ค. | Cloud SQL ๋์์์ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค. |
|
์ค๋ฅ ๋ฉ์์ง: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again |
์ ์ฒด ๋คํ ๋จ๊ณ์์ ๋ง์ด๊ทธ๋ ์ด์
์์
์ด ์คํจํ์ผ๋ฉฐ ์์
์ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๊ฐ ๋ค์ ์์๋์๊ฑฐ๋ ๋ณต๊ตฌ ๋ชจ๋์ด๊ฑฐ๋ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์ผ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
|
|
์ค๋ฅ ๋ฉ์์ง: ERROR: unknown column name {column_name} |
๊ธฐ๋ณธ ๋ ธ๋์ ๋ณต์ ๋ ํ ์ด๋ธ์๋ ์ด์ด ์ถ๊ฐ๋์์ง๋ง ๋ณต์ ๋ณธ ๋ ธ๋์๋ ์ถ๊ฐ๋์ง ์์์ต๋๋ค. |
์ฐ์ ๋ง์ด๊ทธ๋ ์ด์ ์ค์ ๋ฐ์ดํฐ ์กฐ์ ์ธ์ด (DML) ๋ณ๊ฒฝ์ฌํญ๋ง ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์์ค ๋ฐ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ณ์ ํธํ๋๋๋ก ๋ฐ์ดํฐ ์ ์ ์ธ์ด (DDL) ๋ณ๊ฒฝ์ฌํญ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ฑ ์์ด๋ฉฐ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์์ต๋๋ค.
|
์ค๋ฅ ๋ฉ์์ง: ERROR: cannot truncate a table referenced in a foreign key constraint |
์ฌ์ฉ์๊ฐ ์ธ๋ ํค ์ ์ฝ์กฐ๊ฑด์ด ์๋ ํ ์ด๋ธ์ ์๋ฅด๋ ค๊ณ ์๋ํ์ต๋๋ค. |
๋จผ์ ์ธ๋ ํค ์ ์ฝ์กฐ๊ฑด์ ์ญ์ ํ ๋ค์ ํ ์ด๋ธ์ ์๋ฆ ๋๋ค. |
์ค๋ฅ ๋ฉ์์ง: ERROR: connection to other side has died |
|
์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค์์ |
๊ฒฝ๊ณ ๋ฉ์์ง: migration job test configuration has returned the following warnings: Some table(s) have limited support. |
์์ค์ ๊ธฐ๋ณธ ํค๊ฐ ์๋ ํ ์ด๋ธ๊ณผ ๊ฐ์ด ์ ํ์ ์ผ๋ก ์ง์๋๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. |
๊ฒฝ๊ณ ๋ฉ์์ง์ ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ ์ ์์ง๋ง ์ง์๋์ง ์๋ ํญ๋ชฉ (์: ๊ธฐ๋ณธ ํค๊ฐ ์๋ ํ ์ด๋ธ)์ ๋ง์ด๊ทธ๋ ์ด์ ๋์ง ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ์ธ์. |
์ ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์์ ํ๋ ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ์คํจ ์ํ๊ฐ ํ์๋ฉ๋๋ค. | ๋ค์ํ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ค๋ฅ | ์ค๋ฅ ์ด์์ ์ค๋ฅ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ๊ณ ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค. ์ด์ ์์ ์์ ์คํจํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ ์๋ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์์ ์์ ์คํจํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ๊ด๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. |
๊ธฐ์กด ๋์ ์ธ์คํด์ค์์ ์ถ๊ฐ ๋ฐ์ดํฐ ์ญ์
๊ธฐ์กด ๋์ ์ธ์คํด์ค๋ก ์ด์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
The destination instance contains existing data or user defined
entities (for example databases, tables, or functions). You can only
migrate to empty instances. Clear your destination instance and retry
the migration job.
์ด ๋ฌธ์ ๋ ๋์ ์ธ์คํด์ค์ ์ถ๊ฐ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋น์ด ์๋ ๊ธฐ์กด ์ธ์คํด์ค๋ก๋ง ์ด์ ํ ์ ์์ต๋๋ค. ์๋ ค์ง ์ ํ์ฌํญ์ ์ฐธ๊ณ ํ์ธ์.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ค์ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ๋์ ์ธ์คํด์ค์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ค์ ์์ํฉ๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์ค์งํฉ๋๋ค.
- ์ด ์์ ์์ ๋์ Cloud SQL ์ธ์คํด์ค๋ `์ฝ๊ธฐ ์ ์ฉ` ๋ชจ๋์ ๋๋ค. ๋์ ์ธ์คํด์ค๋ฅผ ์น๊ฒฉํ์ฌ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ ์ป์ต๋๋ค.
- ๋์ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
- ๋์ ์ธ์คํด์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค. ๋์์๋ ์์คํ
๊ตฌ์ฑ ๋ฐ์ดํฐ๋ง ํฌํจํ ์ ์์ต๋๋ค. ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ (์: ํ
์ด๋ธ)๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํํ์ฌ ์์คํ
์ธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ ๋ค์ํ SQL ๋ฌธ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์คํ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฒ์ํ๋ SQL ๋ฌธ์ ์์ (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('cloudsqladmin', 'template1', 'template0', 'postgres');
postgres
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์คํ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ SQL ๋ฌธ ์์ (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)postgres
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด์ง๋ง ์์คํ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.postgres
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด ๋ฌธ์ ์คํํด์ผ ํฉ๋๋ค.psql
ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ\connect {database_name_here}
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ์ ์ฌ์ค์ ํ์ง ์๊ณ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ํํ ์ ์์ต๋๋ค.SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema != 'information_schema' AND table_schema not like 'pg\_%'; SELECT routine_schema, routine_name FROM information_schema.routines WHERE routine_schema != 'information_schema' AND routine_schema not like 'pg\_%'; SELECT extname FROM pg_extension WHERE extname != 'plpgsql';
- ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์์ํฉ๋๋ค.
๋ณต์ ์ฌ๋กฏ ์ ๋ฆฌ
๋ค์ ๋ฉ์์ง ์ค ํ๋๊ฐ ํ์๋ฉ๋๋ค.
Cleanup may have failed on source due to error: generic::unknown: failed to connect to on-premises database.
Error promoting EM replica: finished drop replication with errors.
๋ฌธ์ ์์ธ
Cloud SQL ์ธ์คํด์ค๋ฅผ ํ๋ก๋ชจ์ ํ ๋ Cloud SQL ์ธ์คํด์ค์์ ์์ค ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ (์: ์์ค ์ธ์คํด์ค๊ฐ ์คํ ์ค์ด ์๋๊ฑฐ๋ ์์ค ์ธ์คํด์ค์ ํ์ฉ ๋ชฉ๋ก์์ Cloud SQL ์ธ์คํด์ค๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ) ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ํ๋ก๋ชจ์ ํ๋ ๋์ ๋ณต์ ์ ํ์ํ ์ค์ ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค. ๋ณต์ ์ฌ๋กฏ์ ์๋์ผ๋ก ์ ๋ฆฌํด์ผ ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด superuser
๊ถํ์ด ์๋ ์ฌ์ฉ์๋ก ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
์ค๋ฅ ๋ฉ์์ง์์ ๋ณต์ ์ฌ๋กฏ ์ด๋ฆ์ ๊ฐ์ ธ์จ ๋ค์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ฌ๋กฏ์ ํ๋์ฉ ์ญ์ ํฉ๋๋ค.
select pg_drop_replication_slot({slot_name});
-
์ค๋ฅ ๋ฉ์์ง์์ ๋ณต์ ์ฌ๋กฏ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๊ธฐ์กด ๋ณต์ ์ฌ๋กฏ์ ์ฟผ๋ฆฌํฉ๋๋ค.
select pg_drop_replication_slot(slot_name) from pg_replication_slots where slot_name like '%cloudsql%' and active = 'f';
-
์์ค ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ Cloud SQL ๋ณต์ ๋ณธ์ด ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ
pglogical
์ค์ ์ ์ ๋ฆฌํฉ๋๋ค.select pglogical.drop_node(node_name) from pglogical.node where node_name like
'cloudsql';
-
pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ด ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ฑฐํฉ๋๋ค.DROP EXTENSION IF EXISTS pglogical;
์ค๋ฅ ๋ฉ์์ง:
Cannot connect to invalid database
PostgreSQL ๋ฒ์ 15๋ก ์ด์ ํ ๋ ํ์ ์ฐ๊ฒฐ ์ฌ์๋ ํ์๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ฉด ๋ค์ ์ฆ์ ์ค ํ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
-
Cannot connect to invalid database
์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. - ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋คํ๋ฅผ ์คํํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ์คํ ๋ฆฌ์ง ์ฌ์ฉ๋ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ธก์ ํญ๋ชฉ์ ์งํ๋ฅ ์ด ํ์๋์ง ์์ต๋๋ค.
๋ฌธ์ ์์ธ
์ด ๋ฌธ์ ๋ pglogical
ํ์ฅ ํ๋ก๊ทธ๋จ์ ๊ต์ฐฉ ์ํ ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์์ธํ ๋ด์ฉ์
GitHub์ pglogical
Issue Tracker๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ ๋์ ์ธ์คํด์ค๋ก ๋ง์ด๊ทธ๋ ์ด์ ์์ ๋ค์ ์คํ
๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ค์ ๋ง๋์ธ์. ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋์ ์ธ์คํด์ค๋ฅผ ์ญ์ ํฉ๋๋ค. PostgreSQL์ฉ Cloud SQL ๋ฌธ์์ ์ธ์คํด์ค ์ญ์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์คํจํ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ์ญ์ ํฉ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์์ ๊ฒํ ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ ๋ค์ ๋ง๋ญ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์์ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ค๊ฐ ๋ฒ์ ์ผ๋ก ์ด์
์ด์ PostgreSQL ๋ฒ์ (์: PostgreSQL 14)์ผ๋ก ์ด์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ด ์๋ฃ๋๋ฉด ์ํ๋ PostgreSQL 15 ์ธ์คํด์ค๋ก ์ ๊ทธ๋ ์ด๋ํด ๋ณผ ์ ์์ต๋๋ค. PostgreSQL์ฉ Cloud SQL ๋ฌธ์์์ ๋ฐ์ดํฐ๋ฅผ ์ด์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฌ์ฉ์ ๋ฐ ์ญํ ๊ด๋ฆฌ
๊ธฐ์กด ์ฌ์ฉ์ ์ด์
ํ์ฌ Database Migration Service๋ ์์ค ์ธ์คํด์ค์์ ๋์ Cloud SQL ์ธ์คํด์ค๋ก ๊ธฐ์กด ์ฌ์ฉ์๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์์ ์ ์ง์ํ์ง ์์ต๋๋ค. Cloud SQL์์ ์ฌ์ฉ์๋ฅผ ์ง์ ๋ง๋ค์ด ์ด ์ด์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
cloudsqlexternalsync
์ฌ์ฉ์ ์ ๋ณด
์ด์ ํ๋ ๋์ Cloud SQL ๋ณต์ ๋ณธ์ ๋ชจ๋ ๊ฐ์ฒด๋ cloudsqlexternalsync
์ฌ์ฉ์๊ฐ ์์ ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ด์ ๋ ํ ๋ค์ ๋จ๊ณ์ ๋ฐ๋ผ ๊ฐ์ฒด์ ์์ ๊ถ์ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์์ ํ ์ ์์ต๋๋ค.
GRANT cloudsqlexternalsync to {USER}
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.- ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์
reassign owned by cloudsqlexternalsync to {USER};
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. cloudsqlexternalsync
์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ ค๋ฉดdrop role cloudsqlexternalsync
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
์ Cloud SQL ์ธ์คํด์ค๋ก ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
๋จผ์ Database Migration Service๊ฐ Cloud Storage๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ Cloud SQL ์ธ์คํด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๊ณ ๊ทธ๋ฐ ๋ค์ Cloud Storage์์ ๋
๋ฆฝํ Cloud SQL ์ธ์คํด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉด ๋์ ์ธ์คํด์ค์ cloudsqlexternalsync
์ฌ์ฉ์๊ฐ ์์ผ๋ฏ๋ก ๊ฐ์ ธ์ค๊ธฐ์ ์คํจํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ํํ๋ ค๋ฉด ๋์ ์ธ์คํด์ค์์ cloudsqlexternalsync
์ฌ์ฉ์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ด์ ๋ ์ธ์คํด์ค์์ ์ฌ์ฉ์๋ฅผ ์ญ์ ํ์ธ์.