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, а Ð¼Ð¾Ð¶ÐµÑ Ð²ÑзÑваÑÑ ÑложнÑй ÑкÑÐ¸Ð¿Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки â ÑÑо ÑеÑаÑÑ Ð²Ð°Ð¼.
ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ Ð°ÑÑ
ивиÑование WAL, ÑÑÑановиÑе в паÑамеÑÑе конÑигÑÑаÑии wal_level ÑÑÐ¾Ð²ÐµÐ½Ñ replica (или вÑÑе), в archive_mode â знаÑение on, и задайÑе желаемÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñки в паÑамеÑÑе archive_command. Ðа пÑакÑике ÑÑи паÑамеÑÑÑ Ð²Ñегда задаÑÑÑÑ Ð² Ñайле 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, ÑÑо Ñайл не зааÑÑ Ð¸Ð²Ð¸Ñован; попÑÑки зааÑÑ Ð¸Ð²Ð¸ÑоваÑÑ ÐµÐ³Ð¾ бÑдÑÑ Ð¿ÐµÑиодиÑеÑки повÑоÑÑÑÑÑÑ, пока ÑÑо не ÑдаÑÑÑÑ.
Ðоманда аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑно ÑазÑабаÑÑваеÑÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑкаÑÑ Ð¿ÐµÑезапиÑи лÑбÑÑ ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð°ÑÑ Ð¸Ð²Ð½ÑÑ Ñайлов. ÐÑо Ð²Ð°Ð¶Ð½Ð°Ñ Ð¼ÐµÑа безопаÑноÑÑи, позволÑÑÑÐ°Ñ ÑÐ¾Ñ ÑаниÑÑ ÑелоÑÑноÑÑÑ Ð°ÑÑ Ð¸Ð²Ð° в ÑлÑÑае оÑибки админиÑÑÑаÑоÑа (напÑимеÑ, еÑли аÑÑ Ð¸Ð²Ð¸ÑÑемÑе даннÑе двÑÑ ÑазнÑÑ ÑеÑвеÑов бÑдÑÑ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² одном каÑалоге).
РекомендÑеÑÑÑ Ð¿ÑоÑеÑÑиÑоваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð°ÑÑ
ивиÑованиÑ, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо она дейÑÑвиÑелÑно не пеÑезапиÑÑÐ²Ð°ÐµÑ ÑÑÑеÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ Ð¸ ÑÑо она возвÑаÑÐ°ÐµÑ Ð½ÐµÐ½Ñлевое ÑоÑÑоÑние в ÑÑом ÑлÑÑае. Рпоказанной вÑÑе команде Ð´Ð»Ñ 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.85.
Ðогда wal_level Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение minimal, некоÑоÑÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SQL вÑполнÑÑÑÑÑ Ð² обÑ
од жÑÑнала WAL, как опиÑÑваеÑÑÑ Ð² ÐодÑазделе 14.4.7. ÐÑли аÑÑ
ивиÑование или поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ Ð±Ñли вклÑÑÐµÐ½Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑакиÑ
опеÑаÑоÑов, WAL не бÑÐ´ÐµÑ ÑодеÑжаÑÑ Ð¸Ð½ÑоÑмаÑиÑ, необÑ
одимÑÑ Ð´Ð»Ñ Ð²Ð¾ÑÑÑановлениÑ. (Ðа воÑÑÑановление поÑле кÑаÑ
а ÑÑо не ÑаÑпÑоÑÑÑанÑеÑÑÑ). ÐоÑÑÐ¾Ð¼Ñ wal_level можно измениÑÑ ÑолÑко пÑи запÑÑке ÑеÑвеÑа. Ðднако Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ archive_command доÑÑаÑоÑно пеÑезагÑÑзиÑÑ Ñайл конÑигÑÑаÑии. ÐÑли Ð²Ñ Ñ
оÑиÑе на вÑÐµÐ¼Ñ Ð¾ÑÑановиÑÑ Ð°ÑÑ
ивиÑование, ÑÑо можно ÑделаÑÑ, напÑимеÑ, задав в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ 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, но вÑÑ Ð¶Ðµ оÑноÑиÑелÑно пÑоÑÑа. ÐÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾, ÑÑÐ¾Ð±Ñ ÑÑи Ñаги вÑполнÑлиÑÑ Ð¿Ð¾ поÑÑдкÑ, и ÑледÑÑÑий Ñаг вÑполнÑлÑÑ, ÑолÑко еÑли пÑедÑдÑÑий ÑÑпеÑен.
РезеÑвное копиÑование на низком ÑÑовне можно пÑоизвеÑÑи в монополÑном или немонополÑном Ñежиме. РекомендÑеÑÑÑ Ð¿ÑименÑÑÑ Ð½ÐµÐ¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»ÑнÑй меÑод, а монополÑнÑй ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим и в конÑе конÑов бÑÐ´ÐµÑ Ð»Ð¸ÐºÐ²Ð¸Ð´Ð¸Ñован.
24.3.3.1. ÐемонополÑное ÑезеÑвное копиÑование на низком ÑÑовне
ÐемонополÑное ÑезеÑвное копиÑование позволÑÐµÑ Ð¿Ð°ÑаллелÑно запÑÑкаÑÑ Ð´ÑÑгие пÑоÑеÑÑÑ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ (иÑполÑзÑÑ ÑÐ¾Ñ Ð¶Ðµ API или pg_basebackup).
УбедиÑеÑÑ, ÑÑо аÑÑ Ð¸Ð²Ð¸Ñование WAL вклÑÑено и ÑабоÑаеÑ.
ÐодклÑÑиÑеÑÑ Ðº ÑеÑвеÑÑ (к лÑбой базе даннÑÑ ) как полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами на вÑполнение pg_start_backup (ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑзоваÑелÑ, коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð¾ пÑаво EXECUTE Ð´Ð»Ñ ÑÑой ÑÑнкÑии) и вÑполниÑе командÑ:
SELECT pg_start_backup('label', false, false);где
labelâ лÑÐ±Ð°Ñ Ð¼ÐµÑка, по коÑоÑой можно однознаÑно иденÑиÑиÑиÑоваÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑезеÑвного копиÑованиÑ. Соединение, ÑеÑез коÑоÑое вÑзÑваеÑÑÑpg_start_backup, должно поддеÑживаÑÑÑÑ Ð´Ð¾ оконÑÐ°Ð½Ð¸Ñ ÑезеÑвного копиÑованиÑ, инаÑе ÑÑÐ¾Ñ Ð¿ÑоÑеÑÑ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑеÑван.Ðо ÑмолÑаниÑ
pg_start_backupÐ¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð´Ð»Ð¸ÑелÑное вÑемÑ. ÐÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо ÑÑнкÑÐ¸Ñ Ð²ÑполнÑÐµÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑоÑкÑ, а опеÑаÑии ввода-вÑвода, ÑÑебÑемÑе Ð´Ð»Ñ ÑÑого, ÑаÑпÑеделÑÑÑÑÑ Ð² инÑеÑвале вÑемени, по ÑмолÑÐ°Ð½Ð¸Ñ Ñавном половине инÑеÑвала Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð½ÑÑолÑнÑми ÑоÑками (Ñм. паÑамеÑÑ checkpoint_completion_target). ÐбÑÑно ÑÑо вполне пÑиемлемо, Ñак как пÑи ÑÑом минимизиÑÑеÑÑÑ Ð²Ð»Ð¸Ñние на вÑполнение дÑÑÐ³Ð¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐÑли же Ð²Ñ Ñ Ð¾ÑиÑе наÑаÑÑ ÑезеÑвное копиÑование макÑималÑно бÑÑÑÑо, пеÑедайÑе во вÑоÑом паÑамеÑÑеtrue. Ð ÑÑом ÑлÑÑае конÑÑолÑÐ½Ð°Ñ ÑоÑка бÑÐ´ÐµÑ Ð²Ñполнена немедленно без огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма ввода-вÑвода.ТÑеÑий паÑамеÑÑ, имеÑÑий знаÑение
false, ÑказÑваеÑpg_start_backupнаÑаÑÑ Ð½ÐµÐ¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»Ñное базовое копиÑование.СкопиÑÑйÑе ÑайлÑ, иÑполÑзÑÑ Ð»Ñбое Ñдобное ÑÑедÑÑво ÑезеÑвного копиÑованиÑ, напÑимеÑ, tar или cpio (не pg_dump или pg_dumpall). РпÑоÑеÑÑе копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑÑанавливаÑÑ ÑабоÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ, ÑÑо ниÑего не даÑÑ. Ð ÐодÑазделе 24.3.3.3 опиÑано, ÑÑо ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð² пÑоÑеÑÑе копиÑованиÑ.
ЧеÑез Ñо же подклÑÑение, ÑÑо и ÑанÑÑе, вÑполниÑе командÑ:
SELECT * FROM pg_stop_backup(false, true);
ÐÑи ÑÑом ÑеÑÐ²ÐµÑ Ð²ÑÐ¹Ð´ÐµÑ Ð¸Ð· Ñежима ÑезеÑвного копиÑованиÑ. ÐедÑÑий ÑеÑÐ²ÐµÑ Ð²Ð¼ÐµÑÑе Ñ ÑÑим авÑомаÑиÑеÑки пеÑеклÑÑиÑÑÑ Ð½Ð° ÑледÑÑÑий ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL. Ðа ведомом авÑомаÑиÑеÑкое пеÑеклÑÑение ÑегменÑов WAL невозможно, поÑÑÐ¾Ð¼Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑполниÑÑ
pg_switch_walна ведÑÑем, ÑÑÐ¾Ð±Ñ Ð¿ÑоизвеÑÑи пеÑеклÑÑение вÑÑÑнÑÑ. Такое пеÑеклÑÑение позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð³Ð¾ÑовÑй к аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñледний ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL, запиÑаннÑй в пÑоÑеÑÑе ÑезеÑвного копиÑованиÑ.ФÑнкÑиÑ
pg_stop_backupвозвÑаÑÐ¸Ñ Ð¾Ð´Ð½Ñ ÑÑÑÐ¾ÐºÑ Ñ ÑÑÐµÐ¼Ñ Ð·Ð½Ð°ÑениÑми. ÐÑоÑое из Ð½Ð¸Ñ Ð½Ñжно запиÑаÑÑ Ð² Ñайлbackup_labelв коÑневой каÑалог ÑезеÑвной копии. ТÑеÑÑе знаÑение, еÑли оно не пÑÑÑое, должно бÑÑÑ Ð·Ð°Ð¿Ð¸Ñано в Ñайлtablespace_map. ÐÑи ÑÐ°Ð¹Ð»Ñ ÐºÑайне Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ и Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð±Ð°Ð¹Ñ Ð·Ð° байÑом без изменений, Ð´Ð»Ñ Ñего Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾ÑкÑÑÑÑ Ñайл в двоиÑном ÑедакÑоÑе.ÐоÑле ÑÑого оÑÑанеÑÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑоваÑÑ ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL, акÑивнÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑезеÑвной копии, и пÑоÑедÑÑа ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð²ÐµÑÑена. ФÑнкÑиÑ
pg_stop_backupв пеÑвом знаÑении ÑезÑлÑÑаÑа ÑказÑваеÑ, какой поÑледний ÑÐµÐ³Ð¼ÐµÐ½Ñ ÑÑебÑеÑÑÑ Ð´Ð»Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ набоÑа Ñайлов ÑезеÑвной копии. Ðа ведÑÑем ÑеÑвеÑе, еÑли вклÑÑÑн Ñежим аÑÑ Ð¸Ð²Ð°Ñии (паÑамеÑÑarchive_mode) и аÑгÑменÑwait_for_archiveÑавенtrue, ÑÑнкÑиÑpg_stop_backupне завеÑÑиÑÑÑ, пока не бÑÐ´ÐµÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸Ñован поÑледний ÑегменÑ. Ðа ведомом знаÑениемarchive_modeдолжно бÑÑÑalways, ÑÑобÑpg_stop_backupожидала аÑÑ Ð¸Ð²Ð°Ñии. ÐÑи ÑÐ°Ð¹Ð»Ñ Ð±ÑдÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ñ Ð°Ð²ÑомаÑиÑеÑки, поÑколÑÐºÑ Ñакже должна бÑÑÑ Ð½Ð°ÑÑÑоена командаarchive_command. ЧаÑе вÑего ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð±ÑÑÑÑо, но Ð¼Ñ ÑовеÑÑем наблÑдаÑÑ Ð·Ð° ÑиÑÑемой аÑÑ Ð¸Ð²Ð°Ñии и пÑовеÑÑÑÑ, не возникаÑÑ Ð»Ð¸ задеÑжки. ÐÑли аÑÑ Ð¸Ð²Ð¸Ñование оÑÑановиÑÑÑ Ð¸Ð·-за оÑибок ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии, попÑÑки аÑÑ Ð¸Ð²Ð°Ñии бÑдÑÑ Ð¿ÑодолжаÑÑÑÑ Ð´Ð¾ ÑÑпеÑного завеÑÑениÑ, и ÑолÑко Ñогда ÑезеÑвное копиÑование оконÑиÑÑÑ. ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе огÑаниÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð²ÑполнениÑpg_stop_backup, ÑÑÑановиÑе ÑооÑвеÑÑÑвÑÑÑее знаÑение вstatement_timeout, но замеÑÑÑе, ÑÑо в ÑлÑÑае пÑеÑÑваниÑpg_stop_backupпо вÑемени ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ³Ð¾Ð´Ð½Ð¾Ð¹.ÐÑли в пÑоÑедÑÑе ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑедÑÑмоÑÑено оÑÑлеживание и аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ Ð²ÑÐµÑ Ñайлов ÑегменÑов WAL, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ ÑезеÑвной копии, Ñо в аÑгÑменÑе
wait_for_archive(по ÑмолÑÐ°Ð½Ð¸Ñ Ñавном true) можно пеÑедаÑÑ false, ÑÑÐ¾Ð±Ñ ÑÑнкÑиÑpg_stop_backupзавеÑÑилаÑÑ ÑÑазÑ, как ÑолÑко в WAL бÑÐ´ÐµÑ Ð¿Ð¾Ð¼ÐµÑена запиÑÑ Ð¾ завеÑÑении копиÑованиÑ. Ðо ÑмолÑаниÑpg_stop_backupбÑÐ´ÐµÑ Ð¶Ð´Ð°ÑÑ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии вÑÐµÑ Ñайлов WAL, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑемÑ. ÐÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑледÑÐµÑ Ñ Ð¾ÑÑоÑожноÑÑÑÑ: еÑли аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL не конÑÑолиÑÑеÑÑÑ, в ÑезеÑвной копии могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½Ðµ вÑе Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе ÑÐ°Ð¹Ð»Ñ WAL и ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ.
24.3.3.2. ÐонополÑное ÑезеÑвное копиÑование на низком ÑÑовне
ÐÑимеÑание
ÐонополÑное ÑезеÑвное копиÑование ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим, Ñак ÑÑо Ð¾Ñ Ð½ÐµÐ³Ð¾ ÑледÑÐµÑ Ð¾ÑказаÑÑÑÑ. Ðо PostgreSQL 9.6 ÑÑо бÑл единÑÑвеннÑй возможнÑй меÑод низкоÑÑовневого копиÑованиÑ, но ÑейÑÐ°Ñ Ð¿Ð¾Ð»ÑзоваÑелÑм ÑекомендÑеÑÑÑ Ð¿Ð¾ возможноÑÑи подкоÑÑекÑиÑоваÑÑ Ñвои ÑкÑипÑÑ Ð¸ пеÑейÑи к иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¼Ð¾Ð½Ð¾Ð¿Ð¾Ð»Ñного ваÑианÑа.
ÐонополÑное ÑезеÑвное копиÑование во многом Ð¿Ð¾Ñ Ð¾Ð¶Ðµ на немонополÑное, но Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко важнÑÑ Ð¾ÑлиÑий. Такое копиÑование можно пÑоизвеÑÑи ÑолÑко на ведÑÑем ÑеÑвеÑе, и оно иÑклÑÑÐ°ÐµÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменное вÑполнение дÑÑÐ³Ð¸Ñ Ð¿ÑоÑеÑÑов копиÑованиÑ. Ðолее Ñого, Ñак как пÑи Ñаком копиÑовании на ведÑÑем ÑоздаÑÑÑÑ Ñайл Ñ Ð¼ÐµÑкой ÑезеÑвного копиÑованиÑ, как опиÑано ниже, ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ пеÑезапÑÑÑиÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки в ÑлÑÑае ÑбоÑ. С дÑÑгой ÑÑоÑонÑ, оÑибоÑное Ñдаление ÑÑого Ñайла из ÑезеÑвной копии или Ñ Ð²ÐµÐ´Ð¾Ð¼Ð¾Ð³Ð¾ ÑеÑвеÑа, ÑÑо наблÑдаеÑÑÑ Ð½ÐµÑедко, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»ÐµÑÑ ÑеÑÑÑзное повÑеждение даннÑÑ . ÐÑли вÑÑ-Ñаки Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ иÑполÑзоваÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑÑÐ¾Ñ Ð²Ð°ÑианÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑоизвеÑÑи ÑледÑÑÑие дейÑÑвиÑ.
УбедиÑеÑÑ, ÑÑо аÑÑ Ð¸Ð²Ð¸Ñование WAL вклÑÑено и ÑабоÑаеÑ.
ÐодклÑÑиÑеÑÑ Ðº ÑеÑвеÑÑ (к лÑбой базе даннÑÑ ) как полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами на вÑполнение pg_start_backup (ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑзоваÑелÑ, коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð¾ пÑаво EXECUTE Ð´Ð»Ñ ÑÑой ÑÑнкÑии) и вÑполниÑе командÑ:
SELECT pg_start_backup('label');где
labelâ лÑÐ±Ð°Ñ Ð¼ÐµÑка, по коÑоÑой можно однознаÑно иденÑиÑиÑиÑоваÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑезеÑвного копиÑованиÑ. ФÑнкÑиÑpg_start_backupÑоздаÑÑ Ð² каÑалоге клаÑÑеÑа Ñайл меÑки ÑезеÑвного копиÑованиÑ, назÑваемÑйbackup_label, в коÑоÑÑй помеÑаеÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑезеÑвной копии, вклÑÑаÑÑÐ°Ñ Ð²ÑÐµÐ¼Ñ Ð½Ð°Ñала и ÑÑÑÐ¾ÐºÑ Ð¼ÐµÑки. ÐÑа ÑÑнкÑÐ¸Ñ Ñакже ÑоздаÑÑ Ð² каÑалоге клаÑÑеÑа Ñайл каÑÑÑ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв, назÑваемÑйtablespace_map, Ñ Ð¸Ð½ÑоÑмаÑией о ÑимволиÑеÑÐºÐ¸Ñ ÑÑÑÐ»ÐºÐ°Ñ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв вpg_tblspc/, еÑли Ñакие ÑÑÑлки еÑÑÑ. Ðба Ñайла Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ ÑелоÑÑноÑÑи ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ð¸ и понадобÑÑÑÑ Ð¿Ñи воÑÑÑановлении.Ðо ÑмолÑаниÑ
pg_start_backupÐ¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð´Ð»Ð¸ÑелÑное вÑемÑ. ÐÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо ÑÑнкÑÐ¸Ñ Ð²ÑполнÑÐµÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑоÑкÑ, а опеÑаÑии ввода-вÑвода, ÑÑебÑемÑе Ð´Ð»Ñ ÑÑого, ÑаÑпÑеделÑÑÑÑÑ Ð² инÑеÑвале вÑемени, по ÑмолÑÐ°Ð½Ð¸Ñ Ñавном половине инÑеÑвала Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð½ÑÑолÑнÑми ÑоÑками (Ñм. паÑамеÑÑ checkpoint_completion_target). ÐбÑÑно ÑÑо вполне пÑиемлемо, Ñак как пÑи ÑÑом минимизиÑÑеÑÑÑ Ð²Ð»Ð¸Ñние на вÑполнение дÑÑÐ³Ð¸Ñ Ð·Ð°Ð¿ÑоÑов. ÐÑли же Ð²Ñ Ñ Ð¾ÑиÑе наÑаÑÑ ÑезеÑвное копиÑование макÑималÑно бÑÑÑÑо, вÑполниÑе:SELECT pg_start_backup('label', true);ÐÑи ÑÑом конÑÑолÑÐ½Ð°Ñ ÑоÑка бÑÐ´ÐµÑ Ð²Ñполнена как можно ÑкоÑее.
СкопиÑÑйÑе ÑайлÑ, иÑполÑзÑÑ Ð»Ñбое Ñдобное ÑÑедÑÑво ÑезеÑвного копиÑованиÑ, напÑимеÑ, tar или cpio (не pg_dump или pg_dumpall). РпÑоÑеÑÑе копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑÑанавливаÑÑ ÑабоÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ðµ ÑÑебÑеÑÑÑ, ÑÑо ниÑего не даÑÑ. Ð ÐодÑазделе 24.3.3.3 опиÑано, ÑÑо ÑледÑÐµÑ ÑÑиÑÑваÑÑ Ð² пÑоÑеÑÑе копиÑованиÑ.
Ðак оÑмеÑено вÑÑе, еÑли в пÑоÑеÑÑе ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑоизойдÑÑ Ñбой ÑеÑвеÑа, попÑÑки пеÑезапÑÑÑиÑÑ ÐµÐ³Ð¾ могÑÑ Ð±ÑÑÑ Ð±ÐµÐ·ÑÑпеÑнÑми, пока Ñайл
backup_labelне бÑÐ´ÐµÑ Ð²ÑÑÑнÑÑ ÑдалÑн из каÑалогаPGDATA. ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑезеÑвной копии, наобоÑоÑ, ÑдалÑÑÑ Ñайлbackup_labelкаÑегоÑиÑеÑки нелÑзÑ, инаÑе даннÑе бÑдÑÑ Ð¿Ð¾Ð²ÑежденÑ. Ðменно оÑÑÑÑÑÑвие ÑÑÑкого пониманиÑ, когда ÑледÑÐµÑ ÑдалÑÑÑ ÑÑÐ¾Ñ Ñайл, ÑвлÑеÑÑÑ ÑаÑпÑоÑÑÑанÑнной пÑиÑиной повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ñи иÑполÑзовании ÑÑого меÑода. ÐоÑÑÐ¾Ð¼Ñ Ð²Ð°Ð¶Ð½Ð¾ не оÑибиÑÑÑÑ, и ÑдалÑÑÑ ÑÑÐ¾Ñ Ñайл ÑолÑко на ÑабоÑаÑÑим ведÑÑем ÑеÑвеÑе, но ни в коем ÑлÑÑае не ÑдалÑÑÑ ÐµÐ³Ð¾ пÑи воÑÑÑановлении ÑезеÑвной копии или Ñоздании ÑезеÑвного ÑеÑвеÑа, даже еÑли Ð²Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÑеÑе впоÑледÑÑвии ÑделаÑÑ ÐµÐ³Ð¾ новÑм ведÑÑим.Снова подклÑÑиÑеÑÑ Ðº базе даннÑÑ ÐºÐ°Ðº полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами на вÑполнение pg_stop_backup (ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑзоваÑелÑ, коÑоÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð¾ пÑаво EXECUTE Ð´Ð»Ñ ÑÑой ÑÑнкÑии) и вÑполниÑе командÑ:
SELECT pg_stop_backup();
ÐÑа ÑÑнкÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑÐ¸Ñ Ñежим ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ авÑомаÑиÑеÑки пеÑеклÑÑиÑÑÑ Ð½Ð° ÑледÑÑÑий ÑÐµÐ³Ð¼ÐµÐ½Ñ WAL. ÐÑо пеÑеклÑÑение вÑполнÑеÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ñайл поÑледнего ÑегменÑа WAL, запиÑанного во вÑÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸ÑованиÑ, бÑл гоÑов к аÑÑ Ð¸Ð²Ð°Ñии.
ÐоÑле ÑÑого оÑÑанеÑÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑоваÑÑ ÑÐ°Ð¹Ð»Ñ ÑегменÑов WAL, акÑивнÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑезеÑвной копии, и пÑоÑедÑÑа ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð²ÐµÑÑена. ФÑнкÑиÑ
pg_stop_backupвозвÑаÑÐ°ÐµÑ Ñказание на Ñайл поÑледнего ÑегменÑа, коÑоÑÑй ÑÑебÑеÑÑÑ Ð´Ð»Ñ ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ набоÑа Ñайлов ÑезеÑвной копии. ÐÑли вклÑÑÑн Ñежим аÑÑ Ð¸Ð²Ð°Ñии (паÑамеÑÑarchive_mode), ÑÑнкÑиÑpg_stop_backupне завеÑÑиÑÑÑ, пока не бÑÐ´ÐµÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸Ñован поÑледний ÑегменÑ. Ð ÑÑом ÑлÑÑае ÑÐ°Ð¹Ð»Ñ Ð±ÑдÑÑ Ð·Ð°Ð°ÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ñ Ð°Ð²ÑомаÑиÑеÑки, поÑколÑÐºÑ Ñакже должна бÑÑÑ Ð½Ð°ÑÑÑоена командаarchive_command. ЧаÑе вÑего ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð±ÑÑÑÑо, но Ð¼Ñ ÑовеÑÑем наблÑдаÑÑ Ð·Ð° ÑиÑÑемой аÑÑ Ð¸Ð²Ð°Ñии и пÑовеÑÑÑÑ, не возникаÑÑ Ð»Ð¸ задеÑжки. ÐÑли аÑÑ Ð¸Ð²Ð¸Ñование оÑÑановиÑÑÑ Ð¸Ð·-за оÑибок ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð°ÑÑ Ð¸Ð²Ð°Ñии, попÑÑки аÑÑ Ð¸Ð²Ð°Ñии бÑдÑÑ Ð¿ÑодолжаÑÑÑÑ Ð´Ð¾ ÑÑпеÑного завеÑÑениÑ, и ÑолÑко Ñогда ÑезеÑвное копиÑование оконÑиÑÑÑ.ÐÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ñ ÑезеÑвное копиÑование в монополÑном Ñежиме, кÑайне важно обеÑпеÑиÑÑ Ð²Ñполнение ÑÑнкÑии
pg_stop_backupв конÑе ÑÑой пÑоÑедÑÑÑ. Ðаже в ÑлÑÑае пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑобÑÑвенно ÑезеÑвного копиÑованиÑ, напÑимеÑ, из-за Ð½ÐµÑ Ð²Ð°Ñки меÑÑа на диÑке, еÑли не вÑзваÑÑpg_stop_backup, ÑеÑÐ²ÐµÑ Ð¾ÑÑанеÑÑÑ Ð² Ñежиме копиÑованиÑ. Ð ÑезÑлÑÑаÑе, еÑли Ñайлbackup_labelне ÑдалиÑÑ, бÑÐ´ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ вÑполниÑÑ ÑледÑÑÑие пÑоÑедÑÑÑ ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ поÑвиÑÑÑ ÑгÑоза оÑказа пÑи пеÑезапÑÑке.
24.3.3.3. ÐопиÑование каÑалога даннÑÑ
ÐекоÑоÑÑе ÑÑедÑÑва ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов вÑдаÑÑ Ð¿ÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ оÑибки, еÑли ÑайлÑ, коÑоÑÑе они пÑÑаÑÑÑÑ ÑкопиÑоваÑÑ, изменÑÑÑÑÑ Ð² пÑоÑеÑÑе копиÑованиÑ. ÐÑи полÑÑении базовой ÑезеÑвной копии акÑивной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑÑо вполне ноÑмалÑно и не ÑвлÑеÑÑÑ Ð¾Ñибкой. Ðднако вам нÑжно знаÑÑ, как оÑлиÑиÑÑ Ð¾Ñибки Ñакого Ñода Ð¾Ñ ÑеалÑнÑÑ
оÑибок. ÐапÑимеÑ, некоÑоÑÑе веÑÑии 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/ (но не Ñами ÑÑи каÑалоги) можно иÑклÑÑиÑÑ Ð¸Ð· ÑезеÑвной копии, Ñак как оно бÑÐ´ÐµÑ Ð¸Ð½Ð¸ÑиализиÑовано пÑи запÑÑке главного пÑоÑеÑÑа. ÐÑли пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ stats_temp_directory ÑÑÑановлена и ÑказÑÐ²Ð°ÐµÑ Ð½Ð° подкаÑалог внÑÑÑи каÑалога даннÑÑ
, ÑодеÑжимое ÑÑого подкаÑалога Ñакже можно не копиÑоваÑÑ.
Ðз ÑезеÑвной копии можно иÑклÑÑиÑÑ Ð¸ ÑÐ°Ð¹Ð»Ñ Ð¸ подкаÑалоги Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимÑÑ Ñ pgsql_tmp. ÐÑи ÑÐ°Ð¹Ð»Ñ ÑдалÑÑÑÑÑ Ð¿Ñи запÑÑке главного пÑоÑеÑÑа, а каÑалоги ÑоздаÑÑÑÑ Ð¿Ð¾ меÑе необÑ
одимоÑÑи.
Ðз ÑезеÑвной копии могÑÑ Ð±ÑÑÑ Ð¸ÑклÑÑÐµÐ½Ñ ÑÐ°Ð¹Ð»Ñ pg_internal.init. Такие ÑÐ°Ð¹Ð»Ñ ÑодеÑÐ¶Ð°Ñ ÐºÐµÑиÑÑемÑе даннÑе оÑноÑÐµÐ½Ð¸Ñ Ð¸ вÑегда пеÑеÑÑÑаиваÑÑÑÑ Ð¿Ñи воÑÑÑановлении.
Ð Ñайл меÑки ÑезеÑвной копии запиÑÑваеÑÑÑ ÑÑÑока меÑки, Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ñи вÑзове pg_start_backup, вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑÑка ÑÑнкÑии pg_start_backup и Ð¸Ð¼Ñ Ð½Ð°ÑалÑного Ñайла WAL. Таким обÑазом, в ÑлÑÑае Ñомнений можно заглÑнÑÑÑ Ð²Ð½ÑÑÑÑ Ð°ÑÑ
ива ÑезеÑвной копии и ÑоÑно опÑеделиÑÑ, в каком ÑеанÑе ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð½ бÑл Ñоздан. Файл каÑÑÑ ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° ÑимволиÑеÑкиÑ
ÑÑÑлок, как они ÑÑÑеÑÑвÑÑÑ Ð² каÑалоге pg_tblspc/, и полнÑй пÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑимволиÑеÑкой ÑÑÑлки. ÐÑи ÑÐ°Ð¹Ð»Ñ Ð½Ðµ ÑолÑко к ваÑÐµÐ¼Ñ ÑведениÑ; иÑ
ÑÑÑеÑÑвование и ÑодеÑжание Ð²Ð°Ð¶Ð½Ñ Ð´Ð»Ñ Ð¿ÑавилÑного пÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿ÑоÑеÑÑа воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑиÑÑемÑ.
ÐÑ Ñакже можеÑе ÑоздаÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, когда ÑеÑÐ²ÐµÑ Ð¾ÑÑановлен. Ð ÑÑом ÑлÑÑае, вÑ, оÑевидно, не ÑможеÑе вÑзваÑÑ pg_start_backup или pg_stop_backup, и ÑледоваÑелÑно, вам надо бÑÐ´ÐµÑ ÑамоÑÑоÑÑелÑно как-Ñо иденÑиÑиÑиÑоваÑÑ ÑезеÑвнÑе копии и понимаÑÑ, какие ÑÐ°Ð¹Ð»Ñ WAL Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°Ð°ÑÑ
ивиÑованÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑÑно вÑÑ-Ñаки лÑÑÑе ÑледоваÑÑ Ð²ÑÑеопиÑанной пÑоÑедÑÑе непÑеÑÑвного аÑÑ
ивиÑованиÑ.
24.3.4. ÐоÑÑÑановление непÑеÑÑвной аÑÑ Ð¸Ð²Ð½Ð¾Ð¹ копии
ÐопÑÑÑим, Ñ ÑдÑее ÑлÑÑилоÑÑ, и вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ воÑÑÑановиÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· ÑезеÑвной копии. ÐоÑÑдок дейÑÑвий Ñаков:
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ , еÑли он запÑÑен.
ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð¼ÐµÑÑо Ð´Ð»Ñ ÑÑого, ÑкопиÑÑйÑе веÑÑ ÑекÑÑий каÑалог клаÑÑеÑа баз даннÑÑ Ð¸ вÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва во вÑеменнÑй каÑалог на ÑлÑÑай, еÑли они вам понадобÑÑÑÑ. УÑÑиÑе, ÑÑо ÑÑа меÑа пÑедоÑÑоÑожноÑÑи ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ñвободного меÑÑа на диÑке бÑло доÑÑаÑоÑно Ð´Ð»Ñ ÑазмеÑÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ð¹ ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑли меÑÑа недоÑÑаÑоÑно, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÐ¾Ñ ÑаниÑÑ ÐºÐ°Ðº минимÑм ÑодеÑжимое подкаÑалога
pg_walкаÑалога клаÑÑеÑа, Ñак как он Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¶ÑÑналÑ, не попавÑие в аÑÑ Ð¸Ð² пеÑед оÑÑановкой ÑиÑÑемÑ.УдалиÑе вÑе ÑÑÑеÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ Ð¸ подкаÑалоги из каÑалога клаÑÑеÑа и из коÑневÑÑ ÐºÐ°Ñалогов иÑполÑзÑемÑÑ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв.
ÐоÑÑÑановиÑе ÑÐ°Ð¹Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· ÑезеÑвной копии Ñайлов. Ðажно, ÑÑÐ¾Ð±Ñ Ñ Ð²Ð¾ÑÑÑановленнÑÑ Ñайлов бÑли пÑавилÑнÑе ÑазÑеÑÐµÐ½Ð¸Ñ Ð¸ пÑавилÑнÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ (полÑзоваÑелÑ, запÑÑкаÑÑий ÑеÑвеÑ, а не
root!). ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва, ÑбедиÑеÑÑ Ñакже, ÑÑо ÑимволÑнÑе ÑÑÑлки вpg_tblspc/воÑÑÑановилиÑÑ ÐºÐ¾ÑÑекÑно.УдалиÑе вÑе ÑÐ°Ð¹Ð»Ñ Ð¸Ð·
pg_wal/; они воÑÑÑановилиÑÑ Ð¸Ð· ÑезеÑвной копии Ñайлов и поÑÑомÑ, ÑкоÑее вÑего, бÑдÑÑ ÑÑаÑее ÑекÑÑÐ¸Ñ . ÐÑли Ð²Ñ Ð²Ð¾Ð²Ñе не аÑÑ Ð¸Ð²Ð¸Ñовалиpg_wal/, ÑоздайÑе ÑÑÐ¾Ñ ÐºÐ°Ñалог Ñ Ð¿ÑавилÑнÑми пÑавами доÑÑÑпа, но еÑли ÑÑо бÑла ÑимволÑÐ½Ð°Ñ ÑÑÑлка, воÑÑÑановиÑе еÑ.ÐÑли на Ñаге 2 Ð²Ñ ÑÐ¾Ñ Ñанили незааÑÑ Ð¸Ð²Ð¸ÑованнÑе ÑÐ°Ð¹Ð»Ñ Ñ ÑегменÑами WAL, ÑкопиÑÑйÑе Ð¸Ñ Ð²
pg_wal/. (ÐÑÑÑе вÑего именно копиÑоваÑÑ, а не пеÑемеÑаÑÑ Ð¸Ñ , ÑÑÐ¾Ð±Ñ Ñ Ð²Ð°Ñ Ð¾ÑÑалиÑÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½ÑннÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° ÑлÑÑай, еÑли Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÐµÑ Ð¿Ñоблема и вÑÑ Ð¿ÑидÑÑÑÑ Ð½Ð°ÑинаÑÑ ÑнаÑала.)УÑÑановиÑе паÑамеÑÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²
postgresql.conf(Ñм. ÐодÑаздел 18.5.4) и ÑоздайÑе Ñайл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_stop_backup. ÐÑполÑзоваÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, когда она еÑÑ ÑолÑко ÑоздавалаÑÑ, нелÑзÑ. (ЧÑÐ¾Ð±Ñ Ð²Ð¾ÑÑÑановиÑÑ Ð´Ð°Ð½Ð½Ñе на ÑÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, пÑидÑÑÑÑ Ð²ÐµÑнÑÑÑÑÑ Ðº пÑедÑдÑÑей базовой ÑезеÑвной копии и накаÑÑваÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ ÑÑой позиÑии.)
ÐÑли пÑи воÑÑÑановлении обнаÑÑживаÑÑÑÑ Ð¿Ð¾Ð²ÑеждÑннÑе даннÑе 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, в ÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки бÑÐ´ÐµÑ Ð²ÐºÐ»ÑÑÑн веÑÑ Ð¶ÑÑнал пÑедзапиÑи, необÑ
одимÑй Ð´Ð»Ñ ÐµÑ Ð¸ÑполÑзованиÑ, Ñак ÑÑо никакие оÑобÑе дейÑÑÐ²Ð¸Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ поÑÑебÑÑÑÑÑ.
ÐÑли нÑжна дополниÑелÑÐ½Ð°Ñ Ð³Ð¸Ð±ÐºÐ¾ÑÑÑ Ð² пÑоÑеÑÑе копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов, ÑоздаваÑÑ Ð¾Ð±Ð¾ÑобленнÑе гоÑÑÑие копии можно Ñакже на более низком ÑÑовне. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовиÑÑÑÑ Ðº полÑÑÐµÐ½Ð¸Ñ Ñакой копии на низком ÑÑовне, ÑÑÑановиÑе в wal_level ÑÑÐ¾Ð²ÐµÐ½Ñ replica (или вÑÑе), в archive_mode знаÑение on и наÑÑÑойÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ archive_command, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð²ÑполнÑÑÑ Ð°ÑÑ
иваÑиÑ, ÑолÑко когда ÑÑÑеÑÑвÑÐµÑ Ñайл-пеÑеклÑÑаÑелÑ. ÐапÑимеÑ:
archive_command = 'test ! -f /var/lib/pgsql/backup_in_progress || (test ! -f /var/lib/pgsql/archive/%f && cp %p /var/lib/pgsql/archive/%f)'
ÐÐ°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ð°ÑÑ
иваÑиÑ, еÑли бÑÐ´ÐµÑ ÑÑÑеÑÑвоваÑÑ Ñайл /var/lib/pgsql/backup_in_progress, а в пÑоÑивном ÑлÑÑае пÑоÑÑо веÑнÑÑ Ð½Ñлевой код возвÑаÑа (и Ñогда Postgres Pro ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑеÑабоÑаÑÑ Ð½ÐµÐ½ÑжнÑй Ñайл WAL).
ÐоÑле Ñакой подгоÑовки ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ, напÑÐ¸Ð¼ÐµÑ Ñаким ÑкÑипÑом:
touch /var/lib/pgsql/backup_in_progress
psql -c "select pg_start_backup('hot_backup');"
tar -cf /var/lib/pgsql/backup.tar /var/lib/pgsql/data/
psql -c "select pg_stop_backup();"
rm /var/lib/pgsql/backup_in_progress
tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/ СнаÑала ÑоздаÑÑÑÑ Ñайл-пеÑеклÑÑаÑÐµÐ»Ñ /var/lib/pgsql/backup_in_progress, вклÑÑаÑÑий аÑÑ
ивиÑование заполненнÑÑ
Ñайлов WAL. Ðо оконÑании ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайл-пеÑеклÑÑаÑÐµÐ»Ñ ÑдалÑеÑÑÑ. ÐаÑем зааÑÑ
ивиÑованнÑе ÑÐ°Ð¹Ð»Ñ WAL Ñоже добавлÑÑÑÑÑ Ð² ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ, Ñак ÑÑо в одном аÑÑ
иве tar оказÑваеÑÑÑ Ð¸ Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ, и вÑе ÑÑебÑемÑе ÑÐ°Ð¹Ð»Ñ WAL. ÐожалÑйÑÑа, не забÑдÑÑе добавиÑÑ Ð² ваÑи ÑкÑипÑÑ ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑабоÑÐºÑ Ð¾Ñибок.
24.3.6.2. СжаÑие жÑÑналов в аÑÑ Ð¸Ð²Ðµ
ÐÑли ÑÐ°Ð·Ð¼ÐµÑ Ð°ÑÑ Ð¸Ð²Ð° Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑое знаÑение, можно воÑполÑзоваÑÑÑÑ gzip и ÑжимаÑÑ Ð°ÑÑ Ð¸Ð²Ð½Ñе ÑайлÑ:
archive_command = 'gzip < %p > /var/lib/pgsql/archive/%f'
ÐÑи ÑÑом Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑидÑÑÑÑ Ð¸ÑполÑзоваÑÑ gunzip:
restore_command = 'gunzip < /mnt/server/archivedir/%f > %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, ÑвелиÑив паÑамеÑÑÑ Ð¸Ð½ÑеÑвала конÑÑолÑнÑÑ
ÑоÑек в ÑазÑмнÑÑ
пÑеделаÑ
.