Base Back-up
์จ๋ผ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์
์ ํฌ๊ฒ ๋
ผ๋ฆฌ์ ์ธ ๋ฐฑ์
(Logacal backup)๊ณผ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐฑ์
(Physical backup)์ผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค. ๋
ผ๋ฆฌ์ ์ธ ๋ฐฑ์
์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐฑ์
์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ , ๋ณต์์๋ ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ฐ๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ๋ฐฑ์
์ ์๋์ ์ผ๋ก ์งง์ ์๊ฐ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐฑ์
๋ฐ ๋ณต์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ์์คํ
์์ ๋งค์ฐ ์ค์ํ๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์
๋๋ค.
PostgreSQL 8.0 ๋ฒ์ ๋ถํฐ ๋ฌผ๋ฆฌ์ ์ธ ์จ๋ผ์ธ ์ ์ฒด ๋ฐฑ์
(Online physical full backup)์ด ๊ฐ๋ฅํด์ก์ผ๋ฉฐ, ์คํ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ์ ์ฒด์ ์ค๋
์ท์ ๋ํ ๋ฐฑ์
์ ๋ฒ ์ด์ค ๋ฐฑ์
(Base backup)์ด๋ผ๊ณ ํฉ๋๋ค.
๋ฐฑ์ ๋ผ๋ฒจ ํ์ผ
๋ฐฑ์
๋ผ๋ฒจ ํ์ผ(backup_label)์ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ(Base directory)์ ์ต์์ ๋ ๋ฒจ์ ์์ฑ๋๋ฉฐ ์์์ ์ป์ ์ฒดํฌํฌ์ธํธ ์์น๋ฅผ ๋น๋กฏํ ๋ฒ ์ด์ค ๋ฐฑ์
์ ํ์ํ ํ์์ ์ธ ์ ๋ณด๋ค์ ๋ด๊ณ ์์ต๋๋ค.
๋ฐฑ์
๋ผ๋ฒจ ํ์ผ์ ์๋์ ์ฌ์ฏ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๊ณ , PostgreSQL 11 ๋ฒ์ ๋ถํฐ๋ ์ผ๊ณฑ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๋ฐฑ์
๋ผ๋ฒจ ํ์ผ ์ ๋ณด
๋ฐฑ์
๋ผ๋ฒจ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
postgres> cat /usr/local/pgsql/data/backup_label
START WAL LOCATION: 0/9000028 (file 000000010000000000000009)
CHECKPOINT LOCATION: 0/9000060
BACKUP METHOD: pg_start_backup
BACKUP FROM: master
START TIME: 2023-2-16 15:47:32 GMT
LABEL: Weekly Backup
Shell
๋ณต์ฌ
๋ฐฑ์ ํ์คํ ๋ฆฌ ํ์ผ
๋ฐฑ์
ํ์คํ ๋ฆฌ ํ์ผ์ ๋ค์ด๋ฐ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{WAL segment}.{offset value at the time the base backup was started}.backup
Shell
๋ณต์ฌ
Operation
1.
pg_start_backup ๋ช
๋ น์ด ์คํ
2.
์์นด์ด๋น ๋ช
๋ น์ด(ex. cp command)๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ์ ์ฒด ์ค๋
์ท์ ํ๋ณด
3.
pg_stop_backup ๋ช
๋ น์ด ์คํ
pg_start_backup
pg_start_backup์ ๋ฒ ์ด์ค ๋ฐฑ์
์ ์ค๋นํฉ๋๋ค. WAL Chapter์์ ์ค๋ช
ํ๋ฏ์ด ๋ณต๊ตฌ(Recovery) ์ ์ฐจ๋ REDO ํฌ์ธํธ๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ pg_start_backup์ ๋ช
์์ ์ผ๋ก REDO ํฌ์ธํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ฒ ์ด์ค ๋ฐฑ์
์ ์์ํ ๋ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฒ ์ด์ค ๋ฐฑ์
์ ์ํํ๋ ๋์์๋ ์ ๊ธฐ์ ์ธ ์ฒดํฌํฌ์ธํธ๊ฐ ์ฌ๋ฌ ๋ฒ ์ํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์์์ ์ป์ ์ฒดํฌํฌ์ธํธ์ ์์น๋ฅผ pg_control ์ธ์ ๋ค๋ฅธ ํ์ผ์ ์ ์ฅํด๋ฌ์ผ ํฉ๋๋ค.
pg_start_backup์ ๋ค์ ๊ณผ์ ์ ์ํํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
1.
์ ์ฒด ํ์ด์ง ์ฐ๊ธฐ ๋ชจ๋(Full-page write mode)๋ก ๊ฐ์ ์ ํ
2.
(8.4 ๋ฒ์ ๋ถํฐ) ํ์ฌ์ WAL ์ธ๊ทธ๋จผํธ ํ์ผ(Current WAL segment file)๋ก ์ค์์น(Switch)
3.
์ฒดํฌํฌ์ธํธ ์ํ
4.
backup_label ํ์ผ์ ์์ฑ
pg_stop_backup
pg_stop_backup์ ๋ค์ ๊ณผ์ ์ ์ํํ์ฌ ์ด๋ฃจ์ด์ง๋๋ค.
1.
pg_start_backup์ ์ํด ๊ฐ์ ๋ก ์ ์ฒด ํ์ด์ง ์ฐ๊ธฐ ๋ชจ๋๋ก ์ ํ๋์๋ค๋ฉด, ์ด์ ๋ชจ๋(Non-full-page writes mode)๋ก ์ ํ
2.
๋ฐฑ์
์ข
๋ฃ(Backup end)์ ๋ํ XLOG ๋ ์ฝ๋(Record)๋ฅผ ๋จ๊น
3.
WAL ์ธ๊ทธ๋จผํธ ํ์ผ(WAL segment file)์ ์ค์์น
4.
๋ฐฑ์
ํ์คํ ๋ฆฌ ํ์ผ(Backup history file)์ ์์ฑ
์ด ํ์ผ์ backup_label ํ์ผ์ ๋ด์ฉ๊ณผ pg_stop_backup์ด ์ํ๋ ํ์์คํฌํ๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
5.
backup_label ํ์ผ์ ์ญ์
์ด ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ์ ํ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋ฐฑ์
ํ์คํ ๋ฆฌ ํ์ผ๋ก ๋ณต์ฌ๋์๋ค๋ฉด ๋ฐฑ์
๋์์ธ ์๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ(Original database cluster)์์๋ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ญ์ ํฉ๋๋ค.
Point-In-Time Recovery (PITR)
๋ฒ ์ด์ค ๋ฐฑ์
๊ณผ ์ฐ์์ ์ธ ์์นด์ด๋น ๋ฐฉ์์ผ๋ก ์์ฑ๋ ์์นด์ด๋ธ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ํน์ ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ์ Point-in-time recovery๋ผ๊ณ ํฉ๋๋ค. ๋ฒ ์ด์ค ๋ฐฑ์
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก PostgreSQL 8.0 ๋ฒ์ ๋ถํฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
Outline
12:05 GMT of 23 August, 2022 ์์ ์ ์ค์๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ด์ ์ ๋ง๋ค์๋ ๋ฒ ์ด์ค ๋ฐฑ์
์ ์ด์ฉํด ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๋ณต๊ตฌํด์ผ ํฉ๋๋ค.
PITR์ ์ํํ๊ธฐ ์ํด ์ค์ ํ์ผ์ restore_command์ recovery_target_time ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. PostgreSQL 11 ๋ฒ์ ๊น์ง๋ recovery.conf ํ์ผ์ ์ค์ ํด์ผ ํ๋ฉฐ, PostgreSQL 12 ๋ฒ์ ๋ถํฐ๋ postgresql.conf ํ์ผ์ ์ค์ ์ ํ๋ฉด ๋ฉ๋๋ค
PostgreSQL์ ์ํํ ๋ ์ค์ ํ์ผ์ ์์ ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์ค์ ๋์ด ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ๋ด์ backup_label์ด ์์ผ๋ฉด, PITR ๋ชจ๋๋ฅผ ์ํํ๊ฒ ๋ฉ๋๋ค.
recovery.signal file
PostgreSQL 12 ๋ฒ์ ๋ถํฐ recovery.conf ํ์ผ ์ ๊ฑฐ๋์๊ณ , ๊ด๋ จ ํ๋ผ๋ฏธํฐ๋ค์ postgresql.conf์ ์์ฑ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฒ ์ด์ค ๋ฐฑ์
์ ์ด์ฉํด ๋ณต๊ตฌ๋ฅผ ํ๊ธฐ ์ํด ๋น ํ์ผ์ธ recovery.signal ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ๋๋ ํ ๋ฆฌ์ ์์ฑํด์ค์ผ ํฉ๋๋ค.
๋ง์ฝ recover_target_time์ด ์ค์ ๋์ด ์์ง ์๋ค๋ฉด PostgreSQL์ ์์นด์ด๋ธ ๋ก๊ทธ ํ์ผ์ ๋๊น์ง ์ฝ์ด์ ๋ฆฌํ๋ ์ด๋ฅผ ์ํํฉ๋๋ค.
PITR vs Crash Recovery
Crash Recovery์ PITR์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ๋์์ ์ํํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ์ฐจ์ด๊ฐ ์์ต๋๋ค.
โข
WAL ์ธ๊ทธ๋จผํธ ํ์ผ์ ์ฝ๋ ์์น
โฆ
Crash Recovery : ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ ์๋์ ์๋ pg_wal ์๋ธ ๋๋ ํ ๋ฆฌ
โฆ
PITR : archive_command ํ๋ผ๋ฏธํฐ์ ์ค์ ๋ ์์นด์ด๋ธ ๋๋ ํ ๋ฆฌ
โข
์ฒดํฌํฌ์ธํธ ์์น๋ฅผ ์ฝ๋ ํ์ผ
โฆ
Crash Recovery : pg_control ํ์ผ
โฆ
PITR : backup_label ํ์ผ
ํ์๋ผ์ธ
PostgreSQL์์ ํ์๋ผ์ธ์ ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ(Original database cluster)์ ๋ณต์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ(Recovered database cluster)๋ฅผ ๊ตฌ๋ถํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, PITR์ ํต์ฌ ๊ฐ๋
์
๋๋ค.
ํ์๋ผ์ธ ์์ด๋
๊ฐ ํ์๋ผ์ธ์ ํ์๋ผ์ธ ์์ด๋๋ฅผ ๋ถ์ฌ๋ฐ์ต๋๋ค. ํ์๋ผ์ธ ์์ด๋๋ 4-byte unsigned integer๋ก 1๋ถํฐ ์์ํฉ๋๋ค.
๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์๋ ๊ฐ๋ณ์ ์ธ ํ์๋ผ์ธ ์์ด๋๊ฐ ํ ๋น๋ฉ๋๋ค. ์ฒ์ initdb ์ ํธ๋ฆฌํฐ๋ฅผ ํตํด ์์ฑ๋ ์ด๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ํ์๋ผ์ธ ์์ด๋๋ 1์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๊ฐ ๋ณต๊ตฌ๋ ๋๋ง๋ค ํ์๋ผ์ธ ์์ด๋๋ 1์ฉ ์ฆ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ ์น์
์์ ๋ค๋ค๋ ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ก๋ถํฐ ๋ณต์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ํ์๋ผ์ธ ์์ด๋๋ 2์
๋๋ค.
ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ
PITR ๊ณผ์ ์ด ์๋ฃ๋๋ฉด โ00000002.historyโ๊ณผ ๊ฐ์ ์ด๋ฆ์ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ด ์์นด์ด๋ธ ๋๋ ํ ๋ฆฌ์ pg_xlog(๋๋ pg_wal) ์๋ธ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค. ์ด ํ์ผ์ ์ด๋ ํ์๋ผ์ธ์ด ์ธ์ ๋ถ๊ธฐ๋์๋์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ ์ต์ ํ ์ค ์ด์์ด ์ฐ์ฌ์ ธ ์๊ณ , ๊ฐ ์ค์ ์๋ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค.
โข
timelineId : ๋ณต๊ตฌ์ ์ฌ์ฉ๋ ์์นด์ด๋ธ ๋ก๊ทธ์์ ํ์๋ผ์ธ ์์ด๋
โข
LSN : WAL ์ธ๊ทธ๋จผํธ ํ์ผ์ ์ค์์น๊ฐ ๋ฐ์ํ LSN ์์น
โข
reason : ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ๋ก ์์ฑ๋ ํ์๋ผ์ธ์ด ๋ณ๊ฒฝ๋ ์ด์ ์ ๋ํ ์ค๋ช
ํ๋จ์ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํ ์ ์์ต๋๋ค.
postgres> cat /home/postgres/archivelogs/00000002.history
1 0/A000198 before 2022-6-21 12:05:00.861324+00
Shell
๋ณต์ฌ
โํ์๋ผ์ธ ์์ด๋๊ฐ 2์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๊ฐ ํ์๋ผ์ธ ์์ด๋ 1์ธ ๋ฒ ์ด์ค ๋ฐฑ์
์ผ๋ก๋ถํฐ ๋ณต๊ตฌ๋์๊ณ , ์์นด์ด๋ธ ๋ก๊ทธ๋ฅผ 0/A000198 ์์น๊น์ง ๋ฆฌํ๋ ์ดํจ์ผ๋กย โ2022-6-21 12:05:00.861324+00โ ์์ ์ด์ ๊น์ง ๋ณต๊ตฌ๋์๋ค.โ
Operation
1.
REDO ํฌ์ธํธ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ด๋ถ ํจ์์ธ read_backup_label์ ์ด์ฉํด backup_label ํ์ผ์ ์๋ โCHECKPOINT LOCATIONโ์ ์ฝ์
2.
PITR ๊ด๋ จ ํ๋ผ๋ฏธํฐ์ธ restore_command, recovery_target_time๋ฅผ ์ค์ ํ์ผ๋ก๋ถํฐ ์ฝ์
โข
PostgreSQL 11 ๋ฒ์ ๊น์ง : recovery.conf
โข
PostgreSQL 12 ๋ฒ์ ๋ถํฐ : postgresql.conf
3.
WAL ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํ๋ ์ด
โข
restore_command์ ์ํด ์์นด์ด๋ธ ์์ญ(Archival area)์์ ์์ ์์ญ(Temporary area)์ผ๋ก ๋ณต์ฌ๋ ์์นด์ด๋ธ ๋ก๊ทธ๋ฅผ ์ฝ์ด์ XLOG ๋ ์ฝ๋(XLOG record)๋ฅผ ๋ฆฌํ๋ ์ดํฉ๋๋ค. ์์ ์์ญ์ผ๋ก ๋ณต์ฌ๋ ๋ก๊ทธ ํ์ผ๋ค์ ์ฌ์ฉ๋ ํ์ ์ญ์ ๋ฉ๋๋ค.
โข
์ด ์ฅ์์ ๋ค๋ฃฌ ์์์์๋ ํ์์คํฌํ(timestamp) โ2022-8-24 12:05:00โ ์ด์ ์์ ๊น์ง์ WAL ๋ฐ์ดํฐ๊ฐ ๋ฆฌํ๋ ์ด ๋ฉ๋๋ค.
โข
๋ง์ฝ ์ค์ ํ์ผ(recovery.conf ๋๋ postgresql.conf)์ recovery_target_time์ด ์ค์ ๋์ด ์์ง ์์ผ๋ฉด ์์นด์ด๋ธ ๋ก๊ทธ์ ๋๊น์ง ๋ ํ๋ ์ด ๋ฉ๋๋ค.
โข
WAL ๋ฐ์ดํฐ ์ค Commit/abort ๋ ์ฝ๋์๋ ํ์์คํฌํ๊ฐ ์ ํ์๊ธฐ ๋๋ฌธ์ recovery_target_time๊น์ง์ ์ํ์ด ๊ฐ๋ฅํฉ๋๋ค.
4.
ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ(Timeline history file)์ ์์ฑ
โข
๋ณต๊ตฌ๊ฐ ๋๋๋ฉด โ00000002.historyโ๊ณผ ๊ฐ์ ์ด๋ฆ์ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ด pg_xlog ๋๋ pg_wal ์๋ธ ๋๋ ํ ๋ฆฌ ์์ฑ๋ฉ๋๋ค.
โข
๋ง์ฝ ์์นด์ด๋ธ ๋ก๊ทธ๊ฐ ํ์ฑํ ๋์ด ์๋ค๋ฉด ์์นด์ด๋ธ ๋๋ ํ ๋ฆฌ์๋ ๋์ผํ ์ด๋ฆ์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
โข
ํด๋น ํ์ผ์ด ๋ด๋ ๋ด์ฉ๊ณผ ์ญํ ์ ๋ค์ ์น์
์์ ์ค๋ช
ํฉ๋๋ค.
ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ ๋ ๋ฒ์งธ์ ๊ทธ ์ดํ์ PITR ๊ณผ์ ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๋ ๋ฒ์งธ ๋ณต๊ตฌ๋ฅผ ์๋ํ๋ ์์๋ฅผ ํตํด ํ์ธ์ ํด๋ณด๊ฒ ์ต๋๋ค.
ํ์๋ผ์ธ ์์ด๋๊ฐ 2์ธ ์ด๋ฏธ ํ ๋ฒ ๋ณต์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ์ด์ ์ค์ 12:15:00 ์์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
recovery.conf(๋๋ postgresql.conf)์ ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โข
recovery_targte_time์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ ์ผ๋ก ์ค์ ํ๋ฉฐ, recovery_target_timeline์ ํด๋น ํ์๋ผ์ธ์ ๋ฐ๋ผ ๋ณต๊ตฌํ๊ธฐ๋ฅผ ์ํ๋ ํ์๋ผ์ธ ์์ด๋๋ฅผ ์ค์ ํฉ๋๋ค.
restore_command = 'cp /mnt/server/archivedir/%f %p'
recovery_target_time = "2022-8-24 12:15:00 GMT"
recovery_target_timeline = 2
Shell
๋ณต์ฌ
PostgreSQL์ ๋ค์ ์์ํ๋ฉด PITR ๋ชจ๋๋ก ๋์
ํ๋ฉฐ ํ์๋ผ์ธ ์์ด๋ 2๋ฅผ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ๋ณต๊ตฌ๋ฅผ ์์ํฉ๋๋ค. ๊ทธ๋ฆผ 10.5๋ ์ด ์ํฉ์ ์ค๋ช
ํ๋ฉฐ ์ํ ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1.
PostgreSQL์ backup_label ํ์ผ์์ โCHECKPOINT LOCATIONโ์ ๊ฐ์ ์ฝ์
2.
PostgreSQL์ recovery.conf(๋๋ postgresql.conf) ํ์ผ์์ restore_command, recovery_target_time, recovery_target_timeline์ ๊ฐ์ ์ฝ์
3.
PostgreSQL์ recovery_target_timeline ํ๋ผ๋ฏธํฐ ๊ฐ์ ํด๋นํ๋ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ โ00000002.historyโ์ ์ฝ์
4.
PostgreSQL์ WAL ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ์ฐจ์ ๋ฐ๋ผ ๋ฆฌํ๋ ์ด ํจ
a.
REDO ํฌ์ธํธ๋ถํฐ 00000002.historyํ์ผ์ ๊ธฐ๋ก๋ LSN โ0/A000198โ๊น์ง ํ์๋ผ์ธ ์์ด๋ 1์ ํด๋นํ๋ ์์นด์ด๋ธ ๋ก๊ทธ๋ฅผ ์ฝ์ด์ WAL ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํ๋ ์ด
b.
LSN โ0/A000198โ ์ดํ๋ถํฐ ํ์์คํฌํ โ2022-8-24 12:15:00โ์์ ๊น์ง ํ์๋ผ์ธ ์์ด๋ 2์ ํด๋นํ๋ ์์นด์ด๋ธ ๋ก๊ทธ๋ฅผ ์ฝ์ด์ WAL ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํ๋ ์ด
5.
๋ณต๊ตฌ๊ฐ ์๋ฃ๋๋ฉด, ํ์๋ผ์ธ ์์ด๋๋ 3์ผ๋ก ์ฆ๊ฐํ๋ฉฐ ์๋ก์ด ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ธ 00000003.history ํ์ผ์ด pg_xlog(๋๋ pg_wal) ์๋ธ ๋๋ ํ ๋ฆฌ์ ์์นด์ด๋ธ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋จ
postgres> cat /home/postgres/archivelogs/00000003.history
1 0/A000198 before 2022-8-24 12:05:00.861324+00
2 0/B000078 before 2022-8-24 12:15:00.927133+00
Shell
๋ณต์ฌ
ํ ๋ฒ์ด๋ผ๋ PITR์ ์ํํ๋ค๋ฉด, ์ ์ ํ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์๋ผ์ธ ์์ด๋๋ฅผ ๋ช
์ํด์ค์ผ ํฉ๋๋ค. ์ด์ฒ๋ผ ํ์๋ผ์ธ ํ์คํ ๋ฆฌ ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ์ ํ์คํ ๋ฆฌ๋ฅผ ๊ธฐ๋กํ ๋ฟ ์๋๋ผ PITR ๊ณผ์ ์ ๋ํ ๋ณต๊ตฌ ์ง์นจ ๋ฌธ์์ด๊ธฐ๋ ํฉ๋๋ค.
์ง๊ธ๊น์ง PostgreSQL์ WAL 2 (Base Back-up and PITR)์ ๊ดํด ์์๋ณด์์ต๋๋ค
โPostgreSQL์ WAL 3 (Streaming Replication)โ๋ฅผ ๋ฐ๋ก ์ด์ด์ ํ์ธํด๋ณด์ธ์!