ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 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 ๋ณด์•ˆ ๋ฐ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€๐Ÿ˜Š

๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•