28.13. Ðбновление #
ÐигÑаÑÐ¸Ñ ÐºÐ»Ð°ÑÑеÑа логиÑеÑкой ÑепликаÑии возможна ÑолÑко в Ñом ÑлÑÑае, еÑли вÑе ÑÐ»ÐµÐ½Ñ ÑÑаÑого клаÑÑеÑа логиÑеÑкой ÑепликаÑии Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð½Ð° веÑÑии 17.0 и вÑÑе.
28.13.1. ÐодгоÑовка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑбликÑÑÑего Ñзла #
pg_upgrade пÑÑаеÑÑÑ Ð¼Ð¸Ð³ÑиÑоваÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие ÑлоÑÑ. ÐÑо позволÑÐµÑ Ð½Ðµ опÑеделÑÑÑ ÑÑи же ÑлоÑÑ Ð²ÑÑÑнÑÑ Ð½Ð° новом пÑбликÑÑÑем Ñзле. ÐигÑаÑÐ¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ ÑлоÑов поддеÑживаеÑÑÑ, ÑолÑко еÑли ÑÑаÑÑй клаÑÑÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð½Ð° веÑÑии 17 или вÑÑе. ÐогиÑеÑкие ÑлоÑÑ Ð½Ð° клаÑÑеÑе до веÑÑии 17 игноÑиÑÑÑÑÑÑ Ð±ÐµÐ· пÑедÑпÑеждениÑ.
ÐеÑед обновлением веÑÑии клаÑÑеÑа пÑбликÑÑÑего ÑеÑвеÑа ÑбедиÑеÑÑ, ÑÑо подпиÑка вÑеменно оÑклÑÑена, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER SUBSCRIPTION ... DISABLE. Ðаново вклÑÑиÑе подпиÑÐºÑ Ð¿Ð¾Ñле обновлениÑ.
У pg_upgrade еÑÑÑ Ð½ÐµÑколÑко пÑедваÑиÑелÑнÑÑ ÑÑловий, пÑи коÑоÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ обновление логиÑеÑÐºÐ¸Ñ ÑлоÑов. ÐÑ Ð½ÐµÑоблÑдение пÑиведÑÑ Ðº оÑибке.
Рновом клаÑÑеÑе
wal_levelдолжен имеÑÑ Ð·Ð½Ð°Ñениеlogical.Рновом клаÑÑеÑе паÑамеÑÑ
max_replication_slotsдолжен имеÑÑ Ð·Ð½Ð°Ñение, болÑÑее или Ñавное ÑиÑÐ»Ñ ÑлоÑов в ÑÑаÑом клаÑÑеÑе.ÐодÑли вÑвода, на коÑоÑÑе ÑÑÑлаÑÑÑÑ ÑлоÑÑ Ð½Ð° ÑÑаÑом клаÑÑеÑе, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² каÑалоге Ñ Ð¸ÑполнÑемÑми Ñайлами новой веÑÑии PostgreSQL.
Ð ÑÑаÑом клаÑÑеÑе вÑе ÑÑанзакÑии и ÑообÑÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑедавалиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑикам.
ÐÑе ÑлоÑÑ Ð² ÑÑаÑом клаÑÑеÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑÑÑ, Ñ. е. не должно бÑÑÑ ÑлоÑов, в коÑоÑÑÑ pg_replication_slots.
conflictingне Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеtrue.Рновом клаÑÑеÑе не должно бÑÑÑ Ð¿Ð¾ÑÑоÑннÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ ÑлоÑов, Ñ. е. не должно бÑÑÑ ÑлоÑов, в коÑоÑÑÑ pg_replication_slots.
temporaryÐ¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñениеfalse.
28.13.2. ÐодгоÑовка к Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑиков #
ÐадайÑе паÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии нового подпиÑÑика. 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_active_replication_originsдолжен имеÑÑ Ð·Ð½Ð°Ñение, болÑÑее или Ñавное ÑиÑÐ»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñок в ÑÑаÑом.
28.13.3. Ðбновление клаÑÑеÑов логиÑеÑкой ÑепликаÑии #
ÐÑи обновлении подпиÑÑика можно вÑполнÑÑÑ Ð¾Ð¿ÐµÑаÑии запиÑи на пÑбликÑÑÑем ÑеÑвеÑе. Такие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑеплиÑиÑÑÑÑÑÑ Ð½Ð° подпиÑÑика по завеÑÑении его обновлениÑ.
ÐÑимеÑание
ÐгÑаниÑÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии пÑименÑÑÑÑÑ Ðº пÑоÑеÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа логиÑеÑкой ÑепликаÑии. Ðолее подÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð¿Ð¸Ñана в Разделе 28.8.
ÐÑедваÑиÑелÑнÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑбликÑÑÑего ÑеÑвеÑа пÑименÑÑÑÑÑ Ðº пÑоÑеÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа логиÑеÑкой ÑепликаÑии. Ðолее подÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð¿Ð¸Ñана в ÐодÑазделе 28.13.1.
ÐÑедваÑиÑелÑнÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика пÑименÑÑÑÑÑ Ðº пÑоÑеÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа логиÑеÑкой ÑепликаÑии. Ðолее подÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð¿Ð¸Ñана в ÐодÑазделе 28.13.2.
ÐÑедÑпÑеждение
ЧÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÐºÐ»Ð°ÑÑÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вÑполниÑÑ Ð½ÐµÑколÑко дейÑÑвий на ÑазнÑÑ ÑÐ·Ð»Ð°Ñ . ÐоÑколÑÐºÑ Ð½Ðµ вÑе опеÑаÑии ÑвлÑÑÑÑÑ ÑÑанзакÑионнÑми, полÑзоваÑелÑм ÑекомендÑеÑÑÑ Ð´ÐµÐ»Ð°ÑÑ ÑезеÑвнÑе копии по инÑÑÑÑкÑии, опиÑанной в ÐодÑазделе 24.3.2.
Шаги по Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑледÑÑÑÐ¸Ñ ÐºÐ»Ð°ÑÑеÑов логиÑеÑкой ÑепликаÑии пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð½Ð¸Ð¶Ðµ:
СледÑйÑе инÑÑÑÑкÑии в ÐодÑазделе 28.13.3.1, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÐºÐ»Ð°ÑÑÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии Ñ Ð´Ð²ÑÐ¼Ñ Ñзлами.
СледÑйÑе инÑÑÑÑкÑии в ÐодÑазделе 28.13.3.2, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÐºÐ»Ð°ÑÑÐµÑ ÐºÐ°Ñкадной логиÑеÑкой ÑепликаÑии.
СледÑйÑе инÑÑÑÑкÑии в ÐодÑазделе 28.13.3.3, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÐºÐ»Ð°ÑÑÐµÑ Ð´Ð²ÑнапÑавленной логиÑеÑкой ÑепликаÑии Ñ Ð´Ð²ÑÐ¼Ñ Ñзлами.
28.13.3.1. Шаги по Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа логиÑеÑкой ÑепликаÑии Ñ Ð´Ð²ÑÐ¼Ñ Ñзлами #
ÐÑедположим, ÑÑо пÑбликÑÑÑий ÑеÑÐ²ÐµÑ â node1, а подпиÑÑик â node2. У подпиÑÑика node2 еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка sub1_node1_node2 на Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° node1.
ÐÑклÑÑиÑе на
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... DISABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 DISABLE;
ÐÑÑановиÑе пÑбликÑÑÑий ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data1_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе пÑбликÑÑÑий ÑеÑÐ²ÐµÑ Ñзла
node1до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data1" --new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй пÑбликÑÑÑий ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l logfile
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика на Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data2_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node2подпиÑÑика до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data2" --new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика на Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l logfile
Ðа Ñзле
node2ÑоздайÑе ÑаблиÑÑ, ÑозданнÑе на обновлÑнном ÑеÑвеÑе пÑбликÑÑÑего Ñзлаnode2в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð¨Ð°Ð³ 1 и наÑÑоÑÑим моменÑом, напÑимеÑ:/* node2 # */ CREATE TABLE distributors (did integer PRIMARY KEY, name varchar(40));
ÐклÑÑиÑе на Ñзле
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... ENABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
ÐбновиÑе пÑбликаÑии подпиÑки Ñзла
node2, воÑполÑзоваÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... REFRESH PUBLICATION, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 REFRESH PUBLICATION;
ÐÑимеÑание
РопиÑаннÑÑ Ð²ÑÑе ÑÐ°Ð³Ð°Ñ Ð¿ÐµÑвÑм обновлÑеÑÑÑ Ð¿ÑбликÑÑÑей ÑеÑвеÑ, а поÑле него â подпиÑÑик. Ðак ваÑианÑ, можно воÑполÑзоваÑÑÑÑ Ñагами и ÑнаÑала обновиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑика, а заÑем пÑбликÑÑÑий ÑеÑвеÑ.
28.13.3.2. Шаги по Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа каÑкадной логиÑеÑкой ÑепликаÑии #
ÐÑедположим, Ñ Ð½Ð°Ñ ÐµÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ñ ÐºÐ°Ñкадной логиÑеÑкой ÑепликаÑией node1->node2->node3. Ð ÑÑом ÑлÑÑае node2 подпиÑÑваеÑÑÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node1, а node3 â на Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node2. У node2 еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка sub1_node1_node2, Ñо еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка на Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node1. У node3 еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка sub1_node2_node3, Ñо еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка на Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node2.
ÐÑклÑÑиÑе на
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... DISABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 DISABLE;
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data1_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node1до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data1" --new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l logfile
ÐÑклÑÑиÑе на
node3вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode2, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... DISABLE, напÑимеÑ:/* node3 # */ ALTER SUBSCRIPTION sub1_node2_node3 DISABLE;
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data2_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node2до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data2" --new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l logfile
Ðа Ñзле
node2ÑоздайÑе ÑаблиÑÑ, ÑозданнÑе на обновлÑнном ÑеÑвеÑе пÑбликÑÑÑего Ñзлаnode1в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð¨Ð°Ð³ 1 и наÑÑоÑÑим моменÑом, напÑимеÑ:/* node2 # */ CREATE TABLE distributors (did integer PRIMARY KEY, name varchar(40));
ÐклÑÑиÑе на Ñзле
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... ENABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
ÐбновиÑе пÑбликаÑии подпиÑки Ñзла
node2, воÑполÑзоваÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... REFRESH PUBLICATION, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 REFRESH PUBLICATION;
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node3, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data3 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data3_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node3до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data3" --new-datadir "/opt/PostgreSQL/postgres/18/data3_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновленнÑй ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node3, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data3_upgraded start -l logfile
Ðа Ñзле
node3ÑоздайÑе ÑаблиÑÑ, ÑозданнÑе на обновлÑнном Ñзлеnode2в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð¨Ð°Ð³ 6 и наÑÑоÑÑим моменÑом, напÑимеÑ:/* node3 # */ CREATE TABLE distributors (did integer PRIMARY KEY, name varchar(40));
ÐклÑÑиÑе на Ñзле
node3вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode2, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... ENABLE, напÑимеÑ:/* node3 # */ ALTER SUBSCRIPTION sub1_node2_node3 ENABLE;
ÐбновиÑе пÑбликаÑии подпиÑки Ñзла
node3, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... REFRESH PUBLICATION, напÑимеÑ:/* node3 # */ ALTER SUBSCRIPTION sub1_node2_node3 REFRESH PUBLICATION;
28.13.3.3. Шаги по Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑеÑа двÑнапÑавленной логиÑеÑкой ÑепликаÑии Ñ Ð´Ð²ÑÐ¼Ñ Ñзлами #
ÐÑедположим, Ñ Ð½Ð°Ñ ÐµÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ñ Ð´Ð²ÑнапÑавленной логиÑеÑкой ÑепликаÑией node1->node2 и node2->node1. Ð Ñаком ÑлÑÑае node2 подпиÑÑваеÑÑÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node1, а node1 подпиÑÑваеÑÑÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node2. У node1 еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка sub1_node2_node1, коÑоÑÐ°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node2. У node2 еÑÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñка sub1_node1_node2, коÑоÑÐ°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ node1.
ÐÑклÑÑиÑе на
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... DISABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 DISABLE;
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data1_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node1до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data1" --new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node1, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l logfile
ÐклÑÑиÑе на Ñзле
node2вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... ENABLE, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
Ðа Ñзле
node1ÑоздайÑе ÑаблиÑÑ, ÑозданнÑе наnode2в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð¨Ð°Ð³ 1 и наÑÑоÑÑим моменÑом, напÑимеÑ:/* node1 # */ CREATE TABLE distributors (did integer PRIMARY KEY, name varchar(40));
ÐбновиÑе пÑбликаÑии подпиÑки Ñзла
node1, ÑÑÐ¾Ð±Ñ ÑкопиÑоваÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе изnode2, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... REFRESH PUBLICATION, напÑимеÑ:/* node1 # */ ALTER SUBSCRIPTION sub1_node2_node1 REFRESH PUBLICATION;
ÐÑклÑÑиÑе на
node1вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode2, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... DISABLE, напÑимеÑ:/* node1 # */ ALTER SUBSCRIPTION sub1_node2_node1 DISABLE;
ÐÑÑановиÑе ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2 stop
ÐниÑиализиÑÑйÑе ÑкземплÑÑ
data2_upgraded, воÑполÑзовавÑиÑÑ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией.ÐбновиÑе ÑеÑÐ²ÐµÑ Ñзла
node2до новой веÑÑии, напÑимеÑ:pg_upgrade --old-datadir "/opt/PostgreSQL/postgres/17/data2" --new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded" --old-bindir "/opt/PostgreSQL/postgres/17/bin" --new-bindir "/opt/PostgreSQL/postgres/18/bin"ÐапÑÑÑиÑе обновлÑннÑй ÑеÑÐ²ÐµÑ Ð½Ð° Ñзле
node2, напÑимеÑ:pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l logfile
ÐклÑÑиÑе на
node1вÑе подпиÑки, коÑоÑÑе подпиÑÐ°Ð½Ñ Ð½Ð° изменениÑnode2, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... ENABLE, напÑимеÑ:/* node1 # */ ALTER SUBSCRIPTION sub1_node2_node1 ENABLE;
Ðа Ñзле
node2ÑоздайÑе ÑаблиÑÑ, ÑозданнÑе на обновлÑнном Ñзлеnode1в пÑомежÑÑок вÑемени Ð¼ÐµÐ¶Ð´Ñ Ð¨Ð°Ð³ 9 и наÑÑоÑÑим моменÑом, напÑимеÑ:/* node2 # */ CREATE TABLE distributors (did integer PRIMARY KEY, name varchar(40));
ÐбновиÑе пÑбликаÑии подпиÑки
node2, ÑÑÐ¾Ð±Ñ ÑкопиÑоваÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑаблиÑе изnode1, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ALTER SUBSCRIPTION ... REFRESH PUBLICATION, напÑимеÑ:/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 REFRESH PUBLICATION;