24.3. ÐепÑеÑÑвное аÑÑ Ð¸Ð²Ð¸Ñование и воÑÑÑановление на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени (Point-in-Time Recovery, PITR)
- 24.3.1. ÐаÑÑÑойка аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ WAL
- 24.3.2. Создание базовой ÑезеÑвной копии
- 24.3.3. Создание базовой ÑезеÑвной копии ÑеÑез низкоÑÑовневÑй API
- 24.3.4. ÐоÑÑÑановление непÑеÑÑвной аÑÑ Ð¸Ð²Ð½Ð¾Ð¹ копии
- 24.3.5. Ðинии вÑемени
- 24.3.6. СовеÑÑ Ð¸ пÑимеÑÑ
- 24.3.7. ÐгÑаниÑениÑ
- 24.3.2. Создание базовой ÑезеÑвной копии
ÐÑÑ Ð²ÑÐµÐ¼Ñ Ð² пÑоÑеÑÑе ÑабоÑÑ Postgres Pro ведÑÑ Ð¶ÑÑнал пÑедзапиÑи (WAL), коÑоÑÑй ÑаÑположен в подкаÑалоге pg_wal/ каÑалога Ñ Ð´Ð°Ð½Ð½Ñми клаÑÑеÑа баз даннÑÑ
. Ð ÑÑÐ¾Ñ Ð¶ÑÑнал запиÑÑваÑÑÑÑ Ð²Ñе изменениÑ, вноÑимÑе в ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑежде вÑего, жÑÑнал ÑÑÑеÑÑвÑÐµÑ Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñного воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле кÑаÑ
а ÑеÑвеÑа: еÑли пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÐºÑаÑ
, ÑелоÑÑноÑÑÑ Ð¡Ð£ÐÐ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð¾ÑÑÑановлена в ÑезÑлÑÑаÑе «воÑпÑоизведениÑ» запиÑей, заÑикÑиÑованнÑÑ
поÑле поÑледней конÑÑолÑной ÑоÑки. Ðднако налиÑие жÑÑнала Ð´ÐµÐ»Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм иÑполÑзование ÑÑеÑÑей ÑÑÑаÑегии копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð· даннÑÑ
: можно ÑоÑеÑаÑÑ ÑезеÑвное копиÑование на ÑÑовне Ñайловой ÑиÑÑÐµÐ¼Ñ Ñ ÐºÐ¾Ð¿Ð¸Ñованием Ñайлов WAL. ÐÑли поÑÑебÑеÑÑÑ Ð²Ð¾ÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ воÑÑÑановиÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ñайлов, а заÑем воÑпÑоизвеÑÑи жÑÑнал из ÑкопиÑованнÑÑ
Ñайлов WAL, и Ñаким обÑазом пÑивеÑÑи ÑиÑÑÐµÐ¼Ñ Ð² нÑжное ÑоÑÑоÑние. Такой подÑ
од более Ñложен Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑиÑованиÑ, Ñем лÑбой из опиÑаннÑÑ
вÑÑе, но он Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑиÑелÑнÑе пÑеимÑÑеÑÑва:
РкаÑеÑÑве наÑалÑной ÑоÑки Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑно имеÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑоглаÑованнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° ÑÑовне Ñайлов. ÐнÑÑÑеннÑÑ Ð½ÐµÑоглаÑованноÑÑÑ ÐºÐ¾Ð¿Ð¸Ð¸ бÑÐ´ÐµÑ Ð¸ÑпÑавлена пÑи воÑпÑоизведении жÑÑнала (пÑакÑиÑеÑки Ñо же Ñамое пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¿Ñи воÑÑÑановлении поÑле кÑÐ°Ñ Ð°). Таким обÑазом, ÑоглаÑованнÑй Ñнимок Ñайловой ÑиÑÑÐµÐ¼Ñ Ð½Ðµ ÑÑебÑеÑÑÑ, вполне можно иÑполÑзоваÑÑ tar или Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ðµ ÑÑедÑÑва аÑÑ Ð¸Ð²Ð°Ñии.
ÐоÑколÑÐºÑ Ð¿Ñи воÑпÑоизведении можно обÑабаÑÑваÑÑ Ð½ÐµÐ¾Ð³ÑаниÑеннÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ñайлов WAL, непÑеÑÑвнÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑоÑÑо пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ Ð°ÑÑ Ð¸Ð²Ð¸ÑоваÑÑ ÑÐ°Ð¹Ð»Ñ WAL. ÐÑо оÑобенно Ñенно Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð±Ð°Ð· даннÑÑ , полнÑе ÑезеÑвнÑе копии коÑоÑÑÑ Ð´ÐµÐ»Ð°ÑÑ ÐºÐ°Ðº минимÑм неÑдобно.
ÐоÑпÑоизводиÑÑ Ð²Ñе запиÑи WAL до Ñамого конÑа Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи. ÐоÑпÑоизведение можно оÑÑановиÑÑ Ð² лÑбой ÑоÑке и полÑÑиÑÑ ÑелоÑÑнÑй Ñнимок Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени. Таким обÑазом, Ð´Ð°Ð½Ð½Ð°Ñ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð²Ð¾ÑÑÑановление на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени: можно воÑÑÑановиÑÑ ÑоÑÑоÑние Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° лÑбое вÑÐµÐ¼Ñ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑезеÑвной копии.
ÐÑли непÑеÑÑвно пеÑедаваÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ñайлов WAL дÑÑÐ³Ð¾Ð¼Ñ ÑеÑвеÑÑ, полÑÑивÑÐµÐ¼Ñ Ð´Ð°Ð½Ð½Ñе из базовой копии Ñого же клаÑÑеÑа, полÑÑаеÑÑÑ ÑиÑÑема ÑÑплого ÑезеÑва: в лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ запÑÑÑиÑÑ Ð²ÑоÑой ÑеÑÐ²ÐµÑ Ð¸ он бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¿ÑакÑиÑеÑки ÑекÑÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð· даннÑÑ .
ÐÑимеÑание
ÐÑогÑÐ°Ð¼Ð¼Ñ pg_dump и pg_dumpall не ÑоздаÑÑ ÐºÐ¾Ð¿Ð¸Ð¸ на ÑÑовне Ñайловой ÑиÑÑÐµÐ¼Ñ Ð¸ не могÑÑ Ð¿ÑименÑÑÑÑÑ ÐºÐ°Ðº ÑаÑÑÑ ÑеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ непÑеÑÑвной аÑÑ Ð¸Ð²Ð°Ñии. СоздаваемÑе ими копии ÑвлÑÑÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкими и не ÑодеÑÐ¶Ð°Ñ Ð¸Ð½ÑоÑмаÑии, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ Ð´Ð»Ñ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ WAL.
Ðак и обÑÑное ÑезеÑвное копиÑование Ñайловой ÑиÑÑемÑ, ÑÑÐ¾Ñ Ð¼ÐµÑод позволÑÐµÑ Ð²Ð¾ÑÑÑанавливаÑÑ ÑолÑко веÑÑ ÐºÐ»Ð°ÑÑÐµÑ Ð±Ð°Ð· даннÑÑ Ñеликом, но не его ÑаÑÑи. ÐÑоме Ñого, Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð¾Ð² ÑÑебÑеÑÑÑ Ð±Ð¾Ð»ÑÑое Ñ ÑанилиÑе: Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð±ÑÑмной, а нагÑÑженнÑе ÑиÑÑÐµÐ¼Ñ Ð±ÑдÑÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ мегабайÑÑ ÑÑаÑика WAL, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ аÑÑ Ð¸Ð²Ð¸ÑоваÑÑ. Тем не менее ÑÑÐ¾Ñ Ð¼ÐµÑод ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑедпоÑиÑаеÑÑÑ Ð²Ð¾ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑиÑÑаÑиÑÑ , где Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° вÑÑÐ¾ÐºÐ°Ñ Ð½Ð°Ð´ÑжноÑÑÑ.
ÐÐ»Ñ ÑÑпеÑного воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñименением непÑеÑÑвного аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ (Ñакже назÑваемого «опеÑаÑивнÑм ÑезеÑвнÑм копиÑованием» многими ÑазÑабоÑÑиками СУÐÐ), вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° непÑеÑÑÐ²Ð½Ð°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑованнÑÑ Ñайлов WAL, наÑинаÑÑаÑÑÑ Ð½Ðµ позже, Ñем Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа наÑала копиÑованиÑ. Так ÑÑо Ð´Ð»Ñ Ð½Ð°Ñала Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°ÑÑÑоиÑÑ Ð¸ пÑоÑеÑÑиÑоваÑÑ Ð¿ÑоÑедÑÑÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов WAL до Ñого, как полÑÑиÑе пеÑвÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ñ. СооÑвеÑÑÑвенно, ÑнаÑала Ð¼Ñ Ð¾Ð±ÑÑдим Ð¼ÐµÑ Ð°Ð½Ð¸ÐºÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов WAL.
24.3.1. ÐаÑÑÑойка аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ WAL
РабÑÑÑакÑном ÑмÑÑле, запÑÑÐµÐ½Ð½Ð°Ñ Ð¡Ð£ÐÐ Postgres Pro пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ Ð½ÐµÐ¾Ð³ÑаниÑенно длиннÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð·Ð°Ð¿Ð¸Ñей WAL. СУÐÐ ÑизиÑеÑки Ð´ÐµÐ»Ð¸Ñ ÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð½Ð° ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL, коÑоÑÑе обÑÑно имеÑÑ ÑÐ°Ð·Ð¼ÐµÑ 16 ÐиР(Ñ Ð¾ÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑегменÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½Ñн пÑи initdb). Ð¤Ð°Ð¹Ð»Ñ ÑегменÑов полÑÑаÑÑ ÑиÑÑовÑе имена, коÑоÑÑе оÑÑажаÑÑ Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð² абÑÑÑакÑной поÑледоваÑелÑноÑÑи WAL. Ðогда аÑÑ Ð¸Ð²Ð¸Ñование WAL не пÑименÑеÑÑÑ, ÑиÑÑема обÑÑно ÑоздаÑÑ ÑолÑко неÑколÑко Ñайлов ÑегменÑов и заÑем «пеÑеÑабаÑÑваеÑ» Ð¸Ñ , менÑÑ Ð½Ð¾Ð¼ÐµÑ Ð² имени ÑÑавÑего ненÑжнÑм Ñайла на болÑÑий. ÐÑедполагаеÑÑÑ, ÑÑо ÑÐ°Ð¹Ð»Ñ ÑегменÑов, ÑодеÑжимое коÑоÑÑÑ Ð¿ÑедÑеÑÑвÑÐµÑ Ð¿Ð¾Ñледней конÑÑолÑной ÑоÑке, Ñже не пÑедÑÑавлÑÑÑ Ð¸Ð½ÑеÑеÑа и могÑÑ Ð±ÑÑÑ Ð¿ÐµÑеÑабоÑанÑ.
ÐÑи аÑÑ
ивиÑовании даннÑÑ
WAL необÑ
одимо ÑÑиÑÑваÑÑ ÑодеÑжимое каждого Ñайла-ÑегменÑа, как ÑолÑко он заполнÑеÑÑÑ, и ÑоÑ
ÑанÑÑÑ ÑÑи даннÑе кÑда-Ñо, пÑежде Ñем Ñайл-ÑÐµÐ³Ð¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑеÑабоÑан и иÑполÑзован повÑоÑно. РзавиÑимоÑÑи Ð¾Ñ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ доÑÑÑпного аппаÑаÑного обеÑпеÑениÑ, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑазнÑе ÑпоÑÐ¾Ð±Ñ Â«ÑоÑ
ÑаниÑÑ Ð´Ð°Ð½Ð½Ñе кÑда-Ñо»: можно ÑкопиÑоваÑÑ ÑайлÑ-ÑегменÑÑ Ð² ÑмонÑиÑованнÑй по NFS каÑалог на дÑÑгÑÑ Ð¼Ð°ÑинÑ, запиÑаÑÑ Ð¸Ñ
на ленÑÑ (ÑбедивÑиÑÑ, ÑÑо Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑпоÑоб иденÑиÑиÑиÑоваÑÑ Ð¸ÑÑ
одное Ð¸Ð¼Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñайла) или ÑобÑаÑÑ Ð¸Ñ
в Ð¿Ð°ÐºÐµÑ Ð¸ запиÑаÑÑ Ð½Ð° CD, либо какие-Ñо ÑовÑем дÑÑгие ваÑианÑÑ. ЧÑÐ¾Ð±Ñ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑа баз даннÑÑ
бÑла гибкоÑÑÑ Ð² ÑÑом плане, Postgres Pro пÑÑаеÑÑÑ Ð½Ðµ делаÑÑ ÐºÐ°ÐºÐ¸Ñ
-либо пÑедположений о Ñом, как бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð°ÑÑ
иваÑиÑ. ÐмеÑÑо ÑÑого, Postgres Pro позволÑÐµÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ ÑказаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки или библиоÑÐµÐºÑ Ð°ÑÑ
ивиÑованиÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайла завеÑÑÑнного ÑегменÑа в нÑжное меÑÑо. ÐÑ Ð´ÐµÐ¹ÑÑвие Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°ÐºÐ»ÑÑаÑÑÑÑ Ð² вÑполнении пÑоÑÑÑÑ
команд оболоÑки, вклÑÑÐ°Ñ cp, или в вÑзове неÑÑивиалÑной ÑÑнкÑии на ÑзÑке C â ÑÑо ÑеÑаÑÑ Ð²Ð°Ð¼.
ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð°ÑÑ
ивиÑование WAL, ÑÑÑановиÑе в паÑамеÑÑе конÑигÑÑаÑии wal_level ÑÑÐ¾Ð²ÐµÐ½Ñ replica или вÑÑе, в archive_mode â знаÑение on и задайÑе желаемÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки в паÑамеÑÑе archive_command или библиоÑÐµÐºÑ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² паÑамеÑÑе archive_library. Ðа пÑакÑике ÑÑи паÑамеÑÑÑ Ð²Ñегда задаÑÑÑÑ Ð² Ñайле postgresql.conf.
Ð archive_command ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ %p заменÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ñм пÑÑÑм к ÑайлÑ, подлежаÑÐµÐ¼Ñ Ð°ÑÑ
иваÑии, а %f заменÑÑÑÑÑ ÑолÑко именем Ñайла. (ÐÑÑÑ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑего ÑабоÑего каÑалога, Ñ. е. каÑалога даннÑÑ
клаÑÑеÑа). ÐÑли в ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ñжно вклÑÑиÑÑ Ñам Ñимвол %, запиÑиÑе %%. ÐÑоÑÑейÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°:
archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' # Unix archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows
Ðна бÑÐ´ÐµÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑ Ð°ÑÑ
ивиÑÑемÑе ÑегменÑÑ WAL в каÑалог /mnt/server/archivedir. (Ðоманда дана как пÑимеÑ, а не как ÑекомендаÑиÑ, и Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ð½Ðµ на вÑеÑ
плаÑÑоÑмаÑ
.) ÐоÑле Ð·Ð°Ð¼ÐµÐ½Ñ Ð¿Ð°ÑамеÑÑов %p и %f ÑакÑиÑеÑки запÑÑÐºÐ°ÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ñак:
test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065
ÐÐ¾Ð´Ð¾Ð±Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° бÑÐ´ÐµÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑледÑÑÑего аÑÑ Ð¸Ð²Ð¸ÑÑемого Ñайла.
Ðоманда аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ Ñого же полÑзоваÑелÑ, Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ коÑоÑого ÑабоÑÐ°ÐµÑ ÑеÑÐ²ÐµÑ Postgres Pro. ÐоÑколÑÐºÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑÑемÑе поÑледоваÑелÑноÑÑи Ñайлов WAL ÑакÑиÑеÑки ÑодеÑÐ¶Ð°Ñ Ð²ÑÑ, ÑÑо еÑÑÑ Ð² ваÑей базе даннÑÑ , вам нÑжно бÑÐ´ÐµÑ Ð·Ð°ÑиÑиÑÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑÑемÑе даннÑе Ð¾Ñ Ð¿Ð¾ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð³Ð»Ð°Ð·; напÑимеÑ, ÑÐ¾Ñ ÑаниÑе аÑÑ Ð¸Ð² в каÑалог, ÑÑение коÑоÑого запÑеÑено Ð´Ð»Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð¸ оÑÑалÑнÑÑ Ð¿Ð¾Ð»ÑзоваÑелей.
Ðажно, ÑÑÐ¾Ð±Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¾Ð·Ð²ÑаÑала нÑлевой код завеÑÑениÑ, еÑли и ÑолÑко еÑли она завеÑÑилаÑÑ ÑÑпеÑно. ÐолÑÑив нÑлевой ÑезÑлÑÑаÑ, Postgres Pro бÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑ, ÑÑо Ñайл ÑÑпеÑно зааÑÑ Ð¸Ð²Ð¸Ñован и ÑÐ´Ð°Ð»Ð¸Ñ ÐµÐ³Ð¾ или пеÑеÑабоÑаеÑ. Ðднако ненÑлевой код ÑоÑÑоÑÐ½Ð¸Ñ ÑÐºÐ°Ð¶ÐµÑ Postgres Pro, ÑÑо Ñайл не зааÑÑ Ð¸Ð²Ð¸Ñован; попÑÑки зааÑÑ Ð¸Ð²Ð¸ÑоваÑÑ ÐµÐ³Ð¾ бÑдÑÑ Ð¿ÐµÑиодиÑеÑки повÑоÑÑÑÑÑÑ, пока ÑÑо не ÑдаÑÑÑÑ.
ÐÑÑгой ÑпоÑоб аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â иÑполÑзоваÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий модÑÐ»Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве archive_library. ÐоÑколÑÐºÑ Ñакие модÑли пиÑÑÑÑÑ Ð½Ð° ÑзÑке C, ÑоздаÑÑ ÑобÑÑвеннÑй модÑÐ»Ñ Ð³Ð¾Ñаздо Ñложнее, Ñем напиÑаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки. Ðднако модÑли аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑÑÑекÑивнее, Ñем вÑзÑваемÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки, им доÑÑÑÐ¿Ð½Ñ Ð¼Ð½Ð¾Ð³Ð¸Ðµ полезнÑе ÑеÑÑÑÑÑ ÑеÑвеÑа. ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ модÑлÑÑ
аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°Ñ
одиÑÑÑ Ð² Ðлаве 50.
Ðогда команда аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð²ÐµÑÑаеÑÑÑ Ñигналом (оÑлиÑнÑм Ð¾Ñ SIGTERM, полÑÑаемого пÑи ÑÑаÑном оÑклÑÑении ÑеÑвеÑа) или пÑи возникновении оÑибки оболоÑки (напÑимеÑ, еÑли команда не найдена) либо еÑли ÑÑнкÑÐ¸Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑÑÐ¾Ð²Ð½Ñ ERROR или FATAL, пÑоÑеÑÑ Ð°ÑÑ
иваÑоÑа пÑеÑÑваеÑÑÑ Ð¸ пеÑезапÑÑкаеÑÑÑ ÑпÑавлÑÑÑим пÑоÑеÑÑом postmaster. Ð ÑакиÑ
ÑлÑÑаÑÑ
в pg_stat_archiver не ÑообÑаеÑÑÑ Ð¾Ð± оÑибке.
ÐÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ библиоÑеки аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑно ÑазÑабаÑÑваÑÑÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑкаÑÑ Ð¿ÐµÑезапиÑи лÑбÑÑ ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð°ÑÑ Ð¸Ð²Ð½ÑÑ Ñайлов. ÐÑо Ð²Ð°Ð¶Ð½Ð°Ñ Ð¼ÐµÑа безопаÑноÑÑи, позволÑÑÑÐ°Ñ ÑÐ¾Ñ ÑаниÑÑ ÑелоÑÑноÑÑÑ Ð°ÑÑ Ð¸Ð²Ð° в ÑлÑÑае оÑибки админиÑÑÑаÑоÑа (напÑимеÑ, еÑли аÑÑ Ð¸Ð²Ð¸ÑÑемÑе даннÑе двÑÑ ÑазнÑÑ ÑеÑвеÑов бÑдÑÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² одном каÑалоге).
РекомендÑеÑÑÑ Ð¿ÑоÑеÑÑиÑоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð»Ð¸ библиоÑÐµÐºÑ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо обнаÑÑжив ÑÑÑеÑÑвÑÑÑий Ñайл, она не пеÑезапиÑÑÐ²Ð°ÐµÑ ÐµÐ³Ð¾, а возвÑаÑÐ°ÐµÑ Ð² ÑÑом ÑлÑÑае ненÑлевой код ÑоÑÑоÑÐ½Ð¸Ñ Ð¸Ð»Ð¸ false ÑооÑвеÑÑÑвенно. Рпоказанной вÑÑе команде Unix Ð´Ð»Ñ ÑÑого добавлен оÑделÑнÑй Ñаг test. Ðа некоÑоÑÑÑ
плаÑÑоÑмаÑ
Unix Ñ cp еÑÑÑ ÐºÐ»ÑÑ -i, коÑоÑÑй позволÑÐµÑ ÑделаÑÑ Ñо же, но менее Ñвно; но не пÑовеÑив, какой код ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ñи ÑÑом возвÑаÑаеÑÑÑ, полагаÑÑÑÑ Ð½Ð° ÑÑÐ¾Ñ ÐºÐ»ÑÑ Ð½Ðµ ÑледÑеÑ. (Ð ÑаÑÑноÑÑи, GNU cp возвÑаÑÐ¸Ñ Ð½Ñлевой код ÑоÑÑоÑниÑ, еÑли иÑполÑзÑеÑÑÑ ÐºÐ»ÑÑ -i и Ñелевой Ñайл ÑÑÑеÑÑвÑеÑ, а ÑÑо не Ñо, ÑÑо нÑжно.)
РазÑабаÑÑÐ²Ð°Ñ ÑÑ
ÐµÐ¼Ñ Ð°ÑÑ
ивиÑованиÑ, подÑмайÑе, ÑÑо пÑоизойдÑÑ, еÑли команда или библиоÑека аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑнÑÑ Ð¿Ð¾ÑÑоÑнно вÑдаваÑÑ Ð¾ÑибкÑ, поÑÐ¾Ð¼Ñ ÑÑо ÑÑебÑеÑÑÑ Ð²Ð¼ÐµÑаÑелÑÑÑво опеÑаÑоÑа или Ð´Ð»Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ Ñ
ваÑÐ°ÐµÑ Ð¼ÐµÑÑа. ÐапÑимеÑ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи, еÑли Ð²Ñ Ð·Ð°Ð¿Ð¸ÑÑваеÑе аÑÑ
Ð¸Ð²Ñ Ð½Ð° ленÑоÑное ÑÑÑÑойÑÑво без меÑ
анизма авÑозаменÑ; когда ленÑа заполнÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, болÑÑе ниÑего аÑÑ
ивиÑоваÑÑÑÑ Ð½Ðµ бÑдеÑ, пока Ð²Ñ Ð½Ðµ замениÑе каÑÑеÑÑ. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑбедиÑÑÑÑ, ÑÑо лÑбÑе возникаÑÑие оÑибки или обÑаÑÐµÐ½Ð¸Ñ Ðº ÑÐµÐ»Ð¾Ð²ÐµÐºÑ (опеÑаÑоÑÑ) обÑабаÑÑваÑÑÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð¿Ñоблема ÑеÑалаÑÑ Ð´Ð¾ÑÑаÑоÑно бÑÑÑÑо. Ðока она не ÑазÑеÑиÑÑÑ, каÑалог pg_wal/ пÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ Ð½Ð°Ð¿Ð¾Ð»Ð½ÑÑÑÑÑ Ñайлами-ÑегменÑами WAL. (ÐÑли ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема, в коÑоÑой наÑ
одиÑÑÑ ÐºÐ°Ñалог pg_wal/ заполниÑÑÑ Ð´Ð¾ конÑа, Postgres Pro завеÑÑÐ¸Ñ ÑÐ²Ð¾Ñ ÑабоÑÑ Ð°Ð²Ð°Ñийно. ÐаÑикÑиÑованнÑе ÑÑанзакÑии не поÑеÑÑÑÑÑÑ, но база даннÑÑ
не бÑÐ´ÐµÑ ÑабоÑаÑÑ, пока Ð²Ñ Ð½Ðµ оÑвободиÑе меÑÑо.)
Ðе важно, Ñ ÐºÐ°ÐºÐ¾Ð¹ ÑкоÑоÑÑÑÑ ÑабоÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° или библиоÑека аÑÑ
ивиÑованиÑ, еÑли ÑолÑко она не ниже ÑÑедней ÑкоÑоÑÑи, Ñ ÐºÐ¾ÑоÑой ÑеÑÐ²ÐµÑ Ð³ÐµÐ½ÐµÑиÑÑÐµÑ Ð·Ð°Ð¿Ð¸Ñи WAL. ÐбÑÑно ÑабоÑа пÑодолжаеÑÑÑ, даже еÑли пÑоÑеÑÑ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ оÑÑÑаÑÑ. ÐÑли же аÑÑ
ивиÑование оÑÑÑаÑÑ Ð·Ð½Ð°ÑиÑелÑно, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑвелиÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма даннÑÑ
, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¿Ð¾ÑеÑÑÐ½Ñ Ð² ÑлÑÑае аваÑии. ÐÑи ÑÑом каÑалог pg_wal/ бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð±Ð¾Ð»ÑÑое колиÑеÑÑво еÑÑ Ð½Ðµ зааÑÑ
ивиÑованнÑÑ
Ñайлов-ÑегменÑов, коÑоÑÑе в конÑе конÑов могÑÑ Ð·Ð°Ð½ÑÑÑ Ð²ÑÑ Ð´Ð¾ÑÑÑпное диÑковое пÑоÑÑÑанÑÑво. ÐоÑÑÐ¾Ð¼Ñ ÑекомендÑеÑÑÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ Ð¿ÑоÑеÑÑ Ð°ÑÑ
иваÑии и ÑледиÑÑ Ð·Ð° Ñем, ÑÑÐ¾Ð±Ñ Ð¾Ð½ вÑполнÑлÑÑ ÐºÐ°Ðº задÑмано.
ÐÑи напиÑании ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð»Ð¸ библиоÑеки аÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð² видÑ, ÑÑо имена Ñайлов Ð´Ð»Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð»Ð¸Ð½Ñ Ð´Ð¾ 64 Ñимволов и ÑодеÑжаÑÑ Ð»ÑбÑе комбинаÑии из ÑиÑÑ, ÑоÑек и бÑкв ASCII. СоÑ
ÑанÑÑÑ Ð¸ÑÑ
однÑй оÑноÑиÑелÑнÑй пÑÑÑ (%p) необÑзаÑелÑно, но необÑ
одимо ÑоÑ
ÑанÑÑÑ Ð¸Ð¼Ñ Ñайла (%f).
ÐбÑаÑиÑе внимание, ÑÑо Ñ
оÑÑ Ð°ÑÑ
ивиÑование WAL позволÑÐµÑ ÑоÑ
ÑаниÑÑ Ð»ÑбÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
, пÑоизведÑннÑе в базе даннÑÑ
Postgres Pro, оно не заÑÑÐ°Ð³Ð¸Ð²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, внеÑÑннÑе в конÑигÑÑаÑионнÑе ÑÐ°Ð¹Ð»Ñ (Ñакие как postgresql.conf, pg_hba.conf и pg_ident.conf), поÑколÑÐºÑ ÑÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑполнÑÑÑÑÑ Ð²ÑÑÑнÑÑ, а не ÑеÑез SQL. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÑазмеÑÑиÑÑ ÐºÐ¾Ð½ÑигÑÑаÑионнÑе ÑÐ°Ð¹Ð»Ñ Ñам, где они бÑдÑÑ Ð·Ð°Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ñ Ð¾Ð±ÑÑнÑми пÑоÑедÑÑами копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов. Ðак пеÑемеÑаÑÑ ÐºÐ¾Ð½ÑигÑÑаÑионнÑе ÑайлÑ, ÑаÑÑказÑваеÑÑÑ Ð² Разделе 18.2.
Ðоманда или ÑÑнкÑÐ¸Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÑзÑваеÑÑÑ, ÑолÑко когда ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL заполнен до конÑа. Таким обÑазом, еÑли ÑеÑÐ²ÐµÑ Ð¿Ð¾ÑÑоÑнно генеÑиÑÑÐµÑ Ð½ÐµÐ±Ð¾Ð»ÑÑой ÑÑаÑик WAL (или еÑÑÑ Ð¿ÑодолжиÑелÑнÑе пеÑиодÑ, когда ÑÑо пÑоиÑÑ
одиÑ), Ð¼ÐµÐ¶Ð´Ñ Ð·Ð°Ð²ÐµÑÑением ÑÑанзакÑий и иÑ
безопаÑнÑм ÑоÑ
Ñанением в аÑÑ
иве Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑазоваÑÑÑÑ Ð±Ð¾Ð»ÑÑÐ°Ñ Ð·Ð°Ð´ÐµÑжка. ЧÑÐ¾Ð±Ñ Ð¾Ð³ÑаниÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ неаÑÑ
ивиÑованнÑÑ
даннÑÑ
, можно ÑÑÑановиÑÑ archive_timeout, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¿ÐµÑеклÑÑалÑÑ Ð½Ð° новÑй Ñайл ÑегменÑа WAL как минимÑм Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаÑÑоÑой. ÐамеÑÑÑе, ÑÑо неполнÑе ÑайлÑ, аÑÑ
ивиÑÑемÑе доÑÑоÑно из-за пÑинÑдиÑелÑного пеÑеклÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñайм-аÑÑÑ, бÑдÑÑ Ð¸Ð¼ÐµÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑазмеÑ, ÑÑо и заполненнÑе ÑайлÑ. Таким обÑазом, ÑÑÑанавливаÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð°Ð»ÐµÐ½Ñкий archive_timeout неÑазÑмно â ÑÑо пÑиведÑÑ Ðº замÑÑоÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ð°ÑÑ
ивного Ñ
ÑанилиÑа. ÐбÑÑно подÑ
одÑÑее знаÑение archive_timeout â минÑÑа или около Ñого.
Также Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑинÑдиÑелÑно пеÑеклÑÑиÑÑ ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL вÑÑÑнÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ pg_switch_wal, еÑли Ñ
оÑиÑе, ÑÑÐ¾Ð±Ñ ÑолÑко ÑÑо завеÑÑÑÐ½Ð½Ð°Ñ ÑÑанзакÑÐ¸Ñ Ð·Ð°Ð°ÑÑ
ивиÑовалаÑÑ ÐºÐ°Ðº можно ÑкоÑее. ÐÑÑгие полезнÑе ÑÑнкÑии, оÑноÑÑÑиеÑÑ Ðº ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ WAL, пеÑеÑиÑлÑÑÑÑÑ Ð² ТаблиÑе 9.93.
Ðогда wal_level Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение minimal, некоÑоÑÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SQL вÑполнÑÑÑÑÑ Ð² обÑ
од жÑÑнала WAL, как опиÑÑваеÑÑÑ Ð² ÐодÑазделе 14.4.7. ÐÑли аÑÑ
ивиÑование или поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ Ð±Ñли вклÑÑÐµÐ½Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑакиÑ
опеÑаÑоÑов, WAL не бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð¸Ð½ÑоÑмаÑиÑ, необÑ
одимÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ. (Ðа воÑÑÑановление поÑле кÑаÑ
а ÑÑо не ÑаÑпÑоÑÑÑанÑеÑÑÑ). ÐоÑÑÐ¾Ð¼Ñ wal_level можно измениÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Ðднако Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа archive_command или archive_library доÑÑаÑоÑно пеÑезагÑÑзиÑÑ Ñайл конÑигÑÑаÑии. ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе Ð´Ð»Ñ Ð°ÑÑ
ивиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки и Ñ
оÑиÑе на вÑÐµÐ¼Ñ Ð¾ÑÑановиÑÑ Ð°ÑÑ
ивиÑование, ÑÑо можно ÑделаÑÑ, напÑимеÑ, задав в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ archive_command пÑÑÑÑÑ ÑÑÑÐ¾ÐºÑ (''). Ð ÑезÑлÑÑаÑе ÑÐ°Ð¹Ð»Ñ WAL бÑдÑÑ Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°ÑÑÑÑ Ð² каÑалоге pg_wal/, пока не бÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановлена дейÑÑвÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° archive_command.
24.3.2. Создание базовой ÑезеÑвной копии
ÐÑоÑе вÑего полÑÑиÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, иÑполÑзÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ pg_basebackup. ÐÑа пÑогÑамма ÑÐ¾Ñ ÑанÑÐµÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð² виде обÑÑнÑÑ Ñайлов или в аÑÑ Ð¸Ð²Ðµ tar. ÐÑли гибкоÑÑи pg_basebackup не Ñ Ð²Ð°ÑаеÑ, Ð²Ñ Ñакже можеÑе полÑÑиÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, иÑполÑзÑÑ Ð½Ð¸Ð·ÐºÐ¾ÑÑовневÑй API (Ñм. ÐодÑаздел 24.3.3).
ÐÑодолжиÑелÑноÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑезеÑвной копии обÑÑно не Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑого знаÑениÑ. Ðднако еÑли Ð²Ñ ÑкÑплÑаÑиÑÑеÑе ÑеÑÐ²ÐµÑ Ñ Ð¾ÑклÑÑÑннÑм Ñежимом full_page_writes, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе замеÑиÑÑ Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ пÑоизводиÑелÑноÑÑи в пÑоÑеÑÑе ÑезеÑвного копиÑованиÑ, Ñак как Ñежим full_page_writes вклÑÑаеÑÑÑ Ð¿ÑинÑдиÑелÑно на вÑÐµÐ¼Ñ ÑезеÑвного копиÑованиÑ.
ЧÑÐ¾Ð±Ñ ÑезеÑвной копией можно бÑло полÑзоваÑÑÑÑ, нÑжно ÑоÑ
ÑаниÑÑ Ð²Ñе ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL, ÑгенеÑиÑованнÑе во вÑÐµÐ¼Ñ Ð¸ поÑле копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов. ÐÐ»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ ÑÑой задаÑи, пÑоÑеÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑезеÑвной копии запиÑÑÐ²Ð°ÐµÑ Ñайл иÑÑоÑии ÑезеÑвного копиÑованиÑ, коÑоÑÑй немедленно ÑоÑ
ÑанÑеÑÑÑ Ð² облаÑÑи аÑÑ
иваÑии WAL. ÐаннÑй Ñайл полÑÑÐ°ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾ имени Ñайла пеÑвого ÑегменÑа WAL, коÑоÑÑй поÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑкопиÑованнÑÑ
Ñайлов. ÐапÑимеÑ, еÑли наÑалÑнÑй Ñайл WAL назÑвалÑÑ 0000000100001234000055CD, Ñайл иÑÑоÑии ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑÑÐ¸Ñ Ð¸Ð¼Ñ 0000000100001234000055CD.007C9330.backup. (ÐÑоÑÐ°Ñ ÑаÑÑÑ Ð¸Ð¼ÐµÐ½Ð¸ Ñайла обознаÑÐ°ÐµÑ ÑоÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð²Ð½ÑÑÑи Ñайла WAL и обÑÑно Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑоигноÑиÑована.) Ðак ÑолÑко Ð²Ñ Ð·Ð°Ð°ÑÑ
ивиÑовали копии Ñайлов даннÑÑ
и Ñайлов ÑегменÑов WAL, полÑÑеннÑÑ
в пÑоÑеÑÑе копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (по ÑведениÑм в Ñайле иÑÑоÑии ÑезеÑвного копиÑованиÑ), вÑе зааÑÑ
ивиÑованнÑе ÑегменÑÑ WAL Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, менÑÑими по номеÑÑ, ÑÑановÑÑÑÑ Ð½ÐµÐ½ÑжнÑми Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñайловой копии и могÑÑ Ð±ÑÑÑ ÑдаленÑ. Ðо вÑÑ Ð¶Ðµ ÑаÑÑмоÑÑиÑе возможноÑÑÑ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
набоÑов ÑезеÑвнÑÑ
копий, ÑÑÐ¾Ð±Ñ Ð±ÑÑÑ Ð°Ð±ÑолÑÑно ÑвеÑеннÑми, ÑÑо Ð²Ñ ÑможеÑе воÑÑÑановиÑÑ Ð²Ð°Ñи даннÑе.
Файл иÑÑоÑии ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â ÑÑо пÑоÑÑо неболÑÑой ÑекÑÑовÑй Ñайл. Рнего запиÑÑваеÑÑÑ Ð¼ÐµÑка, коÑоÑÐ°Ñ Ð±Ñла пеÑедана pg_basebackup, а Ñакже вÑÐµÐ¼Ñ Ð¸ ÑекÑÑие ÑегменÑÑ WAL в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½Ð°Ñала и завеÑÑÐµÐ½Ð¸Ñ ÑезеÑвной копии. ÐÑли Ð²Ñ ÑвÑзали Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ меÑкой ÑооÑвеÑÑÑвÑÑÑий Ñайл дампа, Ñо зааÑÑ Ð¸Ð²Ð¸Ñованного Ñайла иÑÑоÑии доÑÑаÑоÑно, ÑÑÐ¾Ð±Ñ Ð½Ð°Ð¹Ñи Ñайл дампа, нÑжнÑй Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ.
ÐоÑколÑÐºÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ Ñ ÑаниÑÑ Ð²Ñе зааÑÑ Ð¸Ð²Ð¸ÑованнÑе ÑÐ°Ð¹Ð»Ñ WAL Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа поÑледней базовой ÑезеÑвной копии, инÑеÑвал базового ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑно вÑбиÑаеÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ñого, ÑколÑко меÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñделено Ð´Ð»Ñ Ð°ÑÑ Ð¸Ð²Ð° Ñайлов WAL. Также ÑÑÐ¾Ð¸Ñ Ð¾ÑÑалкиваÑÑÑÑ Ð¾Ñ Ñого, ÑколÑко Ð²Ñ Ð³Ð¾ÑÐ¾Ð²Ñ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ Ð²Ð¾ÑÑÑановлениÑ, еÑли оно понадобиÑÑÑ â ÑиÑÑеме пÑидÑÑÑÑ Ð²Ð¾ÑпÑоизвеÑÑи вÑе ÑÑи ÑегменÑÑ WAL, а ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð»Ð³Ð¸Ð¼, еÑли Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа поÑледней базовой копии пÑоÑло много вÑемени.
24.3.3. Создание базовой ÑезеÑвной копии ÑеÑез низкоÑÑовневÑй API
ÐÑоÑедÑÑа ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑезеÑвной копии Ñ Ð¸ÑполÑзованием низкоÑÑовневого API ÑодеÑÐ¶Ð¸Ñ ÑÑÑÑ Ð±Ð¾Ð»ÑÑе Ñагов, Ñем меÑод pg_basebackup, но вÑÑ Ð¶Ðµ оÑноÑиÑелÑно пÑоÑÑа. ÐÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾, ÑÑÐ¾Ð±Ñ ÑÑи Ñаги вÑполнÑлиÑÑ Ð¿Ð¾ поÑÑдкÑ, и ÑледÑÑÑий Ñаг вÑполнÑлÑÑ, ÑолÑко еÑли пÑедÑдÑÑий ÑÑпеÑен.
ÐеÑколÑко пÑоÑеÑÑов ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð·Ð°Ð¿ÑÑÐµÐ½Ñ Ð¿Ð°ÑаллелÑно (иÑполÑзÑÑ Ð´Ð°Ð½Ð½Ñй API или pg_basebackup).
УбедиÑеÑÑ, ÑÑо аÑÑ Ð¸Ð²Ð¸Ñование WAL вклÑÑено и ÑабоÑаеÑ.
ÐодклÑÑиÑеÑÑ Ðº ÑеÑвеÑÑ (к лÑбой базе даннÑÑ ) как полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами на вÑполнение
pg_backup_start(ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑзоваÑелÑ, коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð¾ пÑавоEXECUTEÐ´Ð»Ñ ÑÑой ÑÑнкÑии) и вÑполниÑе командÑ:SELECT pg_backup_start(label => 'label', fast => false);
где
labelâ лÑÐ±Ð°Ñ Ð¼ÐµÑка, по коÑоÑой можно однознаÑно иденÑиÑиÑиÑоваÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑезеÑвного копиÑованиÑ. Соединение, ÑеÑез коÑоÑое вÑзÑваеÑÑÑpg_backup_start, должно поддеÑживаÑÑÑÑ Ð´Ð¾ оконÑÐ°Ð½Ð¸Ñ ÑезеÑвного копиÑованиÑ, инаÑе ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑеÑван.РезеÑвное копиÑование вÑегда запÑÑкаеÑÑÑ Ð² наÑале конÑÑолÑной ÑоÑки. Ðо ÑмолÑаниÑ
pg_backup_startбÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ ÑледÑÑÑей запланиÑованной конÑÑолÑной ÑоÑки, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð´Ð»Ð¸ÑелÑное вÑÐµÐ¼Ñ (Ñм. конÑигÑÑаÑионнÑе паÑамеÑÑÑ checkpoint_timeout и checkpoint_completion_target). ÐбÑÑно ÑÑо вполне пÑиемлемо, Ñак как пÑи ÑÑом минимизиÑÑеÑÑÑ Ð²Ð»Ð¸Ñние на вÑполнение дÑÑÐ³Ð¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐÑли же Ð²Ñ Ñ Ð¾ÑиÑе наÑаÑÑ ÑезеÑвное копиÑование макÑималÑно бÑÑÑÑо, пеÑедайÑе во вÑоÑом паÑамеÑÑеpg_backup_startзнаÑениеtrue. Ð ÑÑом ÑлÑÑае конÑÑолÑÐ½Ð°Ñ ÑоÑка бÑÐ´ÐµÑ Ð²Ñполнена немедленно без огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма ввода-вÑвода.СкопиÑÑйÑе ÑайлÑ, иÑполÑзÑÑ Ð»Ñбое Ñдобное ÑÑедÑÑво ÑезеÑвного копиÑованиÑ, напÑимеÑ, tar или cpio (не pg_dump или pg_dumpall). РпÑоÑеÑÑе копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑÑанавливаÑÑ ÑабоÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ, ÑÑо ниÑего не даÑÑ. Ð ÐодÑазделе 24.3.3.1 опиÑано, ÑÑо ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð² пÑоÑеÑÑе копиÑованиÑ.
ЧеÑез Ñо же подклÑÑение, ÑÑо и ÑанÑÑе, вÑполниÑе командÑ:
SELECT * FROM pg_backup_stop(wait_for_archive => true);
ÐÑи ÑÑом ÑеÑÐ²ÐµÑ Ð²ÑÐ¹Ð´ÐµÑ Ð¸Ð· Ñежима ÑезеÑвного копиÑованиÑ. ÐедÑÑий ÑеÑÐ²ÐµÑ Ð²Ð¼ÐµÑÑе Ñ ÑÑим авÑомаÑиÑеÑки пеÑеклÑÑиÑÑÑ Ð½Ð° ÑледÑÑÑий ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL. Ðа ведомом авÑомаÑиÑеÑкое пеÑеклÑÑение ÑегменÑов WAL невозможно, поÑÑÐ¾Ð¼Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑполниÑÑ
pg_switch_walна ведÑÑем, ÑÑÐ¾Ð±Ñ Ð¿ÑоизвеÑÑи пеÑеклÑÑение вÑÑÑнÑÑ. Такое пеÑеклÑÑение позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð³Ð¾ÑовÑй к аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñледний ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL, запиÑаннÑй в пÑоÑеÑÑе ÑезеÑвного копиÑованиÑ.ФÑнкÑиÑ
pg_backup_stopвозвÑаÑÐ¸Ñ Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ Ñ ÑÑÐµÐ¼Ñ Ð·Ð½Ð°ÑениÑми. ÐÑоÑое из Ð½Ð¸Ñ Ð½Ñжно запиÑаÑÑ Ð² Ñайлbackup_labelв коÑневой каÑалог ÑезеÑвной копии. ТÑеÑÑе знаÑение, еÑли оно не пÑÑÑое, должно бÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в Ñайлtablespace_map. ÐÑи ÑÐ°Ð¹Ð»Ñ ÐºÑайне Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ и Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð±Ð°Ð¹Ñ Ð·Ð° байÑом без изменений, Ð´Ð»Ñ Ñего Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾ÑкÑÑÑÑ Ñайл в двоиÑном ÑедакÑоÑе.Ðак ÑолÑко ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL, акÑивнÑе во вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑезеÑвной копии, бÑдÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑованÑ, пÑоÑедÑÑа ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð²ÐµÑÑена. ФÑнкÑиÑ
pg_backup_stopв пеÑвом знаÑении ÑезÑлÑÑаÑа ÑказÑваеÑ, какой поÑледний ÑÐµÐ³Ð¼ÐµÐ½Ñ ÑÑебÑеÑÑÑ Ð´Ð»Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ набоÑа Ñайлов ÑезеÑвной копии. Ðа ведÑÑем ÑеÑвеÑе, еÑли вклÑÑÑн Ñежим аÑÑ Ð¸Ð²Ð°Ñии (паÑамеÑÑarchive_mode) и аÑгÑменÑwait_for_archiveÑавенtrue, ÑÑнкÑиÑpg_backup_stopне завеÑÑиÑÑÑ, пока не бÑÐ´ÐµÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸Ñован поÑледний ÑегменÑ. Ðа ведомом паÑамеÑÑarchive_modeдолжен имеÑÑ Ð·Ð½Ð°Ñениеalways, ÑÑÐ¾Ð±Ñ ÑÑнкÑиÑpg_backup_stopожидала аÑÑ Ð¸Ð²Ð°Ñии. ÐÑи ÑÐ°Ð¹Ð»Ñ Ð±ÑдÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ñ Ð°Ð²ÑомаÑиÑеÑки, Ñак как Ð²Ñ Ñанее задали знаÑениеarchive_libraryилиarchive_command. ЧаÑе вÑего ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð±ÑÑÑÑо, но Ð¼Ñ ÑовеÑÑем наблÑдаÑÑ Ð·Ð° ÑиÑÑемой аÑÑ Ð¸Ð²Ð°Ñии и пÑовеÑÑÑÑ, не возникаÑÑ Ð»Ð¸ задеÑжки. ÐÑли аÑÑ Ð¸Ð²Ð¸Ñование оÑÑановиÑÑÑ Ð¸Ð·-за оÑибок ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð»Ð¸ библиоÑеки аÑÑ Ð¸Ð²Ð°Ñии, попÑÑки аÑÑ Ð¸Ð²Ð°Ñии бÑдÑÑ Ð¿ÑодолжаÑÑÑÑ Ð´Ð¾ ÑÑпеÑного завеÑÑениÑ, и ÑолÑко Ñогда ÑезеÑвное копиÑование оконÑиÑÑÑ. ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе огÑаниÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð²ÑполнениÑpg_backup_stop, ÑÑÑановиÑе ÑооÑвеÑÑÑвÑÑÑее знаÑение вstatement_timeout, но замеÑÑÑе, ÑÑо в ÑлÑÑае пÑеÑÑваниÑpg_backup_stopпо вÑемени ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ³Ð¾Ð´Ð½Ð¾Ð¹.ÐÑли в пÑоÑедÑÑе ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑедÑÑмоÑÑено оÑÑлеживание и аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ Ð²ÑÐµÑ Ñайлов ÑегменÑов WAL, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ ÑезеÑвной копии, Ñо в аÑгÑменÑе
wait_for_archive(по ÑмолÑÐ°Ð½Ð¸Ñ Ñавном true) можно пеÑедаÑÑ false, ÑÑÐ¾Ð±Ñ ÑÑнкÑиÑpg_backup_stopзавеÑÑилаÑÑ ÑÑазÑ, как ÑолÑко в WAL бÑÐ´ÐµÑ Ð¿Ð¾Ð¼ÐµÑена запиÑÑ Ð¾ завеÑÑении копиÑованиÑ. Ðо ÑмолÑаниÑpg_backup_stopбÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии вÑÐµÑ Ñайлов WAL, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑемÑ. ÐÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ: еÑли аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL не конÑÑолиÑÑеÑÑÑ, в ÑезеÑвной копии могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½Ðµ вÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе ÑÐ°Ð¹Ð»Ñ WAL и ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ.
24.3.3.1. ÐопиÑование каÑалога даннÑÑ
ÐекоÑоÑÑе ÑÑедÑÑва ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов вÑдаÑÑ Ð¿ÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ оÑибки, еÑли ÑайлÑ, коÑоÑÑе они пÑÑаÑÑÑÑ ÑкопиÑоваÑÑ, изменÑÑÑÑÑ Ð² пÑоÑеÑÑе копиÑованиÑ. ÐÑи полÑÑении базовой ÑезеÑвной копии акÑивной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑÑо вполне ноÑмалÑно и не ÑвлÑеÑÑÑ Ð¾Ñибкой. Ðднако вам нÑжно знаÑÑ, как оÑлиÑиÑÑ Ð¾Ñибки Ñакого Ñода Ð¾Ñ ÑеалÑнÑÑ
оÑибок. ÐапÑимеÑ, некоÑоÑÑе веÑÑии rsync возвÑаÑаÑÑ Ð¾ÑделÑнÑй код завеÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑиÑÑаÑии «иÑÑезнÑвÑие иÑÑ
однÑе ÑайлÑ», и Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе напиÑаÑÑ ÑпÑавлÑÑÑий ÑкÑипÑ, коÑоÑÑй пÑÐ¸Ð¼ÐµÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ как не оÑибоÑнÑй. Также некоÑоÑÑе веÑÑии GNU tar возвÑаÑаÑÑ ÐºÐ¾Ð´ завеÑÑениÑ, неоÑлиÑимÑй Ð¾Ñ ÐºÐ¾Ð´Ð° кÑиÑиÑеÑкой оÑибки, еÑли Ñайл бÑл ÑÑеÑÑн, когда tar копиÑовал его. Ð ÑÑаÑÑÑÑ, GNU tar веÑÑий 1.16 и более поздниÑ
завеÑÑаеÑÑÑ Ñ ÐºÐ¾Ð´Ð¾Ð¼ 1, еÑли Ñайл бÑл изменÑн во вÑÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸ÑованиÑ, и 2 в ÑлÑÑае дÑÑгиÑ
оÑибок. С GNU tar веÑÑии 1.23 и более поздними, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑледÑÑÑие клÑÑи --warning=no-file-changed --warning=no-file-removed, ÑÑÐ¾Ð±Ñ ÑкÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие пÑедÑпÑеждениÑ.
УбедиÑеÑÑ, ÑÑо ваÑа ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð²Ñе ÑÐ°Ð¹Ð»Ñ Ð¸Ð· каÑалога клаÑÑеÑа баз даннÑÑ
(напÑимеÑ, /usr/local/pgsql/data). ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва, коÑоÑÑе наÑ
одÑÑÑÑ Ð½Ðµ внÑÑÑи ÑÑого каÑалога, не забÑдÑÑе вклÑÑиÑÑ Ð¸ иÑ
в ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ (Ñакже важно, ÑÑÐ¾Ð±Ñ Ð¿Ñи Ñоздании ÑезеÑвной копии ÑимволÑнÑе ÑÑÑлки ÑоÑ
ÑанÑлиÑÑ ÐºÐ°Ðº ÑÑÑлки, инаÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва бÑдÑÑ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ñ Ð¿Ñи воÑÑÑановлении).
Ðднако ÑледÑÐµÑ Ð¸ÑклÑÑиÑÑ Ð¸Ð· ÑезеÑвной копии ÑÐ°Ð¹Ð»Ñ Ð² подкаÑалоге даннÑÑ
клаÑÑеÑа pg_wal/. ÐÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑÑÑ ÐºÐ¾ÑÑекÑиÑÐ¾Ð²ÐºÑ ÑÑÐ¾Ð¸Ñ Ð²Ð½ÐµÑÑи Ð´Ð»Ñ ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ ÑиÑка оÑибок пÑи воÑÑÑановлении. ÐÑо легко оÑганизоваÑÑ, еÑли pg_wal/ â ÑимволиÑеÑÐºÐ°Ñ ÑÑÑлка на каÑалог за пÑеделами каÑалога даннÑÑ
(Ñак ÑаÑÑо делаÑÑ Ð¸Ð· ÑообÑажений пÑоизводиÑелÑноÑÑи). Также Ð¸Ð¼ÐµÐµÑ ÑмÑÑл иÑклÑÑиÑÑ ÑÐ°Ð¹Ð»Ñ postmaster.pid и postmaster.opts, ÑодеÑжаÑие инÑоÑмаÑÐ¸Ñ Ð¾ ÑабоÑаÑÑем пÑоÑеÑÑе postmaster (а не о Ñом пÑоÑеÑÑе postmaster, коÑоÑÑй бÑÐ´ÐµÑ Ð²Ð¾ÑÑÑанавливаÑÑ ÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ). (ÐÑи ÑÐ°Ð¹Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð²Ð²ÐµÑÑи pg_ctl в заблÑждение.)
ЧаÑÑо Ñакже ÑÑÐ¾Ð¸Ñ Ð¸ÑклÑÑаÑÑ Ð¸Ð· ÑезеÑвной копии каÑалог pg_replslot/ клаÑÑеÑа, ÑÑÐ¾Ð±Ñ ÑлоÑÑ ÑепликаÑии, ÑÑÑеÑÑвÑÑÑие на главном ÑеÑвеÑе, не попадали в копиÑ. РпÑоÑивном ÑлÑÑае пÑи поÑледÑÑÑем воÑÑÑановлении копии на ÑезеÑвном ÑеÑвеÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑÑÑ Ñак, ÑÑо он бÑÐ´ÐµÑ Ð½ÐµÐ¾Ð³ÑаниÑенно долго ÑоÑ
ÑанÑÑÑ ÑÐ°Ð¹Ð»Ñ WAL, а главнÑй не бÑÐ´ÐµÑ Ð¾ÑиÑаÑÑÑÑ, еÑли он ÑÐ»ÐµÐ´Ð¸Ñ Ð·Ð° гоÑÑÑим ÑезеÑвом, Ñак как клиенÑÑ ÑÑиÑ
ÑлоÑов ÑепликаÑии бÑдÑÑ Ð¿ÑодолжаÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ð¸ изменÑÑÑ ÑоÑÑоÑние ÑлоÑов на главном, а не ÑезеÑвном ÑеÑвеÑе. Ðаже еÑли ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¿ÑедназнаÑена ÑолÑко Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ главного ÑеÑвеÑа, копиÑование ÑлоÑов ÑепликаÑии вÑÑд ли пÑинеÑÑÑ Ð¿Ð¾Ð»ÑзÑ, Ñак как к моменÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð² ÑабоÑÑ ÑÑого нового ÑеÑвеÑа ÑодеÑжимое ÑÑиÑ
ÑлоÑов ÑÑÐ°Ð½ÐµÑ Ð°Ð±ÑолÑÑно неакÑÑалÑнÑм.
СодеÑжимое каÑалогов pg_dynshmem/, pg_notify/, pg_serial/, pg_snapshots/, pg_stat_tmp/ и pg_subtrans/ (но не Ñами ÑÑи каÑалоги) можно иÑклÑÑиÑÑ Ð¸Ð· ÑезеÑвной копии, Ñак как оно бÑÐ´ÐµÑ Ð¸Ð½Ð¸ÑиализиÑовано пÑи запÑÑке главного пÑоÑеÑÑа.
Ðз ÑезеÑвной копии можно иÑклÑÑиÑÑ Ð¸ ÑÐ°Ð¹Ð»Ñ Ð¸ подкаÑалоги Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимÑÑ Ñ pgsql_tmp. ÐÑи ÑÐ°Ð¹Ð»Ñ ÑдалÑÑÑÑÑ Ð¿Ñи запÑÑке главного пÑоÑеÑÑа, а каÑалоги ÑоздаÑÑÑÑ Ð¿Ð¾ меÑе необÑ
одимоÑÑи.
Ðз ÑезеÑвной копии могÑÑ Ð±ÑÑÑ Ð¸ÑклÑÑÐµÐ½Ñ ÑÐ°Ð¹Ð»Ñ pg_internal.init. Такие ÑÐ°Ð¹Ð»Ñ ÑодеÑÐ¶Ð°Ñ ÐºÐµÑиÑÑемÑе даннÑе оÑноÑÐµÐ½Ð¸Ñ Ð¸ вÑегда пеÑеÑÑÑаиваÑÑÑÑ Ð¿Ñи воÑÑÑановлении.
Ð Ñайл меÑки ÑезеÑвной копии запиÑÑваеÑÑÑ ÑÑÑока меÑки, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ñи вÑзове pg_backup_start, вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑÑка ÑÑнкÑии pg_backup_start и Ð¸Ð¼Ñ Ð½Ð°ÑалÑного Ñайла WAL. Таким обÑазом, в ÑлÑÑае Ñомнений можно заглÑнÑÑÑ Ð²Ð½ÑÑÑÑ Ð°ÑÑ
ива ÑезеÑвной копии и ÑоÑно опÑеделиÑÑ, в каком ÑеанÑе ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð½ бÑл Ñоздан. Файл каÑÑÑ ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° ÑимволиÑеÑкиÑ
ÑÑÑлок, как они ÑÑÑеÑÑвÑÑÑ Ð² каÑалоге pg_tblspc/, и полнÑй пÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑимволиÑеÑкой ÑÑÑлки. ÐÑи ÑÐ°Ð¹Ð»Ñ Ð½Ðµ ÑолÑко к ваÑÐµÐ¼Ñ ÑведениÑ; иÑ
ÑÑÑеÑÑвование и ÑодеÑжание Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ Ð¿ÑавилÑного пÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿ÑоÑеÑÑа воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑиÑÑемÑ.
ÐÑ Ñакже можеÑе ÑоздаÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, когда ÑеÑÐ²ÐµÑ Ð¾ÑÑановлен. Ð ÑÑом ÑлÑÑае, вÑ, оÑевидно, не ÑможеÑе вÑзваÑÑ pg_backup_start или pg_backup_stop, и ÑледоваÑелÑно, вам надо бÑÐ´ÐµÑ ÑамоÑÑоÑÑелÑно как-Ñо иденÑиÑиÑиÑоваÑÑ ÑезеÑвнÑе копии и понимаÑÑ, какие ÑÐ°Ð¹Ð»Ñ WAL Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°Ð°ÑÑ
ивиÑованÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑÑно вÑÑ-Ñаки лÑÑÑе ÑледоваÑÑ Ð²ÑÑеопиÑанной пÑоÑедÑÑе непÑеÑÑвного аÑÑ
ивиÑованиÑ.
24.3.4. ÐоÑÑÑановление непÑеÑÑвной аÑÑ Ð¸Ð²Ð½Ð¾Ð¹ копии
ÐопÑÑÑим, Ñ ÑдÑее ÑлÑÑилоÑÑ, и вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ воÑÑÑановиÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· ÑезеÑвной копии. ÐоÑÑдок дейÑÑвий Ñаков:
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ , еÑли он запÑÑен.
ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð¼ÐµÑÑо Ð´Ð»Ñ ÑÑого, ÑкопиÑÑйÑе веÑÑ ÑекÑÑий каÑалог клаÑÑеÑа баз даннÑÑ Ð¸ вÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва во вÑеменнÑй каÑалог на ÑлÑÑай, еÑли они вам понадобÑÑÑÑ. УÑÑиÑе, ÑÑо ÑÑа меÑа пÑедоÑÑоÑожноÑÑи ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ñвободного меÑÑа на диÑке бÑло доÑÑаÑоÑно Ð´Ð»Ñ ÑазмеÑÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ð¹ ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑли меÑÑа недоÑÑаÑоÑно, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÐ¾Ñ ÑаниÑÑ ÐºÐ°Ðº минимÑм ÑодеÑжимое подкаÑалога
pg_walкаÑалога клаÑÑеÑа, Ñак как он Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¶ÑÑналÑ, не попавÑие в аÑÑ Ð¸Ð² пеÑед оÑÑановкой ÑиÑÑемÑ.УдалиÑе вÑе ÑÑÑеÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ Ð¸ подкаÑалоги из каÑалога клаÑÑеÑа и из коÑневÑÑ ÐºÐ°Ñалогов иÑполÑзÑемÑÑ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв.
ÐоÑÑÑановиÑе ÑÐ°Ð¹Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· ÑезеÑвной копии Ñайлов. Ðажно, ÑÑÐ¾Ð±Ñ Ñ Ð²Ð¾ÑÑÑановленнÑÑ Ñайлов бÑли пÑавилÑнÑе ÑазÑеÑÐµÐ½Ð¸Ñ Ð¸ пÑавилÑнÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ (полÑзоваÑелÑ, запÑÑкаÑÑий ÑеÑвеÑ, а не
root!). ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва, ÑбедиÑеÑÑ Ñакже, ÑÑо ÑимволÑнÑе ÑÑÑлки вpg_tblspc/воÑÑÑановилиÑÑ ÐºÐ¾ÑÑекÑно.УдалиÑе вÑе ÑÐ°Ð¹Ð»Ñ Ð¸Ð·
pg_wal/; они воÑÑÑановилиÑÑ Ð¸Ð· ÑезеÑвной копии Ñайлов и поÑÑомÑ, ÑкоÑее вÑего, бÑдÑÑ ÑÑаÑее ÑекÑÑÐ¸Ñ . ÐÑли Ð²Ñ Ð²Ð¾Ð²Ñе не аÑÑ Ð¸Ð²Ð¸Ñовалиpg_wal/, ÑоздайÑе ÑÑÐ¾Ñ ÐºÐ°Ñалог Ñ Ð¿ÑавилÑнÑми пÑавами доÑÑÑпа, но еÑли ÑÑо бÑла ÑимволÑÐ½Ð°Ñ ÑÑÑлка, воÑÑÑановиÑе еÑ.ÐÑли на Ñаге 2 Ð²Ñ ÑÐ¾Ñ Ñанили незааÑÑ Ð¸Ð²Ð¸ÑованнÑе ÑÐ°Ð¹Ð»Ñ Ñ ÑегменÑами WAL, ÑкопиÑÑйÑе Ð¸Ñ Ð²
pg_wal/. (ÐÑÑÑе вÑего именно копиÑоваÑÑ, а не пеÑемеÑаÑÑ Ð¸Ñ , ÑÑÐ¾Ð±Ñ Ñ Ð²Ð°Ñ Ð¾ÑÑалиÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½ÑннÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° ÑлÑÑай, еÑли Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¿Ñоблема и вÑÑ Ð¿ÑидÑÑÑÑ Ð½Ð°ÑинаÑÑ ÑнаÑала.)УÑÑановиÑе паÑамеÑÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²
postgresql.conf(Ñм. ÐодÑаздел 18.5.5) и ÑоздайÑе Ñайлrecovery.signalв каÑалоге даннÑÑ ÐºÐ»Ð°ÑÑеÑа. ÐÑ Ð¼Ð¾Ð¶ÐµÑе Ñакже вÑеменно измениÑÑpg_hba.conf, ÑÑÐ¾Ð±Ñ Ð¾Ð±ÑÑнÑе полÑзоваÑели не могли подклÑÑиÑÑÑÑ, пока Ð²Ñ Ð½Ðµ бÑдеÑе ÑвеÑенÑ, ÑÑо воÑÑÑановление завеÑÑилоÑÑ ÑÑпеÑно.ÐапÑÑÑиÑе ÑеÑвеÑ. СеÑÐ²ÐµÑ Ð·Ð°Ð¿ÑÑÑиÑÑÑ Ð² Ñежиме воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ наÑнÑÑ ÑÑиÑÑваÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе ÐµÐ¼Ñ Ð°ÑÑ Ð¸Ð²Ð½Ñе ÑÐ°Ð¹Ð»Ñ WAL. ÐÑли воÑÑÑановление бÑÐ´ÐµÑ Ð¿ÑеÑвано из-за внеÑней оÑибки, ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ пÑоÑÑо пеÑезапÑÑÑиÑÑ Ð¸ он пÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ Ð²Ð¾ÑÑÑановление. Ðо завеÑÑении пÑоÑеÑÑа воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑÐ²ÐµÑ ÑÐ´Ð°Ð»Ð¸Ñ Ñайл
recovery.signal(ÑÑÐ¾Ð±Ñ Ð¿ÑедоÑвÑаÑиÑÑ Ð¿Ð¾Ð²ÑоÑнÑй запÑÑк Ñежима воÑÑÑановлениÑ), а заÑем пеÑейдÑÑ Ðº обÑÑной ÑабоÑе Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ .ÐÑоÑмоÑÑиÑе ÑодеÑжимое Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо Ð²Ñ Ð²ÐµÑнÑли ÐµÑ Ðº Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð¼Ñ ÑоÑÑоÑниÑ. ÐÑли ÑÑо не Ñак, веÑниÑеÑÑ Ðº ÑÐ°Ð³Ñ 1. ÐÑли вÑÑ Ñ Ð¾ÑоÑо, ÑазÑеÑиÑе полÑзоваÑелÑм подклÑÑаÑÑÑÑ Ðº ÑеÑвеÑÑ, воÑÑÑановив обÑÑнÑй Ñайл
pg_hba.conf.
ÐлÑÑевой Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑÑой пÑоÑедÑÑÑ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² Ñоздании конÑигÑÑаÑии воÑÑÑановлениÑ, опиÑÑваÑÑей, как бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð²Ð¾ÑÑÑановление и до какой ÑоÑки. ÐдинÑÑвенное, ÑÑо ÑовеÑÑенно необÑ
одимо задаÑÑ â ÑÑо ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ restore_command, коÑоÑÐ°Ñ Ð³Ð¾Ð²Ð¾ÑÐ¸Ñ Postgres Pro, как полÑÑаÑÑ Ð¸Ð· аÑÑ
ива Ñайл-ÑегменÑÑ WAL. Ðак и archive_command, ÑÑо ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ ÑÑÑока Ð´Ð»Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки. Ðна Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ %f, коÑоÑÑе заменÑÑÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑебÑÑÑегоÑÑ Ñайла жÑÑнала, и %p, коÑоÑÑе заменÑÑÑÑ ÑелевÑм пÑÑÑм Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑого Ñайла. (ÐÑÑÑ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑего ÑабоÑего каÑалога, Ñ. е. каÑалога клаÑÑеÑа даннÑÑ
.) ÐÑли вам нÑжно вклÑÑиÑÑ Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñам Ñимвол %, напиÑиÑе %%. ÐÑоÑÑейÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°, ÑакаÑ:
restore_command = 'cp /mnt/server/archivedir/%f %p'
ÐÑа команда копиÑÑÐµÑ Ð·Ð°Ð°ÑÑ
ивиÑованнÑе Ñанее ÑегменÑÑ WAL из каÑалога /mnt/server/archivedir. РазÑмееÑÑÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑо-Ñо более Ñложное, возможно, даже ÑкÑÐ¸Ð¿Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки, коÑоÑÑй ÑÐºÐ°Ð¶ÐµÑ Ð¾Ð¿ÐµÑаÑоÑÑ ÑÑÑановиÑÑ ÑооÑвеÑÑÑвÑÑÑÑÑ Ð»ÐµÐ½ÑÑ.
Ðажно, ÑÑÐ¾Ð±Ñ Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° возвÑаÑала ненÑлевой код возвÑаÑа в ÑлÑÑае оÑибки. ÐÑа команда бÑÐ´ÐµÑ Ð²ÑзÑваÑÑÑÑ Ð¸ Ñ Ð·Ð°Ð¿ÑоÑом Ñайлов, оÑÑÑÑÑÑвÑÑÑÐ¸Ñ Ð² аÑÑ Ð¸Ð²Ðµ; в ÑÑом ÑлÑÑае она должна веÑнÑÑÑ Ð½ÐµÐ½Ñлевое знаÑение и ÑÑо ÑÑиÑаеÑÑÑ ÑÑаÑной ÑиÑÑаÑией. РиÑклÑÑиÑелÑной ÑиÑÑаÑии, когда команда бÑла пÑеÑвана Ñигналом (кÑоме SIGTERM, коÑоÑÑй пÑименÑеÑÑÑ Ð² пÑоÑеÑÑе оÑÑановки ÑеÑвеÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ) или пÑоизоÑла оÑибка оболоÑки (напÑимеÑ, команда не найдена), воÑÑÑановление бÑÐ´ÐµÑ Ð¿ÑеÑвано и ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑÑиÑÑÑ.
Ðе вÑе запÑаÑиваемÑе ÑÐ°Ð¹Ð»Ñ Ð±ÑдÑÑ ÑегменÑами WAL; ÑледÑÐµÑ Ñакже ожидаÑÑ Ð·Ð°Ð¿ÑоÑов Ñайлов Ñ ÑÑÑÑикÑом .history. Также ÑÑÑиÑе, ÑÑо базовое Ð¸Ð¼Ñ Ð¿ÑÑи %p бÑÐ´ÐµÑ Ð¾ÑлиÑаÑÑÑÑ Ð¾Ñ %f; не дÑмайÑе, ÑÑо они взаимозаменÑемÑ.
СегменÑÑ WAL, коÑоÑÑе не найдÑÑÑÑ Ð² аÑÑ
иве, ÑиÑÑема бÑÐ´ÐµÑ Ð¸ÑкаÑÑ Ð² pg_wal/; благодаÑÑ ÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð¿Ð¾Ñледние незааÑÑ
ивиÑованнÑе ÑегменÑÑ. Ðднако ÑÐ°Ð¹Ð»Ñ Ð² pg_wal/ бÑдÑÑ Ð¼ÐµÐ½ÐµÐµ пÑедпоÑÑиÑелÑнÑми, еÑли Ñакие ÑегменÑÑ Ð¾ÐºÐ°Ð¶ÑÑÑÑ Ð² аÑÑ
иве.
ÐбÑÑно пÑи воÑÑÑановлении обÑабаÑÑваÑÑÑÑ Ð²Ñе доÑÑÑпнÑе ÑегменÑÑ WAL и, Ñаким обÑазом, база даннÑÑ
воÑÑÑанавливаеÑÑÑ Ð´Ð¾ поÑледнего моменÑа вÑемени (или макÑималÑно близкого к немÑ, в завиÑимоÑÑи Ð¾Ñ Ð½Ð°Ð»Ð¸ÑÐ¸Ñ ÑегменÑов WAL). Таким обÑазом, воÑÑÑановление обÑÑно завеÑÑаеÑÑÑ Ñ ÑообÑением «Ñайл не найден»; ÑоÑнÑй ÑекÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке завиÑÐ¸Ñ Ð¾Ñ Ñого, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ restore_command. ÐÑ Ñакже можеÑе ÑвидеÑÑ ÑообÑение об оÑибке в наÑале воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñайла Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñипа 00000001.history. ÐÑо Ñакже ноÑмалÑно и обÑÑно не говоÑÐ¸Ñ Ð¾ какой-либо пÑоблеме пÑи воÑÑÑановлении в пÑоÑÑÑÑ
ÑиÑÑаÑиÑÑ
; подÑобнее об ÑÑом ÑаÑÑказÑваеÑÑÑ Ð² ÐодÑазделе 24.3.5.
ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе воÑÑÑановиÑÑ Ð±Ð°Ð·Ñ Ð½Ð° какой-Ñо Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени (Ñкажем, до моменÑа, когда неопÑÑнÑй админиÑÑÑаÑÐ¾Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ñдалил оÑновнÑÑ ÑаблиÑÑ ÑÑанзакÑий), пÑоÑÑо ÑкажиÑе ÑÑебÑемÑÑ ÑоÑÐºÑ Ð¾ÑÑановки. ÐÑ Ð¼Ð¾Ð¶ÐµÑе задаÑÑ ÑÑÑ ÑоÑкÑ, инаÑе назÑваемÑÑ Â«ÑелÑÑ Ð²Ð¾ÑÑÑановлениÑ», по даÑе/вÑемени, именованной ÑоÑке воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ опÑеделÑÐ½Ð½Ð¾Ð¼Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑÑанзакÑии. Ðа Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑÑой докÑменÑаÑии полезнÑми могÑÑ Ð±ÑÑÑ ÑолÑко ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð°ÑÑ/вÑемени или имени ÑоÑки воÑÑÑановлениÑ, пока Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ ÑÑедÑÑв, позволÑÑÑÐ¸Ñ ÑоÑно опÑеделиÑÑ, какой иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии нÑжно вÑбÑаÑÑ.
ÐÑимеÑание
ТоÑка оÑÑанова должна ÑказÑваÑÑ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ñле оконÑÐ°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ копиÑованиÑ, Ñ. е. поÑле вÑемени завеÑÑÐµÐ½Ð¸Ñ pg_backup_stop. ÐÑполÑзоваÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, когда она еÑÑ ÑолÑко ÑоздавалаÑÑ, нелÑзÑ. (ЧÑÐ¾Ð±Ñ Ð²Ð¾ÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе на ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, пÑидÑÑÑÑ Ð²ÐµÑнÑÑÑÑÑ Ðº пÑедÑдÑÑей базовой ÑезеÑвной копии и накаÑÑваÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ ÑÑой позиÑии.)
ÐÑли пÑи воÑÑÑановлении обнаÑÑживаÑÑÑÑ Ð¿Ð¾Ð²ÑеждÑннÑе даннÑе WAL, воÑÑÑановление пÑеÑÑваеÑÑÑ Ð² ÑÑом меÑÑе и ÑеÑÐ²ÐµÑ Ð½Ðµ запÑÑкаеÑÑÑ. Ð ÑÑом ÑлÑÑае пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑезапÑÑÑиÑÑ Ñ Ð½Ð°Ñала, Ñказав «ÑÐµÐ»Ñ Ð²Ð¾ÑÑÑановлениÑ» до ÑоÑки повÑеждениÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑÑÑановление могло завеÑÑиÑÑÑÑ Ð½Ð¾ÑмалÑно. ÐÑли воÑÑÑановление завеÑÑаеÑÑÑ Ð¾Ñибкой из-за внеÑней пÑиÑинÑ, напÑимеÑ, из-за кÑаÑ
а ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ недоÑÑÑпноÑÑи аÑÑ
ива WAL, его можно пÑоÑÑо пеÑезапÑÑÑиÑÑ, и оно пÑодолжиÑÑÑ Ñ Ñого меÑÑа, где бÑло пÑеÑвано. ÐеÑезапÑÑк воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñеализован по ÑÐ¾Ð¼Ñ Ð¶Ðµ пÑинÑипÑ, ÑÑо и конÑÑолÑнÑе ÑоÑки пÑи обÑÑной ÑабоÑе: ÑеÑÐ²ÐµÑ Ð¿ÐµÑиодиÑеÑки ÑоÑ
ÑанÑÐµÑ Ð²ÑÑ ÑекÑÑее ÑоÑÑоÑние на диÑке и оÑÑÐ°Ð¶Ð°ÐµÑ ÑÑо в Ñайле pg_control, ÑÑÐ¾Ð±Ñ Ñже обÑабоÑаннÑе даннÑе WAL не пÑиÑ
одилоÑÑ ÑканиÑоваÑÑ Ñнова.
24.3.5. Ðинии вÑемени
ÐозможноÑÑÑ Ð²Ð¾ÑÑÑановиÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° некий пÑедÑдÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени ÑоздаÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑложноÑÑи, ÑÑодни наÑÑно-ÑанÑаÑÑиÑеÑким иÑÑоÑиÑм о пÑÑеÑеÑÑвиÑÑ Ð²Ð¾ вÑемени и паÑаллелÑнÑÑ Ð¼Ð¸ÑÐ°Ñ . ÐапÑимеÑ, пÑедположим, ÑÑо в наÑалÑной иÑÑоÑии Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²Ñ Ñдалили важнÑÑ ÑаблиÑÑ Ð² 17:15 во вÑоÑник, но оÑознали ÑÑÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑолÑко в ÑÑÐµÐ´Ñ Ð² полденÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе Ñпокойно взÑÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, воÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе на 17:14 во вÑоÑник и запÑÑÑиÑÑ ÑеÑвеÑ. Ð ÑÑой иÑÑоÑии миÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не ÑдалÑли вÑÑеÑпомÑнÑÑÑÑ ÑаблиÑÑ. Ðо пÑедположим, ÑÑо позже Ð²Ñ Ð·Ð°Ð¼ÐµÑили, ÑÑо ÑÑо бÑла не ÑÐ°ÐºÐ°Ñ Ñж Ñ Ð¾ÑоÑÐ°Ñ Ð¸Ð´ÐµÑ Ð¸ Ð·Ð°Ñ Ð¾Ñели веÑнÑÑÑÑÑ Ðº ÑÑÑÑ ÑÑÐµÐ´Ñ Ð² пеÑвонаÑалÑной иÑÑоÑии Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑ Ð½Ðµ ÑможеÑе ÑделаÑÑ ÑÑо, еÑли в пÑоÑеÑÑе ÑабоÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð½Ð° ÑÑÐ¿ÐµÐµÑ Ð¿ÐµÑезапиÑаÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо ÑайлÑ-ÑегменÑÑ WAL, пÑиводÑÑие к моменÑÑ Ð²Ñемени, к коÑоÑÐ¾Ð¼Ñ Ð²Ñ Ñ Ð¾ÑиÑе веÑнÑÑÑÑÑ ÑепеÑÑ. Таким обÑазом, Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑезÑлÑÑаÑа Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ как-Ñо оÑлиÑаÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑи запиÑей WAL, добавленнÑе поÑле воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° какой-Ñо Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени Ð¾Ñ ÑÐµÑ , ÑÑо ÑÑÑеÑÑвовали в наÑалÑной иÑÑоÑии Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐÐ»Ñ ÑеÑÐµÐ½Ð¸Ñ ÑÑой пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð² Postgres Pro еÑÑÑ Ñакое понÑÑие, как Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени. ÐÑÑкий Ñаз, когда завеÑÑаеÑÑÑ Ð²Ð¾ÑÑÑановление из аÑÑ Ð¸Ð²Ð°, ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени, позволÑÑÑÐ°Ñ Ð¸Ð´ÐµÐ½ÑиÑиÑиÑоваÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð·Ð°Ð¿Ð¸Ñей WAL, добавленнÑÑ Ð¿Ð¾Ñле ÑÑого воÑÑÑановлениÑ. ÐÐ¾Ð¼ÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ вÑемени вклÑÑаеÑÑÑ Ð² Ð¸Ð¼Ñ Ñайлов-ÑегменÑов WAL, Ñак ÑÑо ÑÐ°Ð¹Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ линии вÑемени не пеÑезапиÑÑваÑÑ ÑÐ°Ð¹Ð»Ñ WAL, ÑгенеÑиÑованнÑе пÑедÑдÑÑими линиÑми вÑемени. ФакÑиÑеÑки ÑÑо позволÑÐµÑ Ð°ÑÑ Ð¸Ð²Ð¸ÑоваÑÑ Ð¼Ð½Ð¾Ð³Ð¾ ÑазлиÑнÑÑ Ð»Ð¸Ð½Ð¸Ð¹ вÑемени. ХоÑÑ ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð±ÐµÑполезной возможноÑÑÑÑ, на Ñамом деле она ÑаÑÑо бÑÐ²Ð°ÐµÑ ÑпаÑиÑелÑной. ÐÑедÑÑавÑÑе, ÑÑо Ð²Ñ Ð½Ðµ опÑеделилиÑÑ, какÑÑ ÑоÑÐºÑ Ð²Ñемени вÑбÑаÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ, и Ñаким обÑазом Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑоводиÑÑ Ð²Ð¾ÑÑÑановление меÑодом пÑоб и оÑибок, пока не найдÑÑе лÑÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð´Ð»Ñ Ð¾ÑвеÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ ÑÑаÑой иÑÑоÑии. Ðез линий вÑемени ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð±ÑÑÑÑо ÑÑал Ð±Ñ Ð¾ÑÐµÐ½Ñ Ð·Ð°Ð¿ÑÑаннÑм. РблагодаÑÑ Ð»Ð¸Ð½Ð¸Ñм вÑемени, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе веÑнÑÑÑÑÑ Ðº лÑÐ±Ð¾Ð¼Ñ Ð¿ÑедÑдÑÑÐµÐ¼Ñ ÑоÑÑоÑниÑ, вклÑÑÐ°Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð² веÑÐºÐ°Ñ Ð»Ð¸Ð½Ð¸Ð¹ вÑемени, покинÑÑÑÑ Ñанее.
ÐаждÑй Ñаз, когда обÑазÑеÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени, Postgres Pro ÑоздаÑÑ Ñайл «иÑÑоÑии линии вÑемени», показÑваÑÑий, Ð¾Ñ ÐºÐ°ÐºÐ¾Ð¹ линии вÑемени оÑвеÑвилаÑÑ Ð´Ð°Ð½Ð½Ð°Ñ Ð¸ когда. ÐÑи ÑÐ°Ð¹Ð»Ñ Ð¸ÑÑоÑии нÑжнÑ, ÑÑÐ¾Ð±Ñ ÑиÑÑема могла вÑбÑаÑÑ Ð¿ÑавилÑнÑе ÑайлÑ-ÑегменÑÑ WAL пÑи воÑÑÑановлении из аÑÑ Ð¸Ð²Ð°, ÑодеÑжаÑего неÑколÑко линий вÑемени. Таким обÑазом, они помеÑаÑÑÑÑ Ð² облаÑÑÑ Ð°ÑÑ Ð¸Ð²Ð¾Ð² WAL Ñак же, как и ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL. Ð¤Ð°Ð¹Ð»Ñ Ð¸ÑÑоÑии пÑедÑÑавлÑÑÑ Ñобой неболÑÑие ÑекÑÑовÑе ÑайлÑ, Ñак ÑÑо они не занимаÑÑ Ð¼Ð½Ð¾Ð³Ð¾ меÑÑа и Ð¸Ñ Ð²Ð¿Ð¾Ð»Ð½Ðµ можно ÑÐ¾Ñ ÑанÑÑÑ Ð½ÐµÐ¾Ð³ÑаниÑенно долго (в оÑлиÑие Ð¾Ñ Ñайлов ÑегменÑов, имеÑÑÐ¸Ñ Ð±Ð¾Ð»ÑÑой ÑазмеÑ). ÐÑли Ñ Ð¾ÑиÑе, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе добавлÑÑÑ Ð² Ñайл иÑÑоÑии комменÑаÑии, Ñвои ÑобÑÑвеннÑе замеÑки о Ñом, как и поÑÐµÐ¼Ñ Ð±Ñла Ñоздана ÑÑа конкÑеÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð²Ñемени. Такие комменÑаÑии бÑдÑÑ Ð¾Ñобенно ÑеннÑ, еÑли в ÑезÑлÑÑаÑе ÑкÑпеÑименÑов Ñ Ð²Ð°Ñ Ð¾Ð±ÑазÑеÑÑÑ Ñ Ð¸ÑÑоÑплеÑение ÑазнÑÑ Ð»Ð¸Ð½Ð¸Ð¹ вÑемени.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð¾ÑÑÑановление оÑÑÑеÑÑвлÑеÑÑÑ Ð´Ð¾ Ñамой поÑледней линии вÑемени, найденной в аÑÑ
иве. ÐÑли Ð²Ñ Ñ
оÑиÑе воÑÑÑановиÑÑ ÑоÑÑоÑние на линии вÑемени, коÑоÑÐ°Ñ Ð±Ñла ÑекÑÑей, когда ÑоздавалаÑÑ ÐºÐ¾Ð¿Ð¸Ñ, либо на какой-либо доÑеÑней линии вÑемени (Ñо еÑÑÑ Ñ
оÑиÑе веÑнÑÑÑÑÑ Ðº некоÑоÑÐ¾Ð¼Ñ ÑоÑÑоÑниÑ, коÑоÑое Ñоже бÑло полÑÑено в ÑезÑлÑÑаÑе попÑÑки воÑÑÑановлениÑ), вам необÑ
одимо ÑказаÑÑ current или иденÑиÑикаÑÐ¾Ñ Ñелевой линии вÑемени в recovery_target_timeline. ÐоÑÑÑановиÑÑ ÑоÑÑоÑние на линии вÑемени, оÑвеÑвивÑейÑÑ ÑанÑÑе, Ñем бÑла Ñделана Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ, нелÑзÑ.
24.3.6. СовеÑÑ Ð¸ пÑимеÑÑ
Ðиже Ð¼Ñ Ð´Ð°Ð´Ð¸Ð¼ неÑколÑко ÑовеÑов по наÑÑÑойке непÑеÑÑвного аÑÑ Ð¸Ð²Ð¸ÑованиÑ.
24.3.6.1. ÐбоÑобленнÑе гоÑÑÑие ÑезеÑвнÑе копии
СÑедÑÑва ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Postgres Pro можно пÑименÑÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±Ð¾ÑобленнÑÑ Ð³Ð¾ÑÑÑÐ¸Ñ ÐºÐ¾Ð¿Ð¸Ð¹. ÐÑи копии нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, но ÑоздаÑÑÑÑ Ð¸ воÑÑÑанавливаÑÑÑÑ Ð¾Ð½Ð¸ обÑÑно гоÑаздо бÑÑÑÑее, Ñем Ð´Ð°Ð¼Ð¿Ñ pg_dump. (Ðни Ñакже намного болÑÑе, Ñем Ð´Ð°Ð¼Ð¿Ñ pg_dump, Ñак ÑÑо в некоÑоÑÑÑ ÑлÑÑаÑÑ Ð²ÑигÑÑÑ Ð² ÑкоÑоÑÑи Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾ÑеÑÑн.)
Ðак и базовÑе ÑезеÑвнÑе копии, обоÑобленнÑÑ Ð³Ð¾ÑÑÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¿ÑоÑе вÑего полÑÑиÑÑ, иÑполÑзÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ pg_basebackup. ÐÑли Ð²Ñ Ð²ÑзовеÑе ÑÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ñ Ð¿Ð°ÑамеÑÑом -X, в ÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки бÑÐ´ÐµÑ Ð²ÐºÐ»ÑÑÑн веÑÑ Ð¶ÑÑнал пÑедзапиÑи, необÑ
одимÑй Ð´Ð»Ñ ÐµÑ Ð¸ÑполÑзованиÑ, Ñак ÑÑо никакие оÑобÑе дейÑÑÐ²Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ поÑÑебÑÑÑÑÑ.
24.3.6.2. СжаÑие жÑÑналов в аÑÑ Ð¸Ð²Ðµ
ÐÑли ÑÐ°Ð·Ð¼ÐµÑ Ð°ÑÑ Ð¸Ð²Ð° Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑое знаÑение, можно воÑполÑзоваÑÑÑÑ gzip и ÑжимаÑÑ Ð°ÑÑ Ð¸Ð²Ð½Ñе ÑайлÑ:
archive_command = 'gzip < %p > /mnt/server/archivedir/%f.gz'
ÐÑи ÑÑом Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑидÑÑÑÑ Ð¸ÑполÑзоваÑÑ gunzip:
restore_command = 'gunzip < /mnt/server/archivedir/%f.gz > %p'
24.3.6.3. СкÑипÑÑ archive_command
Ðногие в каÑеÑÑве ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ archive_command иÑполÑзÑÑÑ ÑкÑипÑÑ, Ñак ÑÑо запиÑÑ Ð² postgresql.conf оказÑваеÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¿ÑоÑÑой:
archive_command = 'local_backup_script.sh "%p" "%f"'
ÐÑименÑÑÑ Ð¾ÑделÑнÑй Ñайла ÑкÑипÑа ÑелеÑообÑазно вÑегда, когда Ð²Ñ Ñ Ð¾ÑиÑе иÑполÑзоваÑÑ Ð² пÑоÑедÑÑе аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑколÑко команд. ÐÑо позволÑÐµÑ ÑпÑавлÑÑÑ ÑложноÑÑÑÑ ÑÑой пÑоÑедÑÑÑ Ð² ÑÐ°Ð¼ÐºÐ°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑкÑипÑа, коÑоÑÑй можно напиÑаÑÑ Ð½Ð° лÑбом попÑлÑÑном ÑзÑке ÑкÑипÑов, напÑÐ¸Ð¼ÐµÑ Ð½Ð° bash или perl.
Ð ÑаÑÑноÑÑи, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑкÑипÑов можно ÑеÑиÑÑ Ñакие задаÑи:
ÐопиÑование даннÑÑ Ð² безопаÑное внеÑнее Ñ ÑанилиÑе
ÐакеÑÐ½Ð°Ñ Ð¾Ð±ÑабоÑка Ñайлов WAL, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ пеÑедавалиÑÑ ÐºÐ°Ð¶Ð´Ñе ÑÑи ÑаÑа, а не по одномÑ
ÐзаимодейÑÑвие Ñ Ð´ÑÑгими пÑиложениÑми ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ воÑÑÑановлениÑ
ÐзаимодейÑÑвие Ñо ÑÑедÑÑвами мониÑоÑинга, ÑегиÑÑÑаÑÐ¸Ñ Ð¾Ñибок
ÐодÑказка
Ðогда в archive_command иÑполÑзÑеÑÑÑ ÑкÑипÑ, желаÑелÑно вклÑÑиÑÑ logging_collector. Тогда вÑе ÑообÑениÑ, коÑоÑÑе ÑкÑÐ¸Ð¿Ñ Ð²ÑÐ²ÐµÐ´ÐµÑ Ð² stderr, бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² жÑÑнал ÑеÑвеÑа баз даннÑÑ
, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð»ÐµÐ³ÐºÐ¾ диагноÑÑиÑоваÑÑ Ð¾Ñибки в ÑложнÑÑ
конÑигÑÑаÑиÑÑ
.
24.3.7. ÐгÑаниÑениÑ
Ðа Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð´Ð¾ÐºÑменÑаÑии меÑодика непÑеÑÑвного аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко огÑаниÑений. Ðни могÑÑ Ð±ÑÑÑ Ð»Ð¸ÐºÐ²Ð¸Ð´Ð¸ÑÐ¾Ð²Ð°Ð½Ñ Ð² бÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ :
ÐÑли во вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑезеÑвной копии вÑполнÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
CREATE DATABASE, а заÑем база-Ñаблон, задейÑÑÐ²Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð²CREATE DATABASE, изменÑеÑÑÑ, пока пÑодолжаеÑÑÑ ÐºÐ¾Ð¿Ð¸Ñование, возможно, ÑÑо пÑи воÑÑÑановлении ÑÑи Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑаÑпÑоÑÑÑанÑÑÑÑ Ñакже и на ÑозданнÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐонеÑно, ÑÑо нежелаÑелÑно. Ðо избежание подобнÑÑ ÑиÑков, лÑÑÑе вÑего не изменÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ базÑ-ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑезеÑвной копии.ÐомандÑ
CREATE TABLESPACEзапиÑÑваÑÑÑÑ Ð² WAL Ñ Ð°Ð±ÑолÑÑнÑм пÑÑÑм и, Ñаким обÑазом, пÑи воÑпÑоизведении WAL бÑдÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ Ñ Ñем же абÑолÑÑнÑм пÑÑÑм. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¶ÐµÐ»Ð°ÑелÑно, еÑли жÑÑнал воÑпÑоизводиÑÑÑ Ð½Ð° дÑÑгой маÑине. Ðо опаÑноÑÑÑ ÐµÑÑÑ, даже еÑли жÑÑнал воÑпÑоизводиÑÑÑ Ð½Ð° Ñой же маÑине, но в дÑÑгом каÑалоге даннÑÑ : пÑи воÑпÑоизведении бÑÐ´ÐµÑ Ñак же пеÑезапиÑано ÑодеÑжимое иÑÑ Ð¾Ð´Ð½ÑÑ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв. Ðо избежание поÑенÑиалÑнÑÑ Ð¿Ñоблем Ñакого Ñода лÑÑÑе вÑего делаÑÑ Ð½Ð¾Ð²ÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ð¾Ñле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв.
Также ÑледÑÐµÑ Ð·Ð°Ð¼ÐµÑиÑÑ, ÑÑо ÑÑандаÑÑнÑй ÑоÑÐ¼Ð°Ñ WAL не оÑÐµÐ½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑнÑй, Ñак как вклÑÑÐ°ÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ Ñнимков диÑковÑÑ
ÑÑÑаниÑ. ÐÑи Ñнимки ÑÑÑÐ°Ð½Ð¸Ñ Ð¿ÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ, на ÑлÑÑай, еÑли понадобиÑÑÑ Ð¸ÑпÑавиÑÑ ÑÑÑаниÑÑ, запиÑаннÑе на диÑк ÑаÑÑиÑно. РзавиÑимоÑÑи Ð¾Ñ Ð°Ð¿Ð¿Ð°ÑаÑного и пÑогÑаммного обеÑпеÑÐµÐ½Ð¸Ñ Ð²Ð°Ñей ÑиÑÑемÑ, ÑиÑк ÑаÑÑиÑной запиÑи Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾ÑÑаÑоÑно мал, Ñак ÑÑо его можно игноÑиÑоваÑÑ, и в ÑÑом ÑлÑÑае можно ÑÑÑеÑÑвенно ÑменÑÑиÑÑ Ð¾Ð±Ñий обÑÑм аÑÑ
ивиÑÑемÑÑ
жÑÑналов, вÑклÑÑив Ñнимки ÑÑÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа full_page_writes. (ÐÑежде Ñем делаÑÑ ÑÑо, пÑоÑÑиÑе замеÑÐ°Ð½Ð¸Ñ Ð¸ пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² Ðлаве 28.) ÐÑклÑÑение Ñнимков ÑÑÑÐ°Ð½Ð¸Ñ Ð½Ðµ пÑепÑÑÑÑвÑÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¶ÑÑналов Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ PITR. Ðдним из напÑавлений ÑазÑабоÑки в бÑдÑÑем ÑвлÑеÑÑÑ ÑжаÑие аÑÑ
ивиÑÑемÑÑ
даннÑÑ
WAL пÑÑÑм ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐ½ÑжнÑÑ
копий ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð°Ð¶Ðµ пÑи вклÑÑÑнном Ñежиме full_page_writes. Тем вÑеменем админиÑÑÑаÑоÑÑ Ð¼Ð¾Ð³ÑÑ ÑокÑаÑиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñнимков ÑÑÑаниÑ, вклÑÑаемÑÑ
в WAL, ÑвелиÑив паÑамеÑÑÑ Ð¸Ð½ÑеÑвала конÑÑолÑнÑÑ
ÑоÑек в ÑазÑмнÑÑ
пÑеделаÑ
.