24.2. РезеÑвное копиÑование на ÑÑовне Ñайлов #
ÐлÑÑеÑнаÑивной ÑÑÑаÑегией ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвлÑеÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенное копиÑование Ñайлов, в коÑоÑÑÑ Postgres Pro Ñ ÑÐ°Ð½Ð¸Ñ ÑодеÑжимое Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ; в Разделе 17.2 ÑаÑÑказÑваеÑÑÑ, где Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ ÑÑи ÑайлÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð»Ñбой ÑпоÑоб копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов по желаниÑ, напÑимеÑ:
tar -cf backup.tar /usr/local/pgsql/data
Ðднако ÑÑÑеÑÑвÑÑÑ Ð´Ð²Ð° огÑаниÑениÑ, коÑоÑÑе делаÑÑ ÑÑÐ¾Ñ Ð¼ÐµÑод непÑакÑиÑнÑм или как минимÑм менее пÑедпоÑÑиÑелÑнÑм по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ pg_dump:
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð½Ð°Ñ ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ñла годной, ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¾ÑÑановлен. Такие полÑмеÑÑ, как запÑеÑение вÑÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений к ÑеÑвеÑÑ, ÑабоÑаÑÑ Ð½Ðµ бÑдÑÑ (оÑÑаÑÑи поÑÐ¾Ð¼Ñ ÑÑо
tarи подобнÑе ÑÑедÑÑва не полÑÑаÑÑ Ð¼Ð³Ð½Ð¾Ð²ÐµÐ½Ð½Ñй Ñнимок ÑоÑÑоÑÐ½Ð¸Ñ Ñайловой ÑиÑÑемÑ, но еÑÑ Ð¸ поÑомÑ, ÑÑо в ÑеÑвеÑе еÑÑÑ Ð²Ð½ÑÑÑенние бÑÑеÑÑ). УзнаÑÑ Ð¾ Ñом, как оÑÑановиÑÑ ÑеÑвеÑ, можно в Разделе 17.5. ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ оÑмеÑиÑÑ, ÑÑо ÑеÑÐ²ÐµÑ Ð½Ñжно бÑÐ´ÐµÑ Ð¾ÑÑановиÑÑ Ð¸ пеÑед воÑÑÑановлением даннÑÑ .ÐÑли Ð²Ñ Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼Ð¸Ð»Ð¸ÑÑ Ñ Ð²Ð½ÑÑÑенней оÑганизаÑией Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² Ñайловой ÑиÑÑеме, Ñ Ð²Ð°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ Ñоблазн ÑкопиÑоваÑÑ Ð¸Ð»Ð¸ воÑÑÑановиÑÑ ÑолÑко оÑделÑнÑе ÑаблиÑÑ Ð¸Ð»Ð¸ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ Ð¸Ð»Ð¸ каÑÐ°Ð»Ð¾Ð³Ð°Ñ . ÐÑо не бÑÐ´ÐµÑ ÑабоÑаÑÑ, поÑÐ¾Ð¼Ñ ÑÑо инÑоÑмаÑиÑ, ÑодеÑжаÑÑÑÑÑ Ð² ÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ , нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð±ÐµÐ· Ñайлов жÑÑналов ÑÑанзакÑий,
pg_xact/*, коÑоÑÑе ÑодеÑÐ¶Ð°Ñ ÑоÑÑоÑние вÑÐµÑ ÑÑанзакÑий. Ðез ÑÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ°Ð¹Ð»Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð½ÐµÐ¿ÑÐ¸Ð³Ð¾Ð´Ð½Ñ Ðº иÑполÑзованиÑ. РазÑмееÑÑÑ Ñакже невозможно воÑÑÑановиÑÑ ÑолÑко Ð¾Ð´Ð½Ñ ÑаблиÑÑ Ð¸ ÑооÑвеÑÑÑвÑÑÑие даннÑеpg_xact, поÑÐ¾Ð¼Ñ ÑÑо в ÑезÑлÑÑаÑе неÑабоÑими ÑÑанÑÑ Ð²Ñе дÑÑгие ÑаблиÑÑ Ð² клаÑÑеÑе баз даннÑÑ . Таким обÑазом, копиÑование на ÑÑовне Ñайловой ÑиÑÑÐµÐ¼Ñ Ð±ÑÐ´ÐµÑ ÑабоÑаÑÑ, ÑолÑко еÑли вÑполнÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ðµ копиÑование и воÑÑÑановление вÑего клаÑÑеÑа баз даннÑÑ .
ÐÑÑ Ð¾Ð´Ð¸Ð½ подÑ
од к ÑезеÑÐ²Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайловой ÑиÑÑÐµÐ¼Ñ Ð·Ð°ÐºÐ»ÑÑаеÑÑÑ Ð² Ñоздании «ÑелоÑÑного Ñнимка» каÑалога Ñ Ð´Ð°Ð½Ð½Ñми, еÑли ÑÑо поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема (и Ð²Ñ ÑÐºÐ»Ð¾Ð½Ð½Ñ ÑÑиÑаÑÑ, ÑÑо ÑÑа ÑÑнкÑионалÑноÑÑÑ Ñеализована коÑÑекÑно). ТипиÑÐ½Ð°Ñ Ð¿ÑоÑедÑÑа вклÑÑÐ°ÐµÑ Ñоздание «замоÑоженного Ñнимка» Ñома, ÑодеÑжаÑего Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, заÑем копиÑование вÑего каÑалога Ñ Ð´Ð°Ð½Ð½Ñми (а не его избÑаннÑÑ
ÑаÑÑей, Ñм. вÑÑе) из ÑÑого Ñнимка на ÑÑÑÑойÑÑво ÑезеÑвного копиÑованиÑ, и Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð¾Ñвобождение замоÑоженного Ñнимка. ÐÑи ÑÑом ÑеÑÐ²ÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ пÑекÑаÑаÑÑ ÑÐ²Ð¾Ñ ÑабоÑÑ. Ðднако ÑезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ñаким ÑпоÑобом, ÑодеÑÐ¶Ð¸Ñ ÑÐ°Ð¹Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
в Ñаком ÑоÑÑоÑнии, как еÑли Ð±Ñ ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ
не бÑл оÑÑановлен ÑÑаÑнÑм обÑазом; Ñаким обÑазом, когда Ð²Ñ Ð·Ð°Ð¿ÑÑÑиÑе ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ
Ñ ÑоÑ
ÑанÑннÑми даннÑми, он бÑÐ´ÐµÑ ÑÑиÑаÑÑ, ÑÑо до ÑÑого пÑоÑеÑÑ ÑеÑвеÑа бÑл пÑеÑван аваÑийно, и бÑÐ´ÐµÑ Ð½Ð°ÐºÐ°ÑÑваÑÑ Ð¶ÑÑнал WAL. ÐÑо не пÑоблема, пÑоÑÑо имейÑе ÑÑо в Ð²Ð¸Ð´Ñ (и обÑзаÑелÑно вклÑÑиÑе ÑÐ°Ð¹Ð»Ñ WAL в ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ). ЧÑÐ¾Ð±Ñ ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑановлениÑ, можно вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CHECKPOINT пеÑед Ñозданием Ñнимка.
ÐÑли ваÑа база даннÑÑ ÑазмеÑена в неÑколÑÐºÐ¸Ñ ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ , полÑÑиÑÑ Ð² ÑоÑноÑÑи одновÑеменно замоÑоженнÑе Ñнимки вÑÐµÑ Ñомов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾. ÐапÑимеÑ, еÑли ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ жÑÑÐ½Ð°Ð»Ñ WAL Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð½Ð° ÑазнÑÑ Ð´Ð¸ÑÐºÐ°Ñ Ð¸Ð»Ð¸ ÑаблиÑнÑе пÑоÑÑÑанÑÑва ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ñ Ð² ÑазнÑÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ , ÑезеÑвное копиÑование Ñо Ñнимками Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¿Ñименимо, поÑÐ¾Ð¼Ñ ÑÑо Ñнимки Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¾Ð²ÑеменнÑми. Ð ÑÐ°ÐºÐ¸Ñ ÑиÑÑаÑиÑÑ Ð¾ÑÐµÐ½Ñ Ð²Ð½Ð¸Ð¼Ð°ÑелÑно изÑÑиÑе докÑменÑаÑÐ¸Ñ Ð¿Ð¾ ваÑей Ñайловой ÑиÑÑеме, пÑежде Ñем довеÑиÑÑÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸ ÑоглаÑованнÑÑ Ñнимков.
ÐÑли одновÑеменнÑе Ñнимки невозможнÑ, оÑÑаÑÑÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ñ Ð¾ÑÑановкой ÑеÑвеÑа баз даннÑÑ Ð½Ð° вÑемÑ, доÑÑаÑоÑное Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ Ð·Ð°Ð¼Ð¾ÑоженнÑÑ Ñнимков. ÐÑÑгое возможное ÑеÑение â полÑÑиÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð¿ÑÑÑм непÑеÑÑвного аÑÑ Ð¸Ð²Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ (Ñм. ÐодÑаздел 24.3.2), Ñакие ÑезеÑвнÑе копии не могÑÑ Ð¿Ð¾ÑÑÑадаÑÑ Ð¾Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ñайловой ÑиÑÑÐµÐ¼Ñ Ð² пÑоÑеÑÑе ÑезеÑвного копиÑованиÑ. ÐÐ»Ñ ÑÑого ÑÑебÑеÑÑÑ Ð²ÐºÐ»ÑÑиÑÑ Ð½ÐµÐ¿ÑеÑÑвное аÑÑ Ð¸Ð²Ð¸Ñование ÑолÑко на вÑÐµÐ¼Ñ ÑезеÑвного копиÑованиÑ; Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑименÑеÑÑÑ Ð¿ÑоÑедÑÑа воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· непÑеÑÑвного аÑÑ Ð¸Ð²Ð° (ÐодÑаздел 24.3.5).
ÐÑÑ Ð¾Ð´Ð¸Ð½ ваÑÐ¸Ð°Ð½Ñ â копиÑоваÑÑ ÑодеÑжимое Ñайловой ÑиÑÑÐµÐ¼Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ rsync. ÐÐ»Ñ ÑÑого rsync запÑÑкаеÑÑÑ ÑнаÑала во вÑÐµÐ¼Ñ ÑабоÑÑ ÑеÑвеÑа баз даннÑÑ
, а заÑем ÑеÑÐ²ÐµÑ Ð¾ÑÑанавливаеÑÑÑ Ð½Ð° вÑемÑ, доÑÑаÑоÑное Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка rsync --checksum. (ÐлÑÑ --checksum необÑ
одим, поÑÐ¾Ð¼Ñ ÑÑо rsync ÑазлиÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ ÑолÑко Ñ ÑоÑноÑÑÑÑ Ð´Ð¾ ÑекÑнд.) Ðо вÑоÑой Ñаз rsync оÑÑабоÑÐ°ÐµÑ Ð±ÑÑÑÑее, Ñем в пеÑвÑй, поÑÐ¾Ð¼Ñ ÑÑо ÑкопиÑоваÑÑ Ð½Ð°Ð´Ð¾ бÑÐ´ÐµÑ Ð¾ÑноÑиÑелÑно немного даннÑÑ
; и в иÑоге бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑÑен ÑоглаÑованнÑй ÑезÑлÑÑаÑ, Ñак как ÑеÑÐ²ÐµÑ Ð±Ñл оÑÑановлен. ÐаннÑй меÑод позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° ÑÑовне Ñайловой ÑиÑÑÐµÐ¼Ñ Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑм вÑеменем пÑоÑÑоÑ.
ÐбÑаÑиÑе внимание, ÑÑо ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾Ð¿Ð¸Ð¸ на ÑÑовне Ñайлов обÑÑно болÑÑе, Ñем дампа SQL. (ÐÑогÑамме pg_dump не нÑжно, напÑимеÑ, запиÑÑваÑÑ ÑодеÑжимое индекÑов, доÑÑаÑоÑно команд Ð´Ð»Ñ Ð¸Ñ Ð¿ÐµÑеÑозданиÑ). Ðднако копиÑование на ÑÑовне Ñайлов Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð±ÑÑÑÑее.