ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต - PostgreSQL ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต
octo54 2025. 3. 9. 02:20๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต
3.1 PostgreSQL ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต
PostgreSQL์ ์ด์ ํ๊ฒฝ์์ ์์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๊ณ , ์ฅ์ ๋ฐ์ ์ ์ ์ํ๊ฒ ๋ณต๊ตฌํ ์ ์๋ ์ ๋ต์ด ํ์ํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ PostgreSQL์์ ์ ๊ณตํ๋ ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ณ ,
๊ฐ ๋ฐฉ๋ฒ์ด ์ธ์ , ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ค์ต์ ํตํด ์ดํดํ๊ฒ ์ต๋๋ค.
3.1.1 PostgreSQL ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ๊ฐ์
PostgreSQL์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
โ ๋ฐฑ์ ๋ฐฉ๋ฒ ๊ฐ์
๋ฐฉ๋ฒ ์ค๋ช ๋ณต๊ตฌ ๊ฐ๋ฅ ์ฌ๋ถ
SQL Dump (pg_dump) | SQL ํ์ผ๋ก ๋ฐฑ์ ํ๋ ๋ฐฉ์ (๋ฐ์ดํฐ ์ด์์ฑ ๋์) | O |
ํ์ผ ๊ธฐ๋ฐ ๋ฐฑ์ (pg_basebackup) | ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ๋ฐฑ์ (๋ฌผ๋ฆฌ์ ๋ฐฑ์ ) | O |
Point-In-Time Recovery (PITR) | ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅํ ๋ฐฑ์ ๋ฐฉ์ | O |
๊ฐ ๋ฐฉ๋ฒ์ ์ฅ๋จ์ ๊ณผ ์ฌ์ฉ๋ฒ์ ํ๋์ฉ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
3.1.2 pg_dump๋ฅผ ์ด์ฉํ SQL Dump ๋ฐฑ์
pg_dump๋ PostgreSQL์ ๋ ผ๋ฆฌ์ ๋ฐฑ์ ๋๊ตฌ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ SQL ํ์ ๋๋ ์์ถ ํ์ผ๋ก ๋ฐฑ์ ํ ์ ์์ต๋๋ค.
๐น ๊ธฐ๋ณธ์ ์ธ pg_dump ๋ฐฑ์ ๋ช ๋ น์ด
pg_dump -U postgres -d mydb -f mydb_backup.sql
โ mydb ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ mydb_backup.sql ํ์ผ๋ก ๋ฐฑ์
๐ก ๋ฐฑ์ ๋ SQL ํ์ผ์ ๋ค๋ฅธ ์๋ฒ์์๋ ๋ณต์ํ ์ ์์ต๋๋ค.
๐น ์์ถ๋ ๋ฐฑ์ ์์ฑ (-Fc ์ต์ ์ฌ์ฉ)
pg_dump -U postgres -d mydb -Fc -f mydb_backup.dump
โ ์์ถ๋ .dump ํ์์ผ๋ก ๋ฐฑ์ ํ๋ฉด ๋ณต์ ์๋๊ฐ ๋ ๋น ๋ฆ ๋๋ค.
3.1.3 pg_restore๋ฅผ ์ด์ฉํ ๋ฐฑ์ ๋ณต๊ตฌ
SQL Dump ๋๋ ์์ถ ๋ฐฑ์ ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
๐น SQL ํ์ผ ๋ณต์ (psql ์ฌ์ฉ)
psql -U postgres -d mydb -f mydb_backup.sql
โ mydb_backup.sql ํ์ผ์ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณต๊ตฌ
๐น ์์ถ๋ ๋ฐฑ์ ๋ณต์ (pg_restore ์ฌ์ฉ)
pg_restore -U postgres -d mydb mydb_backup.dump
โ .dump ํ์ผ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ
๐ก ๋ฐฑ์ ์ ๋ณต์ํ๊ธฐ ์ ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๊ณ ์๋ก ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
dropdb -U postgres mydb
createdb -U postgres mydb
pg_restore -U postgres -d mydb mydb_backup.dump
3.1.4 pg_basebackup์ ์ด์ฉํ ๋ฌผ๋ฆฌ์ ๋ฐฑ์
ํ์ผ ๊ธฐ๋ฐ ๋ฐฑ์
(pg_basebackup)์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ๋ฐฑ์
ํ๋ ๋ฐฉ์์ผ๋ก,
๊ณ ๊ฐ์ฉ์ฑ(HA) ํ๊ฒฝ์์ ๋ณต์ ๋ฐ ์ฅ์ ๋ณต๊ตฌ์ ์ ์ฉํฉ๋๋ค.
๐น pg_basebackup์ ์ด์ฉํ ๋ฐฑ์
pg_basebackup -U postgres -D /backup/pg_data -Ft -z -P
โ
-D : ๋ฐฑ์
๋ฐ์ดํฐ ์ ์ฅ ๊ฒฝ๋ก
โ
-Ft -z : ๋ฐฑ์
์ tar ์์ถ ํ์ผ๋ก ์ ์ฅ
โ
-P : ์งํ ์ํ๋ฅผ ์ถ๋ ฅ
๐ก ์ด ๋ฐฉ๋ฒ์ ์๋ฒ ๊ฐ ๋ณต์ ๋ฐ ์ฌํด ๋ณต๊ตฌ(Disaster Recovery) ์ ์ ์ฉํฉ๋๋ค.
3.1.5 Point-In-Time Recovery (PITR) ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ
PostgreSQL์ WAL(Write-Ahead Logging) ๊ธฐ๋ฒ์ ํ์ฉํ์ฌ ํน์ ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
๐น PITR๋ฅผ ์ํ WAL ๋ฐฑ์ ํ์ฑํ
postgresql.conf์์ wal_level์ ๋ณ๊ฒฝํ์ฌ WAL ์์นด์ด๋ธ ๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํฉ๋๋ค.
wal_level = archive
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'
โ archive_command๋ฅผ ์ฌ์ฉํ์ฌ WAL ๋ก๊ทธ๋ฅผ ๋ณ๋ ์ ์ฅ์์ ๋ณด๊ด
๐น ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌํ๊ธฐ (PITR ๋ณต๊ตฌ)
1๏ธโฃ ๋ฐฑ์
๋ฐ์ดํฐ ์ค๋น (pg_basebackup ์ฌ์ฉ)
2๏ธโฃ WAL ๋ก๊ทธ ์ ์ฅ์์์ ํน์ ์์ ๋ก๊ทธ ์ ํ
3๏ธโฃ ๋ณต๊ตฌ ์ค์ ํ์ผ(recovery.conf) ์์ฑ
restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
recovery_target_time = '2025-03-07 12:00:00' -- ์ํ๋ ์์
4๏ธโฃ PostgreSQL ์ฌ์์ ํ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ ์๋ฃ
๐ก PITR๋ฅผ ํ์ฉํ๋ฉด ์ค์๋ก ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ์๋ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅํฉ๋๋ค.
3.1.6 ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต ์๋ฆฝ
์ด์ ํ๊ฒฝ์์ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๋ ค๋ฉด ์ฃผ๊ธฐ์ ์ธ ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ํ
์คํธ๊ฐ ํ์ํฉ๋๋ค.
์๋ ํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฑ์
์ ๋ต์ ์ ๋ฆฌํ ๊ฒ์
๋๋ค.
๋ฐฑ์ ๋ฐฉ์ ์ฅ์ ๋จ์ ์ฌ์ฉ ์ฌ๋ก
SQL Dump (pg_dump) | ๋ค๋ฅธ ์๋ฒ์์ ๋ณต์ ๊ฐ๋ฅ | ๋์ฉ๋ ๋ฐ์ดํฐ์์ ๋๋ฆผ | ๊ฐ๋ฐ ํ๊ฒฝ, ํ ์คํธ ์๋ฒ |
ํ์ผ ๊ธฐ๋ฐ ๋ฐฑ์ (pg_basebackup) | ๋น ๋ฅธ ๋ณต๊ตฌ ๊ฐ๋ฅ | ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ํ์ | ์ด์ ์๋ฒ, ์ฌํด ๋ณต๊ตฌ |
PITR ๋ฐฑ์ | ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅ | WAL ๋ก๊ทธ ์ ์ฅ ํ์ | ๊ธ์ต ์๋น์ค, ๋๊ท๋ชจ ์์คํ |
โ
์ด์ ํ๊ฒฝ์์๋ pg_basebackup + PITR ์กฐํฉ์ ๊ถ์ฅ
โ
๊ฐ๋ฐ ๋ฐ ํ
์คํธ ํ๊ฒฝ์์๋ pg_dump๊ฐ ์ ํฉ
3.1.7 ๊ฒฐ๋ก : PostgreSQL ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต ์ต์ ํ
โ
pg_dump๋ฅผ ์ฌ์ฉํ๋ฉด SQL ๋๋ ์์ถ๋ ํ์์ผ๋ก ๋ฐฑ์
๊ฐ๋ฅ
โ
pg_restore๋ฅผ ์ด์ฉํ์ฌ SQL ๋๋ .dump ํ์ผ์ ์์ฝ๊ฒ ๋ณต๊ตฌ ๊ฐ๋ฅ
โ
pg_basebackup์ ๋ฌผ๋ฆฌ์ ํ์ผ ๊ธฐ๋ฐ ๋ฐฑ์
์ผ๋ก ๋น ๋ฅธ ๋ณต๊ตฌ ๊ฐ๋ฅ
โ
Point-In-Time Recovery(PITR) ๋ฅผ ์ด์ฉํ๋ฉด ํน์ ์์ ์ผ๋ก ๋ฐ์ดํฐ ๋ณต๊ตฌ ๊ฐ๋ฅ
โ
์ด์ ํ๊ฒฝ์์๋ pg_basebackup + PITR ์กฐํฉ์ ๊ถ์ฅ
์ด์ PostgreSQL์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ต๋๋ค!
๋ค์ ๊ธ์์๋ PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐
๐ ๋ค์ ๊ธ ์๊ณ : PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
๐ ๋ค์ ํธ: 3.2 PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด
์ด์ PostgreSQL์ ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ์ ๋ต์ ๋ํ ๊ธ์ด ์์ฑ๋์์ต๋๋ค!
๋ค์ ๊ธ์์๋ PostgreSQL ๋ณด์ ๋ฐ ์ ๊ทผ ์ ์ด๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐๐
'study > postgresql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- ์น๊ฐ๋ฐ
- nextJS
- fastapi
- rag
- Python
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- PostgreSQL
- LangChain
- llm
- Next.js
- Page
- babel
- ๊ด๋ฆฌ์
- Project
- til
- ํ์ด์ง
- ๋ก์ปฌLLM
- ํ๋ก ํธ์๋
- nodejs
- REACT
- ๋ฐฑ์๋
- ์ฑ๋ด๊ฐ๋ฐ
- Webpack
- AI์ฑ๋ด
- Docker
- kotlin
- ๋ฆฌ์กํธ
- Ktor
- github
- ๋ฐฑ์๋๊ฐ๋ฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |