26.1. ÐаÑамеÑÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· аÑÑ Ð¸Ð²Ð°
restore_command(string)Ðоманда оболоÑки ÐС, коÑоÑÐ°Ñ Ð²ÑполнÑеÑÑÑ Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð½Ð¾Ð³Ð¾ ÑегменÑа Ñайлов WAL. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· аÑÑ Ð¸Ð²Ð°, но необÑзаÑелен Ð´Ð»Ñ Ð¿Ð¾Ñоковой ÑепликаÑии. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ
%fв ÑÑÑоке заменÑеÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ извлекаемого из аÑÑ Ð¸Ð²Ð° Ñайла, а%pзаменÑеÑÑÑ Ð½Ð° пÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ñи копиÑовании на ÑеÑвеÑе. (ÐÑÑÑ ÑказÑваеÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑего ÑабоÑего каÑалога, Ñ. е. оÑноÑиÑелÑно каÑалога Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ»Ð°ÑÑеÑа.) ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð½Ð° Ð¸Ð¼Ñ Ñайла, в коÑоÑом ÑодеÑжиÑÑÑ Ð¿Ð¾ÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑÐ½Ð°Ñ ÑоÑка воÑÑÑановлениÑ. ÐÑо ÑамÑй Ñанний Ñайл, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ñ ÑаниÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи воÑÑÑановлениÑ, и ÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ ÑÑеÑÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð° в ÑелÑÑ ÐµÐ³Ð¾ минимизаÑии.%rобÑÑно иÑполÑзÑеÑÑÑ Ð¿Ñи оÑганизаÑии ÑÑплого ÑезеÑва (Ñм. Раздел 25.2). ÐÐ»Ñ Ñого ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ñимвол%, пÑодÑблиÑÑйÑе его (%%).ÐбÑаÑиÑе внимание, ÑÑо команда должна возвÑаÑаÑÑ Ð½Ð¾Ð»Ñ Ð½Ð° вÑÑ Ð¾Ð´Ðµ лиÑÑ Ð² ÑлÑÑае ÑÑпеÑного вÑполнениÑ. У ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑоÑен ÑпиÑок имÑн Ñайлов, коÑоÑÑе оÑÑÑÑÑÑвÑÑÑ Ð² аÑÑ Ð¸Ð²Ðµ; в ÑÑом ÑлÑÑае она должна возвÑаÑаÑÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ. ÐÑимеÑÑ:
restore_command = 'cp /mnt/server/archivedir/%f "%p"' restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
Ð ÑлÑÑае пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñигналом (оÑлиÑнÑм Ð¾Ñ SIGTERM, коÑоÑÑй иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾ÑÑановки ÑеÑвеÑа баз даннÑÑ ) или пÑи возникновении оÑибки оболоÑки (напÑимеÑ, еÑли команда не найдена), пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑÑановлен и ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑÑиÑÑÑ.
archive_cleanup_command(string)ÐÑÐ¾Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑй паÑамеÑÑ ÑказÑÐ²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки ÐС, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑзÑваÑÑÑÑ Ð¿Ñи каждой ÑоÑке пеÑезапÑÑка. ÐазнаÑение командÑ
archive_cleanup_commandв Ñом, ÑÑÐ¾Ð±Ñ Ð¿ÑедоÑÑавиÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ оÑиÑÑки Ð¾Ñ ÑÑаÑÑÑ Ð°ÑÑ Ð¸Ð²Ð½ÑÑ Ñайлов WAL, коÑоÑÑе более не нÑÐ¶Ð½Ñ Ð½Ð° ÑезеÑвном ÑеÑвеÑе. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð½Ð° Ð¸Ð¼Ñ Ñайла, ÑодеÑжаÑего поÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑÑ ÑоÑÐºÑ Ð²Ð¾ÑÑÑановлениÑ. ÐÑо ÑамÑй Ñанний Ñайл, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ñ ÑаниÑÑ Ð´Ð»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи воÑÑÑановлениÑ, а более ÑÑаÑÑе ÑайлÑ, Ñем%r, могÑÑ Ð±ÑÑÑ Ð±ÐµÐ·Ð±Ð¾Ð»ÐµÐ·Ð½ÐµÐ½Ð½Ð¾ ÑдаленÑ. ÐÑа инÑоÑмаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована Ð´Ð»Ñ ÑÑеÑÐµÐ½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð° Ñ ÑелÑÑ ÐµÐ³Ð¾ минимизаÑии пÑи ÑÐ¾Ñ Ñанении возможноÑÑи поÑледÑÑÑего воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· заданной ÑоÑки. ÐодÑÐ»Ñ pg_archivecleanup ÑаÑÑо иÑполÑзÑеÑÑÑ Ð² каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑаarchive_cleanup_commandв конÑигÑÑаÑиÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ ÑезеÑвнÑм ÑеÑвеÑом, напÑимеÑ:archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'
СÑÐ¾Ð¸Ñ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, ÑÑо в конÑигÑÑаÑиÑÑ Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом ÑезеÑвнÑÑ ÑеÑвеÑов, иÑполÑзÑÑÑÐ¸Ñ Ð¾Ð±Ñий аÑÑ Ð¸Ð²Ð½Ñй каÑалог Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ конÑÑолиÑоваÑÑ Ñдаление Ñайлов WAL, Ñак как Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð¾Ð½Ð¸ еÑÑ Ð¼Ð¾Ð³ÑÑ ÑÑебоваÑÑÑÑ. ÐоÑÑомÑ
archive_cleanup_commandобÑÑно иÑполÑзÑеÑÑÑ Ð¿Ñи оÑганизаÑии ÑÑплого ÑезеÑва (Ñм. Раздел 25.2). ÐÐ»Ñ Ñого ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ñимвол%в команде, он пиÑеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ%%.Ð ÑлÑÑаÑÑ , когда команда возвÑаÑÐ°ÐµÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ Ð·Ð°Ð²ÐµÑÑениÑ, в жÑÑнал запиÑÑваеÑÑÑ Ð¿ÑедÑпÑеждаÑÑее ÑообÑение. ÐÑли же команда пÑеÑÑваеÑÑÑ Ñигналом или оболоÑка ÐС вÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ (напÑимеÑ, команда не найдена), вÑзÑваеÑÑÑ ÐºÑиÑиÑеÑÐºÐ°Ñ Ð¾Ñибка.
recovery_end_command(string)ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²Ñполнена ÐµÐ´Ð¸Ð½Ð¾Ð¶Ð´Ñ Ð² конÑе пÑоÑеÑÑа воÑÑÑановлениÑ. ÐазнаÑение паÑамеÑÑа
recovery_end_commandâ пÑедоÑÑавиÑÑ Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ Ð´Ð»Ñ Ð¾ÑиÑÑки поÑле ÑепликаÑии или воÑÑÑановлениÑ. ÐÑбое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ%rзаменÑеÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñайла, ÑодеÑжаÑим поÑледнÑÑ Ð´ÐµÐ¹ÑÑвиÑелÑнÑÑ ÑоÑÐºÑ Ð²Ð¾ÑÑÑановлениÑ, напÑимеÑ, как в archive_cleanup_command.ÐÑли команда веÑнÑÑ Ð½ÐµÐ½Ñлевой ÑÑаÑÑÑ Ð·Ð°Ð²ÐµÑÑениÑ, Ñо в жÑÑнал бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸Ñано пÑедÑпÑеждаÑÑее ÑообÑение, но пÑи ÑÑом запÑÑк ÑеÑвеÑа бÑÐ´ÐµÑ Ð¿Ñодолжен. Ðа иÑклÑÑением ÑлÑÑаев, когда команда пÑеÑвана Ñигналом или пÑи Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð¾Ñибки оболоÑки ÐС (напÑимеÑ, команда не найдена). Ð ÑÐ°ÐºÐ¸Ñ ÑлÑÑаÑÑ Ð±Ð°Ð·Ð° даннÑÑ Ð½Ðµ бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ.