20.14. ÐбÑабоÑка оÑибок #
exit_on_error(boolean) #ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн, лÑÐ±Ð°Ñ Ð¾Ñибка пÑиведÑÑ Ðº пÑеÑÑÐ²Ð°Ð½Ð¸Ñ ÑекÑÑего ÑеанÑа. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½ оÑклÑÑÑн, Ñак ÑÑо ÑÐµÐ°Ð½Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑеÑÑваÑÑÑÑ ÑолÑко пÑи кÑиÑиÑеÑÐºÐ¸Ñ Ð¾ÑÐ¸Ð±ÐºÐ°Ñ .
restart_after_crash(boolean) #Ðогда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑÑн (ÑÑо ÑоÑÑоÑние по ÑмолÑаниÑ), PostgreSQL бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пеÑезагÑÑжаÑÑÑÑ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ ÑеÑвеÑного пÑоÑеÑÑа. Такой ваÑÐ¸Ð°Ð½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¾Ð±ÐµÑпеÑиÑÑ Ð¼Ð°ÐºÑималÑнÑÑ ÑÑÐµÐ¿ÐµÐ½Ñ Ð´Ð¾ÑÑÑпноÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ . Ðднако в некоÑоÑÑÑ Ð¾Ð±ÑÑоÑÑелÑÑÑÐ²Ð°Ñ , напÑимеÑ, когда PostgreSQL ÑпÑавлÑеÑÑÑ ÐºÐ»Ð°ÑÑеÑнÑм ÐÐ, ÑакÑÑ Ð¿ÐµÑезагÑÑÐ·ÐºÑ Ð»ÑÑÑе оÑклÑÑиÑÑ, ÑÑÐ¾Ð±Ñ ÐºÐ»Ð°ÑÑеÑное ÐРмогло вмеÑаÑÑÑÑ Ð¸ вÑполниÑÑ, возможно, более Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑие дейÑÑвиÑ.
ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.data_sync_retry(boolean) #ÐÑи вÑклÑÑенном знаÑении ÑÑого паÑамеÑÑа (по ÑмолÑаниÑ) PostgreSQL бÑÐ´ÐµÑ Ð²ÑдаваÑÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑÑÐ¾Ð²Ð½Ñ PANIC в ÑлÑÑае неÑдаÑи пÑи попÑÑке ÑÐ¾Ñ ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑннÑе даннÑе в Ñайловой ÑиÑÑеме. Ð ÑезÑлÑÑаÑе ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ Ð¾ÑÑановиÑÑÑ Ð°Ð²Ð°Ñийно. ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пÑи запÑÑке ÑеÑвеÑа.
РнекоÑоÑÑÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ ÑоÑÑоÑние даннÑÑ Ð² кеÑе внÑÑÑи ÑдÑа оказÑваеÑÑÑ Ð½ÐµÐ¾Ð¿ÑеделÑннÑм пÑи оÑибке запиÑи. Ð ÐºÐ°ÐºÐ¸Ñ -Ñо ÑлÑÑаÑÑ ÑÑи даннÑе могÑÑ Ð±ÑÑÑ Ð¿ÑоÑÑо ÑÑеÑÑнÑ, и повÑоÑÑÑÑ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð·Ð°Ð¿Ð¸Ñи небезопаÑно: вÑоÑÐ°Ñ Ð¿Ð¾Ð¿ÑÑка Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑÑпеÑной, Ñогда как на деле даннÑе не ÑÐ¾Ñ ÑаненÑ. Ð ÑÑÐ¸Ñ Ð¾Ð±ÑÑоÑÑелÑÑÑÐ²Ð°Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑй ÑпоÑоб избежаÑÑ Ð¿Ð¾ÑеÑи даннÑÑ â воÑÑÑановиÑÑ Ð¸Ñ Ð¸Ð· WAL поÑле Ñакого ÑбоÑ, но пеÑед ÑÑим желаÑелÑно вÑÑÑниÑÑ Ð¿ÑиÑÐ¸Ð½Ñ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¸, возможно, замениÑÑ Ð½ÐµÑабоÑее обоÑÑдование.
ÐÑли вклÑÑиÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, PostgreSQL в ÑлÑÑае ÑÐ±Ð¾Ñ Ð¿Ñи запиÑи вÑдаÑÑ Ð¾ÑибкÑ, но пÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ ÑабоÑÑ Ð² ÑаÑÑÑÑе повÑоÑиÑÑ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ñи поÑледÑÑÑей конÑÑолÑной ÑоÑке. ÐклÑÑаÑÑ ÐµÐ³Ð¾ ÑледÑеÑ, ÑолÑко еÑли доÑÑовеÑно извеÑÑно, как поÑÑÑÐ¿Ð°ÐµÑ ÑиÑÑема Ñ Ð´Ð°Ð½Ð½Ñми в бÑÑеÑе пÑи оÑибке запиÑи.
recovery_init_sync_method(enum) #Со знаÑением
fsync(ÑÑо знаÑение по ÑмолÑаниÑ), PostgreSQL бÑÐ´ÐµÑ ÑекÑÑÑивно оÑкÑÑваÑÑ Ð¸ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ð²Ñе ÑÐ°Ð¹Ð»Ñ Ð² каÑалоге даннÑÑ Ð´Ð¾ наÑала воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ. ÐоиÑк Ñайлов бÑÐ´ÐµÑ Ð¾ÑÑÑеÑÑвлÑÑÑÑÑ Ð¿Ð¾ ÑимволиÑеÑким ÑÑÑлкам Ð´Ð»Ñ ÐºÐ°Ñалога WAL и каждого наÑÑÑоенного ÑаблиÑного пÑоÑÑÑанÑÑва (но не дÑÑгим ÑимволиÑеÑким ÑÑÑлкам). ÐÑо делаеÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо вÑе ÑÐ°Ð¹Ð»Ñ WAL и даннÑÑ Ð½Ð°Ð´Ñжно ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ñ Ð½Ð° диÑке пеÑед воÑпÑоизведением изменений, и пÑименÑеÑÑÑ Ð¿Ñи запÑÑке клаÑÑеÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÑй не бÑл оÑÑановлен ÑÑаÑнÑм обÑазом (ÑÑо каÑаеÑÑÑ Ð¸ копий ÑозданнÑÑ Ð¿ÑогÑаммой pg_basebackup).Ð Linux возможен ваÑианÑ
syncfs, когда Ð¾Ñ ÐС ÑÑебÑеÑÑÑ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ñеликом каждÑÑ Ð¸Ð· ÑайловÑÑ ÑиÑÑем, ÑодеÑжаÑÐ¸Ñ ÐºÐ°Ñалог даннÑÑ , ÑÐ°Ð¹Ð»Ñ WAL и ÑаблиÑнÑе пÑоÑÑÑанÑÑва (но не Ñе ÑайловÑе ÑиÑÑемÑ, коÑоÑÑе подклÑÑÐµÐ½Ñ Ð¿Ð¾ ÑимволиÑеÑким ÑÑÑлкам). ÐÑи ÑÑом не нÑжно оÑкÑÑваÑÑ ÐºÐ°Ð¶Ð´Ñй оÑделÑнÑй Ñайл, поÑÑÐ¾Ð¼Ñ Ð´Ð°Ð½Ð½Ñй ваÑÐ¸Ð°Ð½Ñ Ð¼Ð¾Ð¶ÐµÑ ÑабоÑаÑÑ Ð³Ð¾Ñаздо бÑÑÑÑее, Ñемfsync. С дÑÑгой ÑÑоÑонÑ, он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ, еÑли ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ ÑовмеÑÑно иÑполÑзÑÑÑ Ð¸ дÑÑгие пÑиложениÑ, изменÑÑÑие множеÑÑво Ñайлов, поÑколÑÐºÑ ÑÑи ÑÐ°Ð¹Ð»Ñ Ñакже бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð½Ð° диÑк. Ðолее Ñого, Linux веÑÑий до 5.8 Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ вÑегда ÑообÑаÑÑ PostgreSQL об оÑÐ¸Ð±ÐºÐ°Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода, пÑоизоÑедÑÐ¸Ñ Ð¿Ñи запиÑи даннÑÑ Ð½Ð° диÑк, Ñак ÑÑо ÑооÑвеÑÑÑвÑÑÑие ÑообÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑвидеÑÑ ÑолÑко в жÑÑÐ½Ð°Ð»Ð°Ñ ÑдÑа.ÐадаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко в
postgresql.confили в командной ÑÑÑоке пÑи запÑÑке ÑеÑвеÑа.