기본값으로, 복구 작업은 WAL 로그 마지막까지 복구한다. 다음 설정들은
이 기본 설정을 무시하고, 어느 특정 이전 시점에서 이 복구 작업을
멈추게 한다. 보통
recovery_target
,
recovery_target_lsn
, recovery_target_name
,
recovery_target_time
, recovery_target_xid
이런 설정 가운데 하나를 선택한다.
이 설정들이 중복해서 사용되었다면, 설정 파일 맨 마지막에 지정한 값을
사용한다.
recovery_target
= 'immediate'
이 매개 변수는 일관적인 상태가 되자마자 복구가 종료되도록 한다. 온라인 백업에서 복구하는 경우, 백업이 끝난 시점을 가리킨다.
실질적으로, 이는 문자열 매개 변수지만 'immediate'
가 쓸 수 있는 유일한 값이다.
recovery_target_name
(문자열
)
이 매개 변수는 특정 복구 위치를 이름으로 지정한다.
그 이름은 pg_create_restore_point()
함수에서
지정한 이름이다.
recovery_target_time
(timestamp
)
이 매개 변수는 특정 시점을 시간으로 지정한다. 또한 recovery_target_inclusive 값에 영향을 받아서 정확한 중지 위치가 결정되기도 한다.
recovery_target_xid
(문자열
)
이 매개 변수는 특정 트랜잭션 ID로 지정한다. 지정한 이 트랜잭션 ID까지 복구 작업을 한다. 트랜잭션 ID는 복구 서버의 마지막부터 차례대로 진행되기 때문에, 결과적으로 백업의 트랜잭션 ID와 복구 서버의 트랜잭션 ID가 같지 않을 수 있음을 기억 해야한다. 복구되는 트랜잭션은 지정한 트랜잭션 이전에 커밋된 모든 트랜잭션들이다. (선택적으로 지정한 트랜잭션도 포함될 수 있다.) 또한 recovery_target_inclusive 값에 영향을 받아서 정확한 중지 위치가 결정되기도 한다.
recovery_target_lsn
(pg_lsn
)
This parameter specifies the LSN of the write-ahead log location up
to which recovery will proceed. The precise stopping point is also
influenced by recovery_target_inclusive. This
parameter is parsed using the system data type
pg_lsn
.
다음 설정들은 복구 작업을 끝낼 때 어떻게 끝낼 것인지를 결정한다:
recovery_target_inclusive
(boolean
)
위에서 지정한 지점을 포함해서 복구 할 것인지,
포함하지 않고 복구 할 것인지를 결정한다.
기본값은 true
이다.
false
로 지정하면, 특정 지점(LSN, 트랜잭션 ID나, 시간) 전까지만
복구를 하고 복구 작업을 중지한다.
이 값은 recovery_target_lsn,
recovery_target_time, recovery_target_xid
설정값의 작동에 영향을 준다.
recovery_target_timeline
(문자열
)
복구할 특정 타임라인 번호를 지정한다. 기본값은 베이스 백업을
만들 때 사용한 그 타임라인 번호와 같다. 이 값으로
latest
를 지정하면, 사용할 수 있는 가장 마지막
타임라인을 찾아 그것을 사용한다. 이 설정은 대기 서버를 구축할 때
유용한다.
특정 타임라인 복구 번호를 지정하는 경우는
시점 복구 뒤에 자료가 변경 되었는데, 다시 어느 특정 타임라인으로
재복구 작업을 해야하는 복잡한 상황에서 일반적으로 사용한다.
자세한 이야기는 25.3.5절에서 설명한다.
recovery_target_action
(enum
)
복구 작업이 끝나고 난 다음 대기 서버가 할 작업을 지정한다.
기본값은 pause
이다. 이렇게 지정하면,
대기 서버는 대기한다. promote
로 지정하면,
대기 서버가 운영 서버 전환 작업을 이어 진행한다.
shutdown
으로 지정하면, 서버는 복구 작업을 마치고
중지 된다.
이 설정값으로 pause
로 설정 했다면,
복구 작업을 마지막까지 했을 때, 그 위치가 원하는
위치인지 확인 할 수 있는 쿼리를 실행할 수 있는지를 결정한다.
임시 중지 상태라면, pg_wal_replay_resume()
함수를
이용해서, 복구 작업을 이어서 다시 할 수 있다.(자세한 이야기는
표 9.81를 참조)
복구 작업을 하다가 원하는 마지막 위치에서 멈출 수 없으면,
데이터베이스는 중지된다. 이 경우에는 복구 타켓을 마지막으로
바꾸고, 서버를 재실행 해서 복구 작업을 계속 해야한다.
(이 문단은 개념 정리가 안되고 있음. :()
이 설정값을 shutdown
으로 설정하면, 원하는 복구 위치로
복구된 서버 하나를 마련하는데 유용하다. 이 서버는 WAL 레코드들을
여전히 재실행할 수 있는 상태이다. (물론 내부적으로 마지막 체크포인트
위치 다음부터의 WAL 레코드를 필요로 한다.)
이 설정값을 shutdown
으로 설정하면,
이 때 기억해야 할 부분은 서버 종료 될 때, recovery.conf
파일의 이름을 바꾸지 않는다는 점이다. 운영 서버로 사용하기 위해서는
임의로 recovery.conf
파일을 삭제해야 할 필요가 있다.
이 설정은 복구 타겟을 지정하지 않으면 적용되지 않는다.
이 설정은 hot_standby 설정값이 비활성 상태라면,
pause
설정도 shutdown
작동 방식과 같이
작동한다.