pg_upgrade
pg_upgrade â обновиÑÑ ÑкземплÑÑ ÑеÑвеÑа Postgres Pro
СинÑакÑиÑ
pg_upgrade -b ÑÑаÑÑй_каÑалог_bin [-B новÑй_каÑалог_bin] -d ÑÑаÑÑй_каÑалог_конÑигÑÑаÑии -D новÑй_каÑалог_конÑигÑÑаÑии [паÑамеÑÑ...]
ÐпиÑание
ÐÑогÑамма pg_upgrade (Ñанее назÑвавÑаÑÑÑ pg_migrator) позволÑÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð´Ð°Ð½Ð½Ñе в каÑалоге Ð±Ð°Ð·Ñ PostgreSQL или Postgres Pro до поÑледней оÑновной веÑÑии Postgres Pro без опеÑаÑии вÑгÑÑзки/воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , обÑÑно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ пÑи обновлениÑÑ Ð¾Ñновной веÑÑии, напÑимеÑ, пÑи пеÑÐµÑ Ð¾Ð´Ðµ Ð¾Ñ 12.14 к 13.10 или Ð¾Ñ 14.9 к 15.5. ÐÑи дейÑÑÐ²Ð¸Ñ Ð½Ðµ ÑÑебÑÑÑÑÑ Ð¿Ñи ÑÑÑановке коÑÑекÑиÑÑÑÑей веÑÑии, напÑимеÑ, пÑи пеÑÐµÑ Ð¾Ð´Ðµ Ð¾Ñ 12.7 к 12.8 или Ð¾Ñ 14.1 к 14.5.
С вÑÑ Ð¾Ð´Ð¾Ð¼ новÑÑ Ð¾ÑновнÑÑ Ð²ÐµÑÑий в Postgres Pro ÑегÑлÑÑно добавлÑÑÑÑÑ Ð½Ð¾Ð²Ñе возможноÑÑи, коÑоÑÑе ÑаÑÑо менÑÑÑ ÑÑÑÑкÑÑÑÑ ÑиÑÑемнÑÑ ÑаблиÑ, но внÑÑÑенний ÑоÑÐ¼Ð°Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑеÑÑÑ Ñедко. УÑиÑÑÐ²Ð°Ñ ÑÑÐ¾Ñ ÑакÑ, pg_upgrade позволÑÐµÑ Ð²ÑполниÑÑ Ð±ÑÑÑÑое обновление, ÑÐ¾Ð·Ð´Ð°Ð²Ð°Ñ ÑиÑÑемнÑе ÑаблиÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾, но ÑÐ¾Ñ ÑанÑÑ ÑÑаÑÑе ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ . ÐÑли пÑи обновлении оÑновной веÑÑии ÑоÑÐ¼Ð°Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑ Ñак, ÑÑо даннÑе в ÑÑаÑом ÑоÑмаÑе окажÑÑÑÑ Ð½ÐµÑиÑаемÑми, pg_upgrade не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑоизвеÑÑи Ñакое обновление. (СообÑеÑÑво ÑазÑабоÑÑиков поÑÑаÑаеÑÑÑ Ð½Ðµ допÑÑÑиÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ ÑиÑÑаÑий.)
ÐÑогÑамма pg_upgrade Ð´ÐµÐ»Ð°ÐµÑ Ð²ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ Ð² Ñом, ÑÑо ÑÑаÑÑй и новÑй клаÑÑеÑÑ Ð´Ð²Ð¾Ð¸Ñно-ÑовмеÑÑимÑ, в ÑаÑÑноÑÑи пÑовеÑÑÑ Ð¿Ð°ÑамеÑÑÑ Ð²Ñемени компилÑÑии и ÑазÑÑдноÑÑÑ (32/64 биÑа) иÑполнÑемÑÑ Ñайлов. Ðажно, ÑÑÐ¾Ð±Ñ Ð¸ вÑе внеÑние модÑли Ñоже бÑли двоиÑно-ÑовмеÑÑимÑми, Ñ Ð¾ÑÑ ÑÑо pg_upgrade пÑовеÑиÑÑ Ð½Ðµ можеÑ.
pg_upgrade поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ Ñ Ð²ÐµÑÑии 9.2.X и новее до ÑекÑÑей оÑновной веÑÑии Postgres Pro, вклÑÑÐ°Ñ Ð±ÐµÑа-вÑпÑÑки и ÑбоÑки Ñнимков кода.
ÐÑедÑпÑеждение
ÐÑи обновлении клаÑÑеÑа вÑполнÑеÑÑÑ Ð¿ÑоизволÑнÑй код по вÑбоÑÑ ÑÑпеÑполÑзоваÑелей иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑоÑки. ÐеÑед обновлением ÑбедиÑеÑÑ, ÑÑо ÑÑпеÑполÑзоваÑели иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑоÑки ÑвлÑÑÑÑÑ Ð´Ð¾Ð²ÐµÑеннÑми.
ÐаÑамеÑÑÑ
pg_upgrade пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие аÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки:
-bкаÑалог_bin--old-bindir=каÑалог_binкаÑалог Ñ Ð¸ÑполнÑемÑми Ñайлами ÑÑаÑой веÑÑии Postgres Pro; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGBINOLD-BкаÑалог_bin--new-bindir=каÑалог_binкаÑалог Ñ Ð¸ÑполнÑемÑми Ñайлами новой веÑÑии Postgres Pro, по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо каÑалог, в коÑоÑом ÑаÑполагаеÑÑÑ pg_upgrade; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGBINNEW-c--checkÑолÑко пÑовеÑиÑÑ ÐºÐ»Ð°ÑÑеÑÑ, не изменÑÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ даннÑе
-dкаÑалог_конÑигÑÑаÑии--old-datadir=каÑалог_конÑигÑÑаÑиикаÑалог конÑигÑÑаÑии ÑÑаÑого клаÑÑеÑа; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGDATAOLD-DкаÑалог_конÑигÑÑаÑии--new-datadir=каÑалог_конÑигÑÑаÑиикаÑалог конÑигÑÑаÑии нового клаÑÑеÑа; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGDATANEW-jÑиÑло_заданий--jobs=ÑиÑло_заданийÑиÑло одновÑеменно задейÑÑвÑемÑÑ Ð¿ÑоÑеÑÑов или поÑоков
-k--linkиÑполÑзоваÑÑ Ð¶ÑÑÑкие ÑÑÑлки вмеÑÑо копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов в новÑй клаÑÑеÑ
-N--no-syncÐо ÑмолÑаниÑ
pg_upgradeждÑÑ, пока вÑе ÑÐ°Ð¹Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñнного клаÑÑеÑа не бÑдÑÑ Ð½Ð°Ð´Ñжно запиÑÐ°Ð½Ñ Ð½Ð° диÑк. С даннÑм паÑамеÑÑомpg_upgradeзавеÑÑаеÑÑÑ Ð±ÑÑÑÑее, без ожиданиÑ, но в ÑлÑÑае поÑледÑÑÑего ÑÐ±Ð¾Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ ÐºÐ°Ñалог даннÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¸ÑпоÑÑеннÑм. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ пÑи ÑеÑÑиÑовании; в пÑоизводÑÑвенной ÑÑеде пÑименÑÑÑ ÐµÐ³Ð¾ не ÑледÑеÑ.-oпаÑамеÑÑÑ--old-optionsпаÑамеÑÑÑпаÑамеÑÑÑ, пеÑедаваемÑе непоÑÑедÑÑвенно ÑÑаÑой пÑогÑамме
postgres; неÑколÑко паÑамеÑÑов ÑкладÑваÑÑÑÑ Ð²Ð¼ÐµÑÑе-OпаÑамеÑÑÑ--new-optionsпаÑамеÑÑÑпаÑамеÑÑÑ, пеÑедаваемÑе непоÑÑедÑÑвенно новой пÑогÑамме
postgres; неÑколÑко паÑамеÑÑов ÑкладÑваÑÑÑÑ Ð²Ð¼ÐµÑÑе-pпоÑÑ--old-port=поÑÑÐ½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа ÑÑаÑого клаÑÑеÑа; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGPORTOLD-PпоÑÑ--new-port=поÑÑÐ½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа нового клаÑÑеÑа; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGPORTNEW-r--retainÑÐ¾Ñ ÑаниÑÑ SQL и жÑÑÐ½Ð°Ð»Ñ ÑообÑений даже пÑи ÑÑпеÑном завеÑÑении
-sкаÑалог--socketdir=каÑалогкаÑалог, в коÑоÑом бÑÐ´ÐµÑ ÑоздаваÑÑ ÑокеÑÑ Ð¿ÑоÑеÑÑ postmaster во вÑÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ; по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑбиÑаеÑÑÑ ÑекÑÑий ÑабоÑий каÑалог; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGSOCKETDIR-UимÑ_полÑзоваÑелÑ--username=имÑ_полÑзоваÑелÑÐ¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑÑÑановивÑего клаÑÑеÑ; пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑжениÑ
PGUSER-v--verboseвклÑÑиÑÑ Ð¿Ð¾Ð´ÑобнÑе внÑÑÑенние ÑообÑениÑ
-V--versionпоказаÑÑ Ð²ÐµÑÑиÑ, а заÑем завеÑÑиÑÑÑÑ
--cloneÐÑполÑзоваÑÑ ÑÑÑекÑивное клониÑование Ñайлов (в ÑÑде ÑиÑÑем ÑÑо назÑваеÑÑÑ Â«reflink») вмеÑÑо копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñайлов в новÑй клаÑÑеÑ. Ð ÑезÑлÑÑаÑе ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð³ÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ Ð¿ÑакÑиÑеÑки мгновенно, как и Ñ Ð¸ÑполÑзованием
-k/--link, но поÑледÑÑÑие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ бÑдÑÑ Ð·Ð°ÑÑагиваÑÑ ÑÑаÑÑй клаÑÑеÑ.ÐлониÑование Ñайлов поддеÑживаеÑÑÑ Ð½Ðµ во вÑÐµÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Ð¸ ÑолÑко Ñ Ð¾Ð¿ÑеделÑннÑми ÑайловÑми ÑиÑÑемами. ÐÑли ÑÑÐ¾Ñ Ñежим вÑбÑан, но клониÑование не поддеÑживаеÑÑÑ, пÑи вÑполнении pg_upgrade пÑоизойдÑÑ Ð¾Ñибка. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð½Ð¾ поддеÑживаеÑÑÑ Ð² Linux (Ñ ÑдÑом 4.5 или новее) Ñ Btrfs и XFS (еÑли ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема бÑла Ñоздана Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой reflink), а Ñакже в macOS Ñ APFS.
--copyÐопиÑоваÑÑ ÑÐ°Ð¹Ð»Ñ Ð² новÑй клаÑÑеÑ. ÐÑо поведение по ÑмолÑаниÑ. (См. Ñакже
--linkи--clone.)--copy-file-rangeÐÑполÑзоваÑÑ ÑиÑÑемнÑй вÑзов
copy_file_rangeÐ´Ð»Ñ ÑÑÑекÑивного копиÑованиÑ. РнекоÑоÑÑÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ ÑезÑлÑÑаÑÑ Ð±ÑдÑÑ ÑÑ Ð¾Ð¶Ð¸ Ñ--clone, позволÑÑ ÑовмеÑÑное иÑполÑзование ÑизиÑеÑÐºÐ¸Ñ Ð´Ð¸ÑковÑÑ Ð±Ð»Ð¾ÐºÐ¾Ð², в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº на дÑÑÐ³Ð¸Ñ Ð¼Ð¾Ð³ÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸, но по опÑимизиÑÐ¾Ð²Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿ÑÑи. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ Ð² Linux и FreeBSD.--sync-method=меÑодСо знаÑением
fsync(по ÑмолÑаниÑ)pg_upgradeÑекÑÑÑивно оÑкÑÐ¾ÐµÑ Ð¸ ÑÐ¸Ð½Ñ ÑонизиÑÑÐµÑ Ð²Ñе ÑÐ°Ð¹Ð»Ñ Ð² каÑалоге даннÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñнного клаÑÑеÑа. ÐоиÑк Ñайлов бÑÐ´ÐµÑ Ð¾ÑÑÑеÑÑвлÑÑÑÑÑ Ð¿Ð¾ ÑимволиÑеÑким ÑÑÑлкам Ð´Ð»Ñ ÐºÐ°Ñалога WAL и каждого наÑÑÑоенного ÑаблиÑного пÑоÑÑÑанÑÑва.Ð Linux возможен ваÑианÑ
syncfs, когда Ð¾Ñ ÐС ÑÑебÑеÑÑÑ ÑÐ¸Ð½Ñ ÑонизиÑоваÑÑ Ñеликом каждÑÑ Ð¸Ð· ÑайловÑÑ ÑиÑÑем, ÑодеÑжаÑÐ¸Ñ ÐºÐ°Ñалог даннÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñнного клаÑÑеÑа, ÑÐ°Ð¹Ð»Ñ WAL и ÑаблиÑнÑе пÑоÑÑÑанÑÑва. Ðолее подÑобно оÑобенноÑÑи иÑполÑзованиÑsyncfsопиÑÐ°Ð½Ñ Ð² recovery_init_sync_method.Ð Ñежиме
--no-syncÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ оказÑÐ²Ð°ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ влиÑниÑ.-?--helpпоказаÑÑ ÑпÑавкÑ, а заÑем завеÑÑиÑÑÑÑ
ÐÑполÑзование
Ðалее опиÑан план Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¸ÑполÑзованием pg_upgrade:
ÐеÑемеÑÑиÑÑ ÑÑаÑÑй клаÑÑÐµÑ (необÑзаÑелÑно)
ÐÑли Ð²Ð°Ñ ÐºÐ°Ñалог инÑÑаллÑÑии пÑивÑзан к веÑÑии, напÑимеÑ,
/opt/PostgreSQL/17, пеÑемеÑаÑÑ ÐµÐ³Ð¾ не ÑÑебÑеÑÑÑ. ÐÑе гÑаÑиÑеÑкие инÑÑаллÑÑоÑÑ Ð²ÑбиÑаÑÑ Ð¿Ñи ÑÑÑановке каÑалоги, пÑивÑзаннÑе к веÑÑии.ÐÑли Ð²Ð°Ñ ÐºÐ°Ñалог инÑÑаллÑÑии не пÑивÑзан к веÑÑии, напÑимеÑ
/usr/local/pgsql, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пеÑемеÑÑиÑÑ ÐºÐ°Ñалог ÑекÑÑей инÑÑаллÑÑии Postgres Pro, ÑÑÐ¾Ð±Ñ Ð¾Ð½ не конÑликÑовал Ñ Ð½Ð¾Ð²Ð¾Ð¹ инÑÑаллÑÑией Postgres Pro. Ðогда ÑекÑÑий ÑеÑÐ²ÐµÑ Postgres Pro оÑклÑÑÑн, каÑалог ÑÑой инÑÑаллÑÑии Postgres Pro можно безопаÑно пеÑемеÑÑиÑÑ; еÑли ÑÑаÑÑй каÑалог/usr/local/pgsql, его можно пеÑеименоваÑÑ, вÑполнив:mv /usr/local/pgsql /usr/local/pgsql.old
УÑÑановиÑÑ Ð½Ð¾Ð²Ñе иÑполнÑемÑе ÑÐ°Ð¹Ð»Ñ Postgres Pro
УÑÑановиÑе новÑе иÑполнÑемÑе ÑÐ°Ð¹Ð»Ñ ÑеÑвеÑа и вÑпомогаÑелÑнÑе ÑайлÑ. ÐÑогÑамма pg_upgrade вклÑÑена в инÑÑаллÑÑÐ¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.
ÐниÑиализиÑоваÑÑ Ð½Ð¾Ð²Ñй клаÑÑÐµÑ Postgres Pro
ÐниÑиализиÑÑйÑе новÑй клаÑÑеÑ, иÑполÑзÑÑ
initdb. ÐÑи ÑÑом Ñак же Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑказаÑÑ Ñлагиinitdb, ÑовмеÑÑимÑе Ñ Ñлагами в ÑÑаÑом клаÑÑеÑе. Ðногие гоÑовÑе инÑÑаллÑÑоÑÑ Ð²ÑполнÑÑÑ ÑÑо дейÑÑвие авÑомаÑиÑеÑки. ÐапÑÑкаÑÑ Ð½Ð¾Ð²Ñй клаÑÑÐµÑ Ð½Ðµ ÑÑебÑеÑÑÑ.УÑÑановиÑÑ ÑазделÑемÑе обÑекÑнÑе ÑÐ°Ð¹Ð»Ñ ÑаÑÑиÑениÑ
Ðногие ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¸ полÑзоваÑелÑÑкие модÑли, как из
contrib, Ñак и из дÑÑÐ³Ð¸Ñ Ð¸ÑÑоÑников, иÑполÑзÑÑÑ ÑазделÑемÑе обÑекÑнÑе ÑÐ°Ð¹Ð»Ñ (или библиоÑеки DLL), напÑимеÑ,pgcrypto.so. ÐÑли они иÑполÑзовалиÑÑ Ð² ÑÑаÑом клаÑÑеÑе, ÑазделÑемÑе обÑекÑнÑе ÑайлÑ, ÑооÑвеÑÑÑвÑÑÑие Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¸ÑполнÑÐµÐ¼Ð¾Ð¼Ñ ÑÐ°Ð¹Ð»Ñ ÑеÑвеÑа, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² новом клаÑÑеÑе, обÑÑно ÑÑедÑÑвами опеÑаÑионной ÑиÑÑемÑ. Ðе загÑÑжайÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼Ñ, напÑимеÑ, вÑполнÑÑCREATE EXTENSION pgcrypto, поÑÐ¾Ð¼Ñ ÑÑо они бÑдÑÑ ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð¸Ð· ÑÑаÑого клаÑÑеÑа. ÐÑли доÑÑÑÐ¿Ð½Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑаÑÑиÑений, pg_upgrade ÑообÑÐ¸Ñ Ð¾Ð± ÑÑом и ÑоздаÑÑ ÑкÑипÑ, коÑоÑÑй можно бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑÑиÑÑ Ð¿Ð¾Ð·Ð¶Ðµ, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÑÑи ÑаÑÑиÑениÑ.СкопиÑоваÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие ÑÐ°Ð¹Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑекÑÑового поиÑка
СкопиÑоваÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие ÑÐ°Ð¹Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑекÑÑового поиÑка (ÑловаÑи, ÑезаÑÑÑÑÑ, ÑпиÑки Ñинонимов и ÑÑоп-Ñлов) из ÑÑаÑого клаÑÑеÑа в новÑй.
ÐаÑÑÑоиÑÑ Ð°ÑÑенÑиÑикаÑиÑ
ÐÑогÑамма
pg_upgradeбÑÐ´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº Ð½Ð¾Ð²Ð¾Ð¼Ñ Ð¸ ÑÑаÑÐ¾Ð¼Ñ ÑеÑвеÑÑ Ð½ÐµÑколÑко Ñаз, Ñак ÑÑо Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ÑÑÑановиÑÑ Ñежим аÑÑенÑиÑикаÑииpeerвpg_hba.confили иÑполÑзоваÑÑ Ñайл~/.pgpass(Ñм. Раздел 32.16).ÐодгоÑовиÑÑÑÑ Ðº Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑбликÑÑÑего ÑеÑвеÑа
ÐÑогÑамма pg_upgrade пÑÑаеÑÑÑ Ð¼Ð¸Ð³ÑиÑоваÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие ÑлоÑÑ. ÐÑо ÑÑÑÑанÑÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð¾Ð¿ÑеделÑÑÑ Ñе же логиÑеÑкие ÑлоÑÑ Ð½Ð° новом пÑбликÑÑÑем ÑеÑвеÑе вÑÑÑнÑÑ. ÐигÑаÑÐ¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ ÑлоÑов поддеÑживаеÑÑÑ ÑолÑко в ÑлÑÑае, еÑли ÑÑаÑÑй клаÑÑÐµÑ Ð²ÐµÑÑии 17.0 или вÑÑе. ÐогиÑеÑкие ÑлоÑÑ Ð½Ð° клаÑÑеÑÐ°Ñ Ð´Ð¾ веÑÑии 17.0 бÑдÑÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑÑÑ Ð±ÐµÐ· ÑведомлениÑ.
ÐÑежде Ñем наÑаÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ пÑбликÑÑÑего клаÑÑеÑа, ÑбедиÑеÑÑ, ÑÑо подпиÑка вÑеменно оÑклÑÑена, вÑполнив командÑ
ALTER SUBSCRIPTION ... DISABLE. ÐклÑÑиÑе подпиÑÐºÑ Ð¿Ð¾Ñле завеÑÑÐµÐ½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ.ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вÑполниÑÑ ÑÑд пÑедваÑиÑелÑнÑÑ ÑÑебований, ÑÑÐ¾Ð±Ñ Ð¿ÑогÑамма pg_upgrade Ñмогла обновиÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие ÑлоÑÑ. РпÑоÑивном ÑлÑÑае бÑÐ´ÐµÑ Ð²ÑдаваÑÑÑÑ Ð¾Ñибка.
Рновом клаÑÑеÑе
wal_levelдолжен имеÑÑ Ð·Ð½Ð°Ñениеlogical.Рновом клаÑÑеÑе паÑамеÑÑ
max_replication_slotsдолжен имеÑÑ Ð·Ð½Ð°Ñение, болÑÑее или Ñавное ÑиÑÐ»Ñ ÑлоÑов в ÑÑаÑом клаÑÑеÑе.ÐодÑли вÑвода, на коÑоÑÑе ÑÑÑлаÑÑÑÑ ÑлоÑÑ Ð½Ð° ÑÑаÑом клаÑÑеÑе, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² каÑалоге Ñ Ð¸ÑполнÑемÑми Ñайлами новой веÑÑии Postgres Pro.
Ð ÑÑаÑом клаÑÑеÑе вÑе ÑÑанзакÑии и ÑообÑÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑедавалиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑикам.
ÐÑе ÑлоÑÑ Ð² ÑÑаÑом клаÑÑеÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑÑÑ, Ñ. е. не должно бÑÑÑ ÑлоÑов, в коÑоÑÑÑ pg_replication_slots.
conflictingне Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue.Рновом клаÑÑеÑе не должно бÑÑÑ Ð¿Ð¾ÑÑоÑннÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ ÑлоÑов, Ñ. е. не должно бÑÑÑ ÑлоÑов, в коÑоÑÑÑ pg_replication_slots.
temporaryÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеfalse.
ÐодгоÑовиÑÑÑÑ Ðº Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика
ÐаÑÑÑойÑе конÑигÑÑаÑии подпиÑÑика на новом подпиÑÑике. pg_upgrade пÑÑаеÑÑÑ Ð¼Ð¸Ð³ÑиÑоваÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑи подпиÑки, вклÑÑÐ°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑаблиÑе подпиÑки, пÑедÑÑавленнÑÑ Ð² ÑиÑÑемном каÑалоге pg_subscription_rel, и об иÑÑоÑнике ÑепликаÑии подпиÑки. Таким обÑазом логиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ подпиÑÑика Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑодолжаÑÑÑÑ Ñ Ñого меÑÑа, где оÑÑановилÑÑ ÑÑаÑÑй. ÐигÑаÑÐ¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑей подпиÑки поддеÑживаеÑÑÑ ÑолÑко в ÑлÑÑае, еÑли ÑÑаÑÑй клаÑÑÐµÑ Ð²ÐµÑÑии 17.0 или вÑÑе. ÐавиÑимоÑÑи подпиÑки на клаÑÑеÑÐ°Ñ Ð´Ð¾ веÑÑии 17.0 бÑдÑÑ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑÑÑ Ð±ÐµÐ· ÑведомлениÑ.
ЧÑÐ¾Ð±Ñ Ð¿ÑогÑамма pg_upgrade Ñмогла обновиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñки, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполнÑÑÑÑÑ Ð¾Ð¿ÑеделÑннÑе ÑÑловиÑ. РпÑоÑивном ÑлÑÑае бÑÐ´ÐµÑ Ð²ÑдаваÑÑÑÑ Ð¾Ñибка.
ÐÑе ÑаблиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñки в ÑÑаÑом подпиÑÑике Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð² ÑоÑÑоÑнии
i(initialize, иниÑиализаÑиÑ) илиr(ready, гоÑовноÑÑÑ). ÐÑо можно пÑовеÑиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ pg_subscription_rel.srsubstate.Ð ÑÑаÑом клаÑÑеÑе должна бÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¾Ð± иÑÑоÑнике ÑепликаÑии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ из подпиÑок. ÐÑо можно пÑовеÑиÑÑ Ð² ÑиÑÑемнÑÑ ÑаблиÑÐ°Ñ pg_subscription и pg_replication_origin.
Рновом клаÑÑеÑе паÑамеÑÑ
max_replication_slotsдолжен имеÑÑ Ð·Ð½Ð°Ñение, болÑÑее или Ñавное ÑиÑÐ»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок в ÑÑаÑом.
ÐÑÑановиÑÑ Ð¾Ð±Ð° ÑеÑвеÑа
УбедиÑеÑÑ Ð² Ñом, ÑÑо оба ÑеÑвеÑа баз даннÑÑ Ð¾ÑÑановленÑ. ÐÐ»Ñ ÑÑого в Unix можно вÑполниÑÑ:
pg_ctl -D /opt/PostgreSQL/12 stop pg_ctl -D /opt/PostgreSQL/17 stop
Рв Windows, Ñ ÑооÑвеÑÑÑвÑÑÑими именами ÑлÑжб:
NET STOP postgresql-12 NET STOP postgresql-17
ÐедомÑе ÑеÑвеÑÑ Ñ Ð¿Ð¾Ñоковой ÑепликаÑией и ÑÑанÑлÑÑией жÑÑнала Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑодолжаÑÑ ÑабоÑаÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑÑого оÑклÑÑениÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²Ñе изменениÑ.
ÐодгоÑовиÑÑÑÑ Ðº Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов
ÐÑли Ð²Ñ Ð¿ÑоизводиÑе обновление ведомÑÑ ÑеÑвеÑов (как опиÑано в Ñазделе Шаг 12), ÑдоÑÑовеÑÑÑеÑÑ, ÑÑо ÑÑи ÑеÑвеÑÑ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð² акÑÑалÑном ÑоÑÑоÑнии, запÑÑÑив pg_controldata в ÑÑаÑÑÑ Ð²ÐµÐ´ÑÑем и ведомÑÑ ÐºÐ»Ð°ÑÑеÑÐ°Ñ . УбедиÑеÑÑ Ð² Ñом, ÑÑо «Ðоложение поÑледней конÑÑолÑной ÑоÑки» во вÑÐµÑ ÐºÐ»Ð°ÑÑеÑÐ°Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ðµ. Также ÑмениÑе
wal_levelнаreplicaв Ñайлеpostgresql.confнового ведÑÑего клаÑÑеÑа.ÐапÑÑÑиÑÑ pg_upgrade
ÐÑегда запÑÑкайÑе пÑогÑÐ°Ð¼Ð¼Ñ pg_upgrade Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑеÑвеÑа, а не Ð¾Ñ ÑÑаÑого. pg_upgrade ÑÑебÑÐµÑ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÐºÐ°Ñалогов даннÑÑ ÑÑаÑого и нового клаÑÑеÑа, а Ñакже каÑалогов иÑполнÑемÑÑ Ñайлов (
bin). ÐÑ Ð¼Ð¾Ð¶ÐµÑе Ñакже опÑеделиÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¸ номеÑа поÑÑов, и нÑжно ли копиÑоваÑÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ (по ÑмолÑаниÑ), клониÑоваÑÑ Ð¸Ñ Ð¸Ð»Ð¸ ÑоздаваÑÑ ÑÑÑлки на Ð½Ð¸Ñ .ÐÑли вÑбÑаÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ñо ÑÑÑлкой на даннÑе, обновление вÑполниÑÑÑ Ð³Ð¾Ñаздо бÑÑÑÑее (Ñак как ÑÐ°Ð¹Ð»Ñ Ð½Ðµ копиÑÑÑÑÑÑ) и поÑÑебÑÐµÑ Ð¼ÐµÐ½ÑÑе меÑÑа на диÑке, но Ð²Ñ Ð»Ð¸ÑиÑеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи обÑаÑаÑÑÑÑ Ðº ваÑÐµÐ¼Ñ ÑÑаÑÐ¾Ð¼Ñ ÐºÐ»Ð°ÑÑеÑÑ, запÑÑÑив новÑй поÑле обновлениÑ. ÐÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ñакже ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ ÐºÐ°Ñалоги даннÑÑ ÑÑаÑого и нового клаÑÑеÑа ÑаÑполагалиÑÑ Ð² одной Ñайловой ÑиÑÑеме. (ТаблиÑнÑе пÑоÑÑÑанÑÑва и
pg_walмогÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑÑ Ð² дÑÑÐ³Ð¸Ñ ÑайловÑÑ ÑиÑÑÐµÐ¼Ð°Ñ .) ÐаÑÐ¸Ð°Ð½Ñ Ñ ÐºÐ»Ð¾Ð½Ð¸Ñованием ÑабоÑÐ°ÐµÑ Ñак же бÑÑÑÑо и ÑÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ð¼ÐµÑÑо на диÑке, но позволÑÐµÑ ÑÐ¾Ñ ÑаниÑÑ ÑабоÑее ÑоÑÑоÑние ÑÑаÑого клаÑÑеÑа пÑи запÑÑке нового. ÐÐ»Ñ ÑÑого ваÑианÑа Ñоже ÑÑебÑеÑÑÑ, ÑÑÐ¾Ð±Ñ ÑÑаÑÑй и новÑй каÑалоги даннÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸Ð»Ð¸ÑÑ Ð² одной Ñайловой ÑиÑÑеме. ÐлониÑование возможно ÑолÑко в некоÑоÑÑÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Ñ Ð¾Ð¿ÑеделÑннÑми ÑайловÑми ÑиÑÑемами.ÐаÑамеÑÑ
--jobsпозволÑÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑованиÑ/ÑвÑзÑÐ²Ð°Ð½Ð¸Ñ Ñайлов и Ð´Ð»Ñ Ð²ÑгÑÑзки/воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑ ÐµÐ¼ баз даннÑÑ Ð½ÐµÑколÑко пÑоÑеÑÑоÑнÑÑ ÑдеÑ. РкаÑеÑÑве наÑалÑного знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑа ÑÑÐ¾Ð¸Ñ Ð²ÑбÑаÑÑ Ð¼Ð°ÐºÑимÑм из ÑиÑла пÑоÑеÑÑоÑнÑÑ ÑÐ´ÐµÑ Ð¸ ÑиÑла ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑадикалÑно ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑвеÑа Ñо множеÑÑвом баз даннÑÑ , ÑабоÑаÑÑего в многопÑоÑеÑÑоÑной ÑиÑÑеме.Ð Windows Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ð¾Ð¹Ñи в ÑиÑÑÐµÐ¼Ñ Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑивнÑми полномоÑиÑми и заÑем запÑÑÑиÑÑ pg_upgrade Ñ Ð¿ÑÑÑми каÑалогов в кавÑÑÐºÐ°Ñ , напÑимеÑ, Ñак:
pg_upgrade.exe --old-datadir "C:/Program Files/PostgreSQL/12/data" --new-datadir "C:/Program Files/PostgreSQL/17/data" --old-bindir "C:/Program Files/PostgreSQL/12/bin" --new-bindir "C:/Program Files/PostgreSQL/17/bin"ÐÑи запÑÑке
pg_upgradeпÑовеÑÐ¸Ñ Ð´Ð²Ð° клаÑÑеÑа на ÑовмеÑÑимоÑÑÑ Ð¸, еÑли вÑÑ Ð² поÑÑдке, вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ. Также возможно запÑÑÑиÑÑpg_upgrade --check, ÑÑÐ¾Ð±Ñ Ð¾Ð³ÑаниÑиÑÑÑÑ ÑолÑко пÑовеÑками (пÑи ÑÑом ÑÑаÑÑй ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑодолжаÑÑ ÑабоÑаÑÑ). Ðомандаpg_upgrade --checkÑакже ÑообÑиÑ, какие коÑÑекÑÐ¸Ð²Ñ Ð²Ð°Ð¼ нÑжно бÑÐ´ÐµÑ Ð²Ð½ÐµÑÑи вÑÑÑнÑÑ Ð¿Ð¾Ñле обновлениÑ. ÐÑли Ð²Ñ Ð¿Ð»Ð°Ð½Ð¸ÑÑеÑе иÑполÑзоваÑÑ Ñежим ÑÑÑлок или клониÑованиÑ, ÑкажиÑе вмеÑÑе Ñ Ð¿Ð°ÑамеÑÑом--checkпаÑамеÑÑ--linkили--clone, ÑÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ÑпеÑиалÑнÑе пÑовеÑки Ð´Ð»Ñ ÑÑÐ¸Ñ Ñежимов. ÐÑогÑаммеpg_upgradeÑÑебÑÑÑÑÑ Ð¿Ñава на запиÑÑ Ð² ÑекÑÑий каÑалог.ÐÑевидно, никÑо не должен обÑаÑаÑÑÑÑ Ðº клаÑÑеÑам в пÑоÑеÑÑе обновлениÑ. ÐÑогÑамма pg_upgrade по ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð°Ð¿ÑÑÐºÐ°ÐµÑ ÑеÑвеÑÑ Ñ Ð¿Ð¾ÑÑом 50432, ÑÑÐ¾Ð±Ñ Ð½Ðµ допÑÑÑиÑÑ Ð½ÐµÐ¶ÐµÐ»Ð°ÑелÑнÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑений. РпÑоÑеÑÑе Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±Ð° клаÑÑеÑа могÑÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа, Ñак как они не бÑдÑÑ ÑабоÑаÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно. Ðднако Ð´Ð»Ñ Ð¿ÑовеÑки ÑÑаÑого ÑабоÑаÑÑего ÑеÑвеÑа новÑй поÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ оÑлиÑаÑÑÑÑ Ð¾Ñ ÑÑаÑого.
ÐÑли пÑи воÑÑÑановлении ÑÑ ÐµÐ¼Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка,
pg_upgradeзавеÑÑÐ°ÐµÑ ÑÐ²Ð¾Ñ ÑабоÑÑ Ð¸ Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÐµÑнÑÑÑÑÑ Ðº ÑÑаÑÐ¾Ð¼Ñ ÐºÐ»Ð°ÑÑеÑÑ, как опиÑÑваеÑÑÑ Ð½Ð¸Ð¶Ðµ в Шаг 18. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð¿ÑобоваÑÑpg_upgradeеÑÑ Ñаз, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ð½ÐµÑÑи коÑÑекÑÐ¸Ð²Ñ Ð² ÑÑаÑом клаÑÑеÑе, ÑÑÐ¾Ð±Ñ pg_upgrade могла ÑÑпеÑно воÑÑÑановиÑÑ ÑÑ ÐµÐ¼Ñ. ÐÑли пÑоблема возникла в модÑлеcontrib, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑдалиÑÑ ÑÑÐ¾Ñ Ð¼Ð¾Ð´ÑлÑcontribв ÑÑаÑом клаÑÑеÑе, а заÑем ÑÑÑановиÑÑ ÐµÐ³Ð¾ в новом поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (пÑедполагаеÑÑÑ, ÑÑо ÑÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð½Ðµ Ñ ÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие даннÑе).ÐбновиÑÑ Ð²ÐµÐ´Ð¾Ð¼Ñе ÑеÑвеÑÑ Ñ Ð¿Ð¾Ñоковой ÑепликаÑией и ÑÑанÑлÑÑией жÑÑнала
ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе Ñежим ÑÑÑлок и Ñ Ð²Ð°Ñ Ñеализована поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ (Ñм. ÐодÑаздел 25.2.5) или ÑÑанÑлÑÑÐ¸Ñ Ð¶ÑÑнала (Ñм. Раздел 25.2) Ð´Ð»Ñ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе бÑÑÑÑо обновиÑÑ ÑÑи ÑеÑвеÑÑ ÑледÑÑÑим обÑазом. Ðам не нÑжно бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ð½Ð° Ð½Ð¸Ñ pg_upgrade, вмеÑÑо ÑÑого Ð²Ñ Ð²ÑполниÑе rsync на ведÑÑем. Ðе запÑÑкайÑе никакие ÑеÑвеÑÑ Ð½Ð° ÑÑом ÑÑапе.
ÐÑли Ð²Ñ Ð½Ðµ иÑполÑзÑеÑе Ñежим ÑÑÑлок, либо Ñ Ð²Ð°Ñ Ð½ÐµÑ rsync или Ð²Ñ Ð½Ðµ Ñ Ð¾ÑиÑе его иÑполÑзоваÑÑ, либо еÑли вам нÑжен более пÑоÑÑой ваÑианÑ, пÑопÑÑÑиÑе инÑÑÑÑкÑии в ÑÑом Ñазделе и пÑоÑÑо пеÑеÑоздайÑе ведомÑе ÑеÑвеÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле завеÑÑÐµÐ½Ð¸Ñ pg_upgrade и запÑÑка нового ведÑÑего ÑеÑвеÑа.
УÑÑановиÑе новÑе иÑполнÑемÑе ÑÐ°Ð¹Ð»Ñ Postgres Pro на ведомÑÑ ÑеÑвеÑаÑ
УбедиÑеÑÑ Ð² Ñом, ÑÑо на вÑÐµÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑÐ°Ñ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð½Ð¾Ð²Ñе иÑполнÑемÑе и вÑпомогаÑелÑнÑе ÑайлÑ.
УбедиÑеÑÑ Ð² Ñом, ÑÑо новÑе каÑалоги даннÑÑ Ð½Ð° ведомÑÑ ÑеÑвеÑÐ°Ñ Ð½Ðµ ÑÑÑеÑÑвÑÑÑ
ÐовÑе каÑалоги даннÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑов Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾ÑÑÑÑÑÑвоваÑÑ Ð»Ð¸Ð±Ð¾ бÑÑÑ Ð¿ÑÑÑÑми. ÐÑли запÑÑкалаÑÑ Ð¿ÑогÑамма initdb, ÑдалиÑе новÑе каÑалоги даннÑÑ Ð½Ð° ведомÑÑ .
УÑÑановиÑÑ ÑазделÑемÑе обÑекÑнÑе ÑÐ°Ð¹Ð»Ñ ÑаÑÑиÑениÑ
УÑÑановиÑе на новÑÑ Ð²ÐµÐ´Ð¾Ð¼ÑÑ ÑеÑвеÑÐ°Ñ Ñе же ÑазделÑемÑе обÑекÑнÑе ÑÐ°Ð¹Ð»Ñ ÑаÑÑиÑениÑ, ÑÑо Ð²Ñ ÑÑÑановили в новом ведÑÑем клаÑÑеÑе.
ÐÑÑановиÑе ведомÑе ÑеÑвеÑÑ
ÐÑли ведомÑе ÑеÑвеÑÑ Ð¿ÑодолжаÑÑ ÑабоÑÑ, оÑÑановиÑе Ð¸Ñ , ÑледÑÑ Ð¿ÑиведÑннÑм вÑÑе инÑÑÑÑкÑиÑм.
Ð¡Ð¾Ñ ÑаниÑе ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии
Ð¡Ð¾Ñ ÑаниÑе вÑе нÑжнÑе вам ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии из ÑÑаÑÑÑ ÐºÐ°Ñалогов конÑигÑÑаÑии ведомÑÑ ÑеÑвеÑов, в ÑаÑÑноÑÑи
postgresql.conf(и вÑе ÑайлÑ, вклÑÑÑннÑе в него),postgresql.auto.confиpg_hba.conf, Ñак как они бÑдÑÑ Ð¿ÐµÑезапиÑÐ°Ð½Ñ Ð¸Ð»Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð½Ð° ÑледÑÑÑем ÑÑапе.ÐапÑÑÑиÑе rsync
Ðогда иÑполÑзÑеÑÑÑ Ñежим ÑÑÑлок, ведомÑе ÑеÑвеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑÑÑÑо обновиÑÑ, пÑименив rsync. ÐÐ»Ñ ÑÑого в каÑалоге, внÑÑÑи коÑоÑого Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ ÐºÐ°Ñалоги ÑÑаÑого и нового клаÑÑеÑа, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ведомого ÑеÑвеÑа вÑполниÑе на ведÑÑем:
rsync --archive --delete --hard-links --size-only --no-inc-recursive old_cluster new_cluster remote_dir
ÐдеÑÑ ÐºÐ°Ñалоги
old_clusterиnew_clusterзадаÑÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑего каÑалога на ведÑÑем, аremote_dirÐ½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð½Ð°Ð´ каÑалогами ÑÑаÑого и нового клаÑÑеÑа на ведомом. СÑÑÑкÑÑÑа подкаÑалогов в заданнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ Ð½Ð° ведÑÑем и ведомÑÑ ÑеÑвеÑÐ°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð¹. ÐбÑаÑиÑеÑÑ Ðº ÑÑÑаниÑе ÑÑководÑÑва rsync, где подÑобно опиÑано, как ÑказаÑÑ ÑдалÑннÑй каÑалог, напÑÐ¸Ð¼ÐµÑ Ñак:rsync --archive --delete --hard-links --size-only --no-inc-recursive /opt/PostgreSQL/12 \ /opt/PostgreSQL/17 standby.example.com:/opt/PostgreSQLÐÑовеÑиÑÑ, ÑÑо бÑÐ´ÐµÑ Ð´ÐµÐ»Ð°ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, можно, воÑполÑзовавÑиÑÑ Ð¿Ð°ÑамеÑÑом rsync
--dry-run. ÐÑполниÑÑ rsync на ведÑÑем Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ как минимÑм Ñ Ð¾Ð´Ð½Ð¸Ð¼ ведомÑм, но заÑем, пока обновлÑннÑй ведомÑй оÑÑаÑÑÑÑ Ð¾ÑÑановленнÑм, можно запÑÑкаÑÑ rsync на нÑм Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ Ð²ÐµÐ´Ð¾Ð¼ÑÑ .Ð Ñ Ð¾Ð´Ðµ ÑÑой опеÑаÑии запиÑÑваÑÑÑÑ ÑÑÑлки, ÑозданнÑе Ñежимом ÑÑÑлок pg_upgrade, ÑвÑзÑваÑÑие ÑÐ°Ð¹Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ и ÑÑаÑого клаÑÑеÑа на ведÑÑем ÑеÑвеÑе. ÐаÑем в ÑÑаÑом клаÑÑеÑе ведомого Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ Ð¸ в новом клаÑÑеÑе ведомого ÑоздаÑÑÑÑ ÑÑÑлки на Ð½Ð¸Ñ . ФайлÑ, не ÑвÑзаннÑе ÑÑÑлками на ведÑÑем, копиÑÑÑÑÑÑ Ñ Ð½ÐµÐ³Ð¾ на ведомÑй. (ÐбÑÑно Ð¸Ñ Ð¾Ð±ÑÑм невелик.) ÐÑо позволÑÐµÑ Ð¿ÑоизвеÑÑи обновление ведомого бÑÑÑÑо. Ð ÑожалениÑ, пÑи ÑÑом rsync бÑÐ´ÐµÑ Ð½Ð°Ð¿ÑаÑно копиÑоваÑÑ ÑайлÑ, ÑвÑзаннÑе Ñ Ð²ÑеменнÑми и нежÑÑналиÑÑемÑми ÑаблиÑами, Ñак как они обÑÑно не бÑдÑÑ ÑÑÑеÑÑвоваÑÑ Ð½Ð° ведомÑÑ ÑеÑвеÑÐ°Ñ .
ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑаблиÑнÑе пÑоÑÑÑанÑÑва, вам поÑÑебÑеÑÑÑ Ð²ÑполниÑÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ rsync Ð´Ð»Ñ ÐºÐ°Ñалогов вÑÐµÑ ÑаблиÑнÑÑ Ð¿ÑоÑÑÑанÑÑв, напÑимеÑ:
rsync --archive --delete --hard-links --size-only --no-inc-recursive /vol1/pg_tblsp/PG_12_201909212 \ /vol1/pg_tblsp/PG_17_202307071 standby.example.com:/vol1/pg_tblspÐÑли Ð²Ñ Ð²ÑнеÑли
pg_walза пÑÐµÐ´ÐµÐ»Ñ ÐºÐ°Ñалогов даннÑÑ , нÑжно бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑÑиÑÑ rsync и Ð´Ð»Ñ ÑÑÐ¸Ñ ÐºÐ°Ñалогов.ÐаÑÑÑойÑе ведомÑе ÑеÑвеÑÑ Ñ Ð¿Ð¾Ñоковой ÑепликаÑией и ÑÑанÑлÑÑией жÑÑнала
ÐаÑÑÑойÑе ÑеÑвеÑÑ Ð´Ð»Ñ ÑÑанÑлÑÑии жÑÑнала. (ÐапÑÑкаÑÑ
pg_backup_start()иpg_backup_stop()или делаÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ñайловой ÑиÑÑÐµÐ¼Ñ Ð½Ðµ нÑжно, Ñак как ведомÑе ÑеÑвеÑÑ Ð¾ÑÑаÑÑÑÑ ÑÐ¸Ð½Ñ ÑонизиÑованнÑми Ñ Ð²ÐµÐ´ÑÑим.) ÐÑли веÑÑÐ¸Ñ ÑÑаÑого ведÑÑего ниже 17.0, ÑлоÑÑ Ð½Ðµ бÑдÑÑ ÐºÐ¾Ð¿Ð¸ÑоваÑÑÑÑ Ð½Ð° новÑй ведомÑй, и вÑе ÑлоÑÑ Ð½Ñжно бÑÐ´ÐµÑ Ð²Ð¾ÑÑоздаваÑÑ Ð²ÑÑÑнÑÑ. ÐÑли ÑÑаÑÑй ведÑÑий ÑеÑÐ²ÐµÑ Ð²ÐµÑÑии 17.0 или вÑÑе, логиÑеÑкие ÑлоÑÑ Ð½Ð° ведÑÑем ÑеÑвеÑе бÑдÑÑ ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° новÑй ведомÑй ÑеÑвеÑ, но ÑлоÑÑ Ð½Ð° ÑÑаÑом ведомом ÑеÑвеÑе копиÑоваÑÑÑÑ Ð½Ðµ бÑдÑÑ, и Ð¸Ñ Ð½Ñжно бÑÐ´ÐµÑ Ð²Ð¾ÑÑоздаваÑÑ Ð²ÑÑÑнÑÑ.
ÐоÑÑÑановиÑÑ
pg_hba.confÐÑли Ð²Ñ Ð¸Ð·Ð¼ÐµÐ½Ñли
pg_hba.conf, воÑÑÑановиÑе его иÑÑ Ð¾Ð´Ð½Ð¾Ðµ ÑоÑÑоÑние. Также Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑкоÑÑекÑиÑоваÑÑ Ð´ÑÑгие ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии в новом клаÑÑеÑе, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ ÑооÑвеÑÑÑвовали ÑÑаÑомÑ, напÑимеÑ,postgresql.conf(и ÑайлÑ, вклÑÑÑннÑе в него) иpostgresql.auto.conf.ÐапÑÑÑиÑÑ Ð½Ð¾Ð²Ñй ÑеÑвеÑ
ТепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ безопаÑно запÑÑÑиÑÑ Ð½Ð¾Ð²Ñй ÑеÑвеÑ, а заÑем ведомÑе ÑеÑвеÑÑ, ÑÐ¸Ð½Ñ ÑонизиÑованнÑе Ñ Ð½Ð¸Ð¼ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ rsync.
ÐейÑÑÐ²Ð¸Ñ Ð¿Ð¾Ñле обновлениÑ
ÐÑли поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑебÑÑÑÑÑ ÐºÐ°ÐºÐ¸Ðµ-Ñо дополниÑелÑнÑе дейÑÑвиÑ, пÑогÑамма pg_upgrade вÑдаÑÑ Ð¿ÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð± ÑÑом по завеÑÑении ÑабоÑÑ. Ðна Ñакже ÑгенеÑиÑÑÐµÑ ÑÐ°Ð¹Ð»Ñ ÑкÑипÑов, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑом. ÐÑи ÑкÑипÑÑ Ð±ÑдÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº каждой базе даннÑÑ , ÑÑебÑÑÑей дополниÑелÑнÑÑ Ð¾Ð¿ÐµÑаÑий. ÐаждÑй Ñакой ÑкÑÐ¸Ð¿Ñ ÑледÑÐµÑ Ð²ÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹:
psql --username=postgres --file=script.sql postgres
ÐÑи ÑкÑипÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑполнÑÑÑÑÑ Ð² лÑбом поÑÑдке, а поÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ.
Ðнимание
ÐбÑÑно к ÑаблиÑам, задейÑÑвованнÑм в пеÑеÑÑÑаиваÑÑÐ¸Ñ Ð±Ð°Ð·Ñ ÑкÑипÑÐ°Ñ , опаÑно обÑаÑаÑÑÑÑ, пока ÑÑи ÑкÑипÑÑ Ð½Ðµ ÑделаÑÑ ÑÐ²Ð¾Ñ ÑабоÑÑ; пÑи ÑÑом можно полÑÑиÑÑ Ð½ÐµÐºÐ¾ÑÑекÑнÑй ÑезÑлÑÑÐ°Ñ Ð¸Ð»Ð¸ Ð¿Ð»Ð¾Ñ ÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ. Ð ÑаблиÑам, не задейÑÑвованнÑм в ÑÐ°ÐºÐ¸Ñ ÑкÑипÑÐ°Ñ , можно обÑаÑаÑÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾.
СÑаÑиÑÑика
Так как ÑÑаÑиÑÑика опÑимизаÑоÑа не пеÑедаÑÑÑÑ Ð² пÑоÑеÑÑе ÑабоÑÑ
pg_upgrade, Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе Ñказание запÑÑÑиÑÑ ÑооÑвеÑÑÑвÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²Ð¾ÑÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑой инÑоÑмаÑии поÑле обновлениÑ. Ðозможно, Ð´Ð»Ñ ÑÑого вам понадобиÑÑÑ ÑÑÑановиÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº Ð½Ð¾Ð²Ð¾Ð¼Ñ ÐºÐ»Ð°ÑÑеÑÑ.Ðоманда
vacuumdb --all --analyze-onlyÑÑÑекÑивно генеÑиÑÑÐµÑ ÑакÑÑ ÑÑаÑиÑÑикÑ, а паÑамеÑÑ--jobsÐ¿Ð¾Ð¼Ð¾Ð¶ÐµÑ ÑÑкоÑиÑÑ Ð¿ÑоÑеÑÑ. ÐаÑамеÑÑ--analyze-in-stagesможно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð±ÑÑÑÑого полÑÑÐµÐ½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñного обÑÑма ÑÑаÑиÑÑики. ÐÑли знаÑениеvacuum_cost_delayне Ñавно нÑлÑ, его можно пеÑеопÑеделиÑÑ, ÑÑÐ¾Ð±Ñ ÑÑкоÑиÑÑ Ð³ÐµÐ½ÐµÑаÑÐ¸Ñ ÑÑаÑиÑÑики Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑPGOPTIONS, напÑимеÑPGOPTIONS='-c vacuum_cost_delay=0' vacuumdb ....УдалиÑÑ ÑÑаÑÑй клаÑÑеÑ
ÐÑли Ð²Ñ ÑдовлеÑвоÑÐµÐ½Ñ ÑезÑлÑÑаÑами обновлениÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑдалиÑÑ ÐºÐ°Ñалоги даннÑÑ ÑÑаÑого клаÑÑеÑа, запÑÑÑив ÑкÑипÑ, ÑпомÑнÑÑÑй в вÑводе
pg_upgradeпоÑле обновлениÑ. (ÐвÑомаÑиÑеÑкое Ñдаление невозможно, еÑли в ÑÑаÑом каÑалоге даннÑÑ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑаблиÑнÑе пÑоÑÑÑанÑÑва.) Также Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑдалиÑÑ ÐºÐ°Ñалоги ÑÑаÑой инÑÑаллÑÑии (напÑимеÑ,bin,share).ÐозвÑÐ°Ñ Ðº ÑÑаÑÐ¾Ð¼Ñ ÐºÐ»Ð°ÑÑеÑÑ
ÐÑли вÑполнив командÑ
pg_upgrade, Ð²Ñ Ð·Ð°Ñ Ð¾ÑиÑе веÑнÑÑÑÑÑ Ðº ÑÑаÑÐ¾Ð¼Ñ ÐºÐ»Ð°ÑÑеÑÑ, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ ÑледÑÑÑие ваÑианÑÑ:ÐÑли иÑполÑзовалÑÑ ÐºÐ»ÑÑ
--check, в ÑÑаÑом клаÑÑеÑе ниÑего не менÑеÑÑÑ; его можно пÑоÑÑо пеÑезапÑÑÑиÑÑ.ÐÑли не иÑполÑзовалÑÑ ÐºÐ»ÑÑ
--link, в ÑÑаÑом клаÑÑеÑе ниÑего не менÑеÑÑÑ; его можно пÑоÑÑо пеÑезапÑÑÑиÑÑ.ÐÑли иÑполÑзовалÑÑ ÐºÐ»ÑÑ
--link, Ñ ÑÑаÑого и нового клаÑÑеÑа могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¾Ð±Ñие ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ :ÐÑли ÑабоÑа
pg_upgradeбÑла пÑеÑвана до наÑала ÑаÑÑÑановки ÑÑÑлок, в ÑÑаÑом клаÑÑеÑе ниÑего не менÑеÑÑÑ; его можно пÑоÑÑо пеÑезапÑÑÑиÑÑ.ÐÑли Ð²Ñ Ð½Ðµ запÑÑкали новÑй клаÑÑеÑ, ÑÑаÑÑй клаÑÑÐµÑ Ð½Ðµ пÑеÑеÑпел Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, за иÑклÑÑением Ñого, ÑÑо пÑи Ñоздании ÑÑÑлки на даннÑе к имени
$PGDATA/global/pg_controlбÑло добавлено оконÑание.old. ЧÑÐ¾Ð±Ñ Ð¿ÑодолжиÑÑ Ð¸ÑполÑзование ÑÑаÑого клаÑÑеÑа, доÑÑаÑоÑно ÑбÑаÑÑ Ð¾ÐºÐ¾Ð½Ñание.oldиз имени Ñайла$PGDATA/global/pg_control; поÑле ÑÑого ÑÑаÑÑй клаÑÑÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ бÑÐ´ÐµÑ Ð¿ÐµÑезапÑÑÑиÑÑ.ÐÑли Ð²Ñ Ð·Ð°Ð¿ÑÑкали новÑй клаÑÑеÑ, он внÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² обÑие ÑайлÑ, и иÑполÑзоваÑÑ ÑÑаÑÑй клаÑÑÐµÑ Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°Ñно. Ð ÑÑом ÑлÑÑае ÑÑаÑÑй клаÑÑÐµÑ Ð½Ñжно бÑÐ´ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ Ð¸Ð· ÑезеÑвной копии.
ÐеÑеменнÑе окÑÑжениÑ
ÐекоÑоÑÑе пеÑеменнÑе окÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÐµÑедаваÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑов командной ÑÑÑоки:
PGBINOLDÐаÑалог Ñ Ð¸ÑполнÑемÑми Ñайлами ÑÑаÑой веÑÑии Postgres Pro; паÑамеÑÑ
-b/--old-bindir.PGBINNEWÐаÑалог Ñ Ð¸ÑполнÑемÑми Ñайлами новой веÑÑии Postgres Pro; паÑамеÑÑ
-B/--new-bindir.PGDATAOLDÐаÑалог конÑигÑÑаÑии ÑÑаÑого клаÑÑеÑа; паÑамеÑÑ
-d/--old-datadir.PGDATANEWÐаÑалог конÑигÑÑаÑии нового клаÑÑеÑа; паÑамеÑÑ
-D/--new-datadir.PGPORTOLDÐÐ¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа ÑÑаÑого клаÑÑеÑа; паÑамеÑÑ
-p/--old-port.PGPORTNEWÐÐ¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа нового клаÑÑеÑа; паÑамеÑÑ
-P/--new-port.PGSOCKETDIRÐаÑалог, в коÑоÑом бÑÐ´ÐµÑ ÑоздаваÑÑ ÑокеÑÑ postmaster во вÑÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ; паÑамеÑÑ
-s/--socketdir.PGUSERÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ ÑÑÑановки клаÑÑеÑа; паÑамеÑÑ
-U/--username.
ÐÑимеÑаниÑ
ÐÑогÑамма pg_upgrade ÑоздаÑÑ ÑазлиÑнÑе вÑеменнÑе ÑайлÑ, напÑÐ¸Ð¼ÐµÑ Ð²ÑгÑÑÐ¶Ð°Ñ ÑÑ
ÐµÐ¼Ñ Ð±Ð°Ð·Ñ, в ÑвоÑм ÑабоÑем каÑалоге pg_upgrade_output.d внÑÑÑи каÑалога даннÑÑ
нового клаÑÑеÑа. ÐÑи каждом запÑÑке в ÑÑом ÑабоÑем каÑалоге ÑоздаÑÑÑÑ Ð¿Ð¾Ð´ÐºÐ°Ñалог Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑодеÑжаÑим оÑмеÑÐºÑ Ð²Ñемени в ÑоÑмаÑе ÑÑандаÑÑа ISO 8601 (%Y%m%dT%H%M%S), и в даннÑй подкаÑалог помеÑаÑÑÑÑ Ð²Ñе ÑоздаваемÑе ÑайлÑ. ÐаÑалог pg_upgrade_output.d Ñо вÑем ÑодеÑжимÑм ÑдалÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки в ÑлÑÑае ÑÑпеÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ pg_upgrade; но еÑли Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ñоблема, ÑоÑ
ÑанÑннÑе в нÑм ÑÐ°Ð¹Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑики.
ÐÑогÑамма pg_upgrade запÑÑÐºÐ°ÐµÑ Ð½Ð° коÑоÑкое вÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ postmaster Ñо ÑÑаÑÑм и новÑм каÑалогом даннÑÑ
. ÐÑеменнÑе ÑÐ°Ð¹Ð»Ñ ÑокеÑов Unix Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ ÑÑими пÑоÑеÑÑами по ÑмолÑÐ°Ð½Ð¸Ñ ÑоздаÑÑÑÑ Ð² ÑекÑÑем ÑабоÑем каÑалоге. РнекоÑоÑÑÑ
ÑиÑÑаÑиÑÑ
пÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ Ð² ÑекÑÑем каÑалоге Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ ÑлиÑком длиннÑм Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑокеÑа. Ð ÑÑом ÑлÑÑае Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пеÑедаÑÑ Ð¿Ð°ÑамеÑÑ -s, ÑÑÐ¾Ð±Ñ ÑÐ°Ð¹Ð»Ñ ÑокеÑов ÑоздавалиÑÑ Ð² дÑÑгом каÑалоге Ñ Ð±Ð¾Ð»ÐµÐµ коÑоÑким пÑÑÑм. Ð ÑелÑÑ
безопаÑноÑÑи ÑÑÐ¾Ñ ÐºÐ°Ñалог не должен бÑÑÑ Ð´Ð¾ÑÑÑпен Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи дÑÑгим полÑзоваÑелÑм. (Ð Windows ÑÑо не поддеÑживаеÑÑÑ.)
ÐÑогÑамма pg_upgrade ÑообÑÐ¸Ñ Ð¾Ð±Ð¾ вÑÐµÑ Ð°ÐºÑÑалÑнÑÑ Ð´Ð»Ñ Ð²Ð°Ñей инÑÑаллÑÑии оÑÐ¸Ð±ÐºÐ°Ñ Ð¸ поÑÑебноÑÑÑÑ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ пеÑеиндекÑаÑии базÑ; пÑи ÑÑом бÑдÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð·Ð°Ð²ÐµÑÑаÑÑие обновление ÑкÑипÑÑ, пеÑеÑÑÑаиваÑÑие ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑÑ. ÐÑли Ð²Ñ Ð¿Ð¾Ð¿ÑÑаеÑеÑÑ Ð°Ð²ÑомаÑизиÑоваÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ множеÑÑва ÑеÑвеÑов, Ð²Ñ Ð¾Ð±Ð½Ð°ÑÑжиÑе, ÑÑо Ð´Ð»Ñ ÐºÐ»Ð°ÑÑеÑов Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми ÑÑ ÐµÐ¼Ð°Ð¼Ð¸ баз даннÑÑ Ð¿Ð¾ÑÑебÑÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе дейÑÑÐ²Ð¸Ñ Ð¿Ð¾Ñле обновлениÑ; ÑÑо обÑÑÑнÑеÑÑÑ Ñем, ÑÑо ÑÑи дейÑÑÐ²Ð¸Ñ Ð´Ð¸ÐºÑÑÑÑÑÑ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , а не даннÑми полÑзоваÑелей.
ÐÐ»Ñ Ð¿ÑовеÑки ÑазвÑÑÑÑÐ²Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ веÑÑии ÑоздайÑе ÐºÐ¾Ð¿Ð¸Ñ ÑолÑко ÑÑ ÐµÐ¼Ñ ÑÑаÑого клаÑÑеÑа, наполниÑе ÑÑÐ¾Ñ ÐºÐ»Ð°ÑÑÐµÑ ÑикÑивнÑми даннÑми, и попÑобÑйÑе обновиÑÑ ÐµÐ³Ð¾.
pg_upgrade не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ баз даннÑÑ
, в коÑоÑÑÑ
еÑÑÑ ÑаблиÑÑ Ñо ÑÑолбÑами, имеÑÑими ÑледÑÑÑие ÑиÑÑемнÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
reg*, ÑÑÑлаÑÑиеÑÑ Ð½Ð° OID:
regcollation |
regconfig |
regdictionary |
regnamespace |
regoper |
regoperator |
regproc |
regprocedure |
regprofile |
(Ðбновление regclass, regrole и regtype поддеÑживаеÑÑÑ.)
ÐÑи обновлении ÑкземплÑÑа Postgres Pro веÑÑии 9.6 или ÑÑаÑее Ð´Ð»Ñ Ð±Ð°Ð· даннÑÑ
Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð±Ð°Ð¹Ñовой кодиÑовкой ÑÑилиÑа pg_upgrade Ð¼Ð¾Ð¶ÐµÑ ÑгенеÑиÑоваÑÑ ÑÐ°Ð¹Ð»Ñ SQL Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸ REINDEX/VALIDATE. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑÑи ÑайлÑ, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑеÑÑÑоиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸Ð»Ð¸ пеÑепÑовеÑиÑÑ Ð¾Ð³ÑаниÑениÑ. Такие ÑÐ°Ð¹Ð»Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑвиÑÑÑÑ, когда в ÑÑаÑом клаÑÑеÑе иÑполÑзÑÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸Ð»Ð¸ огÑаниÑениÑ, коÑоÑÑе завиÑÑÑ Ð¾Ñ Ð¿Ñавил ÑоÑÑиÑовки, оÑлиÑнÑÑ
Ð¾Ñ Ð¾Ñновного пÑавила ÑоÑÑиÑовки ÐÐ, C или POSIX.
ÐÑли Ð²Ñ Ñ
оÑиÑе иÑполÑзоваÑÑ Ñежим ÑÑÑлок на даннÑе, но пÑи ÑÑом иÑклÑÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑÑаÑом клаÑÑеÑе пÑи запÑÑке нового, вам Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¾Ð¹Ñи Ñежим клониÑованиÑ. ÐÑли же ÑÑÐ¾Ñ Ñежим недоÑÑÑпен, ÑделайÑе ÐºÐ¾Ð¿Ð¸Ñ ÑÑаÑого клаÑÑеÑа и обновиÑе его в ÑÑом Ñежиме. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ ÑабоÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÑÑаÑого клаÑÑеÑа, воÑполÑзÑйÑеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ rsync и ÑоздайÑе пÑедваÑиÑелÑнÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа пÑи ÑабоÑаÑÑем ÑеÑвеÑе, а заÑем оÑклÑÑиÑе ÑÑаÑÑй ÑеÑÐ²ÐµÑ Ð¸ еÑÑ Ñаз запÑÑÑиÑе rsync --checksum, ÑÑÐ¾Ð±Ñ Ð¿ÑивеÑÑи ÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð² ÑоглаÑованное ÑоÑÑоÑние. (ÐлÑÑ --checksum необÑ
одим, поÑÐ¾Ð¼Ñ ÑÑо rsync ÑазлиÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ Ñ ÑоÑноÑÑÑÑ ÑолÑко до ÑекÑнд.) ÐÑи ÑÑом Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑклÑÑиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑайлÑ, напÑÐ¸Ð¼ÐµÑ postmaster.pid, как опиÑано в ÐодÑазделе 24.3.4. ÐÑли ваÑа ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ñнимки Ñайловой ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ копиÑование пÑи запиÑи, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе воÑполÑзоваÑÑÑÑ ÑÑим Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ ÑÑаÑого клаÑÑеÑа и ÑаблиÑнÑÑ
пÑоÑÑÑанÑÑв; пÑи ÑÑом важно, ÑÑÐ¾Ð±Ñ Ñакие Ñнимки и копии Ñайлов ÑоздавалиÑÑ Ð¾Ð´Ð½Ð¾Ð¼Ð¾Ð¼ÐµÐ½Ñно или когда ÑеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ
оÑклÑÑÑн.