데이터베이스 서버를 롤 토토하는 방법에는 여러 가지가 있습니다. 내부적으로는 모두 감독자에게 신호를 보내는 것으로 축소됩니다.포스트그레프로세스.
사전 패키지 버전을 사용하는 경우PostgreSQL, 서버를 시작하기 위해 해당 조항을 사용했다면 서버를 중지하기 위해 해당 조항을 사용해야 합니다. 자세한 내용은 패키지 수준 문서를 참조하세요.
서버를 직접 관리할 때 서버에 다양한 신호를 보내 롤 토토 유형을 제어할 수 있습니다.포스트그레프로세스:
이것은스마트 롤 토토모드. 받은 후SIGTERM, 서버는 새로운 연결을 허용하지 않지만 기존 세션이 정상적으로 작업을 종료하도록 허용합니다. 모든 세션이 종료된 후에만 종료됩니다. 서버가 온라인 백업 모드인 경우 온라인 백업 모드가 더 이상 활성화되지 않을 때까지 추가로 기다립니다. 백업 모드가 활성화되어 있는 동안 새 연결은 여전히 허용되지만 슈퍼유저에게만 허용됩니다(이 예외는 슈퍼유저가 온라인 백업 모드를 종료하기 위해 연결하는 것을 허용합니다). 스마트 롤 토토가 요청되었을 때 서버가 복구 중인 경우 모든 일반 세션이 종료된 후에만 복구 및 스트리밍 복제가 중지됩니다.
이것은빠른 롤 토토모드. 서버는 새로운 연결을 허용하지 않고 기존의 모든 서버 프로세스를 보냅니다.SIGTERM, 이로 인해 현재 트랜잭션이 중단되고 즉시 롤 토토됩니다. 그런 다음 모든 서버 프로세스가 종료될 때까지 기다렸다가 최종적으로 종료됩니다. 서버가 온라인 백업 모드인 경우 백업 모드가 종료되어 백업이 쓸모 없게 됩니다.
이것은즉시 롤 토토모드. 서버가 전송합니다SIGQUIT모든 하위 프로세스에 적용하고 롤 토토될 때까지 기다립니다. 5초 이내에 롤 토토되지 않는 경우 전송됩니다.SIGKILL. 감독자 서버 프로세스는 일반적인 데이터베이스 종료 처리를 수행하지 않고 모든 하위 프로세스가 종료되는 즉시 롤 토토됩니다. 이렇게 하면 다음 시작 시 복구(WAL 로그 재생을 통해)됩니다. 이는 긴급 상황에만 권장됩니다.
그pg_ctl프로그램은 서버를 종료하기 위해 이러한 신호를 보내는 편리한 인터페이스를 제공합니다. 또는 다음을 사용하여 직접 신호를 보낼 수 있습니다.죽이다Windows 이외의 시스템에서.PID의포스트그레스프로세스는 다음을 사용하여 찾을 수 있습니다.ps프로그램 또는 파일에서postmaster.pid데이터 디렉토리에 있습니다. 예를 들어 빠른 롤 토토를 수행하려면:
$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
사용하지 않는 것이 가장 좋습니다SIGKILL서버를 롤 토토합니다. 그렇게 하면 서버가 공유 메모리와 세마포어를 해제하는 것을 방지할 수 있습니다. 게다가SIGKILL죽인다포스트그레스신호를 하위 프로세스에 전달하지 않고 처리하므로 개별 하위 프로세스도 직접 롤 토토해야 할 수도 있습니다.
다른 세션이 계속되도록 허용하면서 개별 세션을 종료하려면 다음을 사용하십시오.pg_terminate_backend()(참조표 9.86) 또는 다음을 보내세요.SIGTERM세션과 관련된 하위 프로세스에 신호를 보냅니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.