{"id":318774,"date":"2021-02-28T21:00:26","date_gmt":"2021-02-28T21:00:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318774"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318774","title":{"rendered":"\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432 PostgreSQL. \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rc\/4w\/c4\/rc4wc4pblkhrdji9tkuwdwvt2ro.jpeg\" alt=\"image\"><\/div>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 10 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b PostgreSQL \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u043d\u0435\u0432\u0430\u0436\u043d\u043e. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043c\u0430\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443: \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, 10 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u044b\u0448\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <code>wal_level=&quot;logical&quot;<\/code>. \u0412 pg_hba.conf \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<br \/>  <code>host db_name postgres 192.168.1.3\/32 trust<\/code><br \/>  \u0417\u0430\u0442\u0435\u043c \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 postgres \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438\u0437-\u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f postgres:<\/p>\n<pre><code class=\"bash\">pg_dumpall --database=postgres --host=192.168.1.2 --no-password --globals-only --no-privileges | psql pg_dump --dbname db_name --host=192.168.1.2 --no-password --create --schema-only | psql<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <code>postgres<\/code> \u043a \u0431\u0430\u0437\u0435 <code>db_name<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"pgsql\">CREATE PUBLICATION db_pub FOR ALL TABLES;<\/code><\/pre>\n<p>\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443:<\/p>\n<pre><code class=\"pgsql\">CREATE SUBSCRIPTION db_sub CONNECTION 'host=192.168.1.2 dbname=db_name' PUBLICATION db_pub;<\/code><\/pre>\n<p>\u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 (\u0438 \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u043e\u0438\u0442\u044c \u0441\u043b\u043e\u043d\u0435\u0441\u043a\u0443) \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0434\u0442\u0438 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0414\u0411\u0410.<br \/>  <sup>\u0414\u043b\u044f \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<\/sup><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0417\u0430\u0434\u0430\u0447\u0438, \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439<\/h2>\n<p>  \u0414\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/logical-replication\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>:  <\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430\u043c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442.<\/li>\n<li>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a.<\/li>\n<li>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0434\u043d\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430).<\/li>\n<li>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 PostgreSQL.<\/li>\n<li>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c\u0438 PostgreSQL \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 Linux \u043d\u0430 Windows).<\/li>\n<li>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/li>\n<li>\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<\/ul>\n<p>  \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u0434\u043e\u0431\u043d\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441\u0445\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0431\u0430\u0437\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0445\u0435\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0430\u0441\u043d\u043e. <\/p>\n<p>  \u042d\u0442\u043e \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u2014 \u00ab\u0410 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0451\u043c \u0431\u0430\u0437\u044b \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c!\u00bb. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0442\u0438\u043f\u0430 JSON \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446, \u043b\u0438\u0431\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0443\u0436\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u0438 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0431\u0430\u0437\u0443, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 <s>\u043d\u0430\u043f\u0438\u043b\u044c\u043d\u0438\u043a\u043e\u043c<\/s> \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\u043c\u0438. \u041c\u043e\u0436\u043d\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 TOAST, \u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u044c. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0441\u0435\u0440\u0434\u0438\u0438 \u2014 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043f\u0443\u043d\u043a\u0442:<\/p>\n<ul>\n<li>\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0440\u044b\u0432\u0430 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438.<\/li>\n<\/ul>\n<p>  \u041d\u043e, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442, \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432, \u0435\u0449\u0451 \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/logical-replication-restrictions\">\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/a> \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438. \u0417\u043d\u0430\u0442\u044c \u0438\u0445 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442, \u0432\u0435\u0434\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043d\u0430\u0434 \u043a\u0430\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0444\u0435\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0443\u0447\u0435\u0431\u043d\u043e\u0439 \u0411\u0414. <\/p>\n<h2>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u043a \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043c<\/h2>\n<p>  \u041d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0421\u0423\u0411\u0414 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0440\u0430\u0437\u043d\u0438\u0442\u044c\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u0432\u0430\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/logical-replication\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439<\/a> \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (<a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/release\">10<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/11\/release\">11<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/release\">12<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/release\">13<\/a>) \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0411\u0414. <\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/sql-createpublication\">\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439<\/a> \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/13\/sql-createsubscription\">\u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a<\/a>, \u0432\u0441\u0451 \u044d\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u043e\u0441\u0438\u0442 \u043e\u0431\u0437\u043e\u0440\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0438 \u043d\u0435 \u0441\u043b\u0443\u0436\u0438\u0442 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. <\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/h3>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>psql<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a <code>pgcli<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u0443\u0434\u0430 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0443\u0449\u0435\u0440\u0431\u043e\u043c \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0431\u0430\u0437\u0443 <code>test<\/code>, \u0430 \u0432 \u043d\u0435\u0439 \u0441\u0445\u0435\u043c\u0443 <code>ts<\/code>:  <\/p>\n<pre><code class=\"sql\">CREATE DATABASE test; \\c test CREATE SCHEMA ts;  REVOKE ALL PRIVILEGES    ON DATABASE test   FROM public; -- \u0432\u0435\u0434\u044c \u0443 \u0432\u0430\u0441 \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0432\u0441\u0451 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435? ---<\/code><\/pre>\n<p>  \u041d\u0435 \u0432\u0441\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u044c, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441\u0430.<br \/>  <b><i>\u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u0434\u0430 \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 \u0421\u0423\u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0435\u043c-\u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0421\u0423\u0411\u0414 \u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u043c\u0430\u043b\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439. \u041b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u0412\u041c \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445.<\/i><\/b><\/p>\n<h2>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0439 (\u043c\u0438\u043d\u043e\u0440\u043d\u043e\u0439) \u0432\u0435\u0440\u0441\u0438\u0438<\/h2>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u2014 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043c\u0438\u043d\u043e\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>FOR ALL TABLES<\/code>.<br \/>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f? \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443:  <\/p>\n<ol>\n<li>\u0412 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 10.8 \u0438 11.3 \u0431\u044b\u043b \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/f3f151f7-c4dd-1646-b998-f60bd6217dd3@2ndquadrant.com\">\u0431\u0430\u0433<\/a> \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u0432\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, \u043d\u043e, \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u0442\u0430\u043a\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435: <code>ERROR: cannot update table &quot;logical_replication_test&quot; because it does not have a replica identity and publishes updates<\/code> \u0438 \u043e\u0442\u043c\u0435\u043d\u044f\u043b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e. \u0425\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043d\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e;<\/li>\n<li>\u0412 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 10.11 \u0438 11.6 \u0431\u044b\u043b \u0443\u0441\u0442\u0440\u0430\u043d\u0451\u043d <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/a9139c29-7ddd-973b-aa7f-71fed9c38d75%40minerva.info\">\u0432\u044b\u0432\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438<\/a> \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u043b\u0441\u044f. \u041f\u0440\u0430\u0432\u0434\u0430 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <a href=\"#uncosistecy\">\u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f<\/a>;<\/li>\n<li>\u0412 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 10.12, 11.7, 12.2 \u0431\u044b\u043b \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438 \u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0442\u0430\u0431\u043b\u0438\u0446 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (&quot;\u2026 clmname numeric DEFAULT random() &#8230;&quot;).<\/li>\n<li>\u0412 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 10.16, 11.11, 12.6 13.2 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u043b\u0438 \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 walsender \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<\/ol>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u0430\u0436\u0430 \u0438\u0441\u0442\u0440\u0451\u043f\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0440\u0432\u043e\u0432, \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0438 \u0437\u0430\u0439\u043c\u0451\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u043e\u043b\u0435\u0439 \u0438 \u0441\u0442\u0440\u043e\u043a \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 pg_hba.conf<\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043c\u0438\u043d\u043e\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435 \u0440\u043e\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0440\u043e\u043b\u044f\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/logical-replication-security\">\u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f<\/a>. <\/p>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u043e\u043b\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u043e\u043b\u044c\u044e <code>postgres<\/code>. <\/p>\n<p>  \u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0431\u044b\u0442\u044c \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0442\u043e \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u043e\u043b\u0438, \u043d\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0440\u043e\u043b\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u043e\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:  <\/p>\n<pre><code class=\"sql\">SET password_encryption = 'scram-sha-256'; CREATE ROLE log_rep_rolename    WITH SUPERUSER         LOGIN        PASSWORD 'sadp!'; -- sadp! = StrongAndDifficultPassword!  -- \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u043a\u0430\u0432\u044b\u0447\u0435\u043a (', &quot;) \u0432 \u043f\u0430\u0440\u043e\u043b\u0435, -- \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. <\/code><\/pre>\n<p>  \u0412 pg_hba.conf \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0432\u0435 \u0437\u0430\u043f\u0438\u0441\u0438: \u043e\u0434\u043d\u0443 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0434\u0440\u0443\u0433\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0438. \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u043f\u043b\u0438\u043a \u2014 \u043b\u0443\u0447\u0448\u0435 \u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 pg_hba, \u0447\u0435\u043c \u043e\u0434\u043d\u0430 \u0434\u044b\u0440\u0430 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.<br \/>  <code>host test log_rep_rolename 127.0.0.1\/32 scram-sha-256<br \/>  host test log_rep_rolename 192.168.122.95 255.255.255.255 scram-sha-256<\/code><br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e, \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c <code>replication<\/code>, \u0430 \u0438\u043c\u044f \u0431\u0430\u0437\u044b \u0438\u043b\u0438 <code>all<\/code> \u2014 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0441\u0435 \u0431\u0430\u0437\u044b. \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>replication<\/code>, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437-\u043f\u043e\u0434 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:  <\/p>\n<pre><code class=\"sql\">SELECT pg_reload_conf(); ---<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b<\/h2>\n<p>  \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u0438\u0434\u0435\u0435 <i>\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432<\/i>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430, \u043b\u0438\u0431\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0432 <code>REPLICA IDENTITY USING INDEX<\/code>, \u043b\u0438\u0431\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 <code>REPLICA IDENTITY FULL<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 <i>\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432<\/i>. \u041e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>INSERT<\/code>. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u2014 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043d\u0435\u0451 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0443\u0436\u043d\u044b \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446, \u0430 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 <code>NOT NULL<\/code> \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f. \u041d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a <a href=\"#update_delete_fail\">\u043e\u0442\u043c\u0435\u043d\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/a> \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u043c\u0430\u043b\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0444\u0430\u043a\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0431\u0430\u0437\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0438\u0441\u043a \u0442\u0430\u0431\u043b\u0438\u0446, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">SELECT pgn.nspname || '.' || pgc.relname AS &quot;\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0431\u0435\u0437 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432&quot;   FROM pg_class AS pgc,        pg_namespace AS pgn   WHERE pgn.nspname !~ '^(?:pg_.*|information_schema)$'     AND pgc.relreplident IN ('n', 'd')     AND pgc.relkind IN ('r', 'p')      AND pgc.oid NOT IN (SELECT pgi.indrelid FROM pg_index AS pgi WHERE pgi.indisprimary)     AND pgc.relnamespace = pgn.oid     ORDER BY 1; ---<\/code><\/pre>\n<\/div><\/div>\n<h3>\u0427\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<\/h3>\n<p>  \u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446. \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 \u0438\u043b\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443, \u0435\u0451 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043b\u0438\u0431\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0445 \u043a \u0440\u043e\u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043d\u0435\u0442, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0442\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c. \u041a\u0430\u0436\u0434\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u0430\u043a \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u0442\u0430\u043a \u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0438\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u2014 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0432\u0430\u0436\u043d\u043e \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431 \u043e\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u0440\u043e\u043b\u044c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0442\u0438\u043f\u044b UUID. <\/p>\n<h3>\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: \u0440\u0443\u0447\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/functions-sequence\">nextval<\/a><\/code>; \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u0442\u0438\u043f\u0430 <code><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/datatype-numeric#DATATYPE-SERIAL\">serial<\/a><\/code>; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <i>\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/i> \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c SQL. \u0412\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <code>NOT NULL<\/code>.<\/p>\n<p>  <b>SEQUENCE \u0438 serial<\/b><br \/>  \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u043c \u0438 \u043c\u043e\u0449\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/sql-createsequence\"><code>SEQUENCE<\/code><\/a>. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443-\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u0422\u0438\u043f <code><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/datatype-numeric#DATATYPE-SERIAL\">serial<\/a><\/code> \u044d\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440 \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439, \u044d\u0442\u0430\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d. \u0412\u0441\u0451 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u0442\u0438\u043f smallserial\/serial\/bigserial.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 <code>serial<\/code> \u043c\u0435\u043d\u0435\u0435 \u0433\u0438\u0431\u043a\u043e, \u043d\u043e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0422\u0430\u043a\u0436\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>OWNED BY<\/code>. \u042d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. <\/p>\n<p>  \u0422\u0430\u043a\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0432 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435. \u0418 \u0437\u0434\u0435\u0441\u044c \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u2014 \u0443\u0434\u0430\u043b\u0438\u0432 \u0442\u0430\u043a\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <code>CASCADE<\/code> \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u043c\u0430\u0433\u0435\u0434\u0434\u043e\u043d. \u0412 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c \u043a \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>NOT NULL<\/code>, \u0430 \u0432\u043e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>DEFAULT<\/code> \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0423 \u043f\u043e\u043b\u0435\u0439 <code>serial<\/code> \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f <a href=\"https:\/\/www.2ndquadrant.com\/en\/blog\/postgresql-10-identity-columns\">\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c<\/a> \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0430 <code>INSERT<\/code> \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0443\u043a\u0430\u0436\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f <code>serial<\/code> \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0436\u0435\u0442, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0430 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<p>  <b>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/b><br \/>  \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u0431\u043b\u0438\u0446, \u2014 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 <code>nextval(\u043d\u0443\u0436\u043d\u0430\u044f_\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c)<\/code> \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 <code>DEFAULT<\/code> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0430\u0441 \u0441\u0442\u043e\u043b\u0431\u0446\u0430. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0436\u043d\u043e \u0438 \u0442\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>serial<\/code> \u2014 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0451 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b: \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443-\u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438: <code>ALTER SEQUENCE name_of_your_seq OWNED BY NONE<\/code>.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">CREATE TABLE t1 (i serial, t text); CREATE TABLE t2 (i int NOT NULL DEFAULT nextval('t1_i_seq'), t text); INSERT INTO t2 (t) VALUES('The first value in table t2'); INSERT INTO t1 (t) VALUES('The first value in table t1'); SELECT * FROM t1; SELECT * FROM t2; \\d t2 DROP TABLE t1; DROP SEQUENCE t1_i_seq; DROP TABLE t1 CASCADE; INSERT INTO t2 (t) VALUES('Maybe the second value in table t2'); \\d t2 DROP TABLE t2; ---<\/code><\/pre>\n<\/div><\/div>\n<p>  <b>\u0421\u0442\u043e\u043b\u0431\u0446\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/b><br \/>  \u041f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 SQL c\u0442\u043e\u043b\u0431\u0446\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043b\u0438\u0431\u043e \u0438\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u0442\u044c \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043b\u0438\u0431\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044d\u0442\u043e \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u0435\u0441\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0451 \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c <code>CASCADE<\/code>, \u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>DEFAULT<\/code> \u0443 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u044d\u0442\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u0441\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>NOT NULL<\/code> \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043d\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0448\u0430\u043d\u0441 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0440\u0434\u044b <code>null value in column &quot;i&quot; violates not-null constraint<\/code>. \u0421 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>serial<\/code> \u0442\u043e\u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u0431\u044b\u0432\u0430\u0435\u0442, \u043d\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c\u043e \u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043b\u0438\u0431\u043e \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043d\u0443\u0436\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043b\u0438\u0431\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0435\u0451 \u00ab\u0431\u0435\u0441\u0445\u043e\u0437\u044f\u0439\u043d\u043e\u0439\u00bb. \u0421 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043e\u0441\u043e\u0431\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438 \u0442\u0438\u043f\u0435 <code>serial<\/code> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u043b\u044e\u0431\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e (\u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d <code>PRIMARY KEY<\/code>). <\/p>\n<p>  \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0434\u0430\u0441\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0430\u044f \u0438\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0440\u0432\u0451\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 <a href=\"#duplicate_key\"><code>duplicate key<\/code><\/a>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u043e \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u2014 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c <code>ALWAYS<\/code>, \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>INSERT<\/code>. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u0435 \u0436\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <b>Universally Unique IDentifiers<\/b><br \/>  \u0415\u0441\u043b\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u0442\u0438\u043f <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/datatype-uuid\">UUID<\/a>, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f UUID \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439: <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/uuid-ossp\">uuid-ossp<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/12\/uuid-ossp\">pgcrypto<\/a><\/p>\n<p>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 UUID \u0438\u043c\u0435\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u043d\u0435 16\/32\/64 \u0431\u0438\u0442\u0430, \u0430 128 \u0431\u0438\u0442, \u2014 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u0430\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0417\u0430\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0442\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e, \u0447\u0442\u043e UUID \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. <\/p>\n<p>  \u041a \u0441\u043b\u043e\u0432\u0443, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u043e\u0431\u043c\u0435\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0421\u0442\u043e\u043b\u0431\u0435\u0446 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c, \u043d\u043e \u0434\u0430\u0436\u0435 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u0435\u0435.<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f UUID \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <code>pg_crypto<\/code>. \u0412 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f UUID:<\/p>\n<pre><code class=\"sql\">CREATE EXTENSION pgcrypto; SELECT gen_random_uuid();<\/code><\/pre>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c <code>uuid-ossp<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>pg_crypto<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0438\u043f\u0430 UUID. \u0415\u0441\u043b\u0438 PostgreSQL \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0438\u043c\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0435\u0444\u0438\u0441. \u0415\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 PostgreSQL \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u044e\u0447\u043e\u043c &#8212;with-uuid=ossp (\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Debian, \u043a\u0430\u043a \u0432 RHEL \u2014 \u043d\u0435 \u0437\u043d\u0430\u044e). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0443, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442\u043e\u0432:  <\/p>\n<pre><code class=\"bash\"># Debian Buster #    \u043f\u0430\u043a\u0435\u0442 postgresql-10 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e  #    \u0438\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. sudo apt-get install gcc libossp-uuid-dev libreadline-dev make zlib1g-dev wget https:\/\/ftp.postgresql.org\/pub\/source\/v10.16\/postgresql-10.16.tar.gz gunzip postgresql-10.16.tar.gz tar xf postgresql-10.16.tar cd postgresql-10.16 .\/configure --with-uuid=ossp make make install<\/code><\/pre>\n<pre><code class=\"sql\">CREATE EXTENSION &quot;uuid-ossp&quot;; SELECT uuid_generate_v1(); SELECT uuid_generate_v1mc(); SELECT uuid_generate_v3(uuid_ns_url(), 'https:\/\/postgrespro.ru\/'); SELECT uuid_generate_v4(); SELECT uuid_generate_v5(uuid_ns_dns(), 'postgrespro.ru');<\/code><\/pre>\n<h2>\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/h2>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438. \u041e\u043d\u0438, \u043a\u0430\u043a \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043d\u0435 \u043e\u043f\u0430\u0441\u0430\u044f\u0441\u044c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>.<\/p>\n<p>  \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>NOT NULL<\/code> \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u043f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>INSERT<\/code> \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438. \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0442\u0443\u0442 \u0443\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u0435\u043b\u0430\u0435\u0448\u044c, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043b\u043e\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u2014 \u0447\u0442\u043e\u0431 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f, \u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u043a\u0430\u0436\u0434\u044b\u0435 \u043f\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 pg_hba.conf \u0438\u043b\u0438 \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435, \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441 \u043e\u0431\u043e\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d, \u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0434\u0430\u0436\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438, \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0432 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 <code>SHARE ROW EXCLUSIVE<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <code>CONCURRENTLY<\/code> \u0438 \u0437\u0430\u0442\u0435\u043c \u0443\u0436\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430. \u0414\u0430 \u2014 \u044d\u0442\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0451\u043c\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0437\u0430\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0411\u0414 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0435, \u043d\u0435 \u0438\u043c\u0435\u044e\u0449\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 <code>NOT NULL<\/code>, \u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f.   <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f NOT NULL<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">CREATE TABLE ts.testt (i serial, clmn_1 text, clmn_2 int); \\d ts.testt \/*                          Table &quot;ts.testt&quot;  Column |  Type   | Nullable |             Default              --------+---------+----------+---------------------------------  i      | integer | not null | nextval('testt_i_seq'::regclass)  clmn_1 | text    |          |   clmn_2 | integer |          |                                   *\/ ALTER TABLE ts.testt ADD PRIMARY KEY (i, clmn_1); \\d ts.testt \/*                          Table &quot;ts.testt&quot;  Column |  Type   | Nullable |             Default              --------+---------+----------+---------------------------------  i      | integer | not null | nextval('testt_i_seq'::regclass)  clmn_1 | text    | not null |   clmn_2 | integer |          |  Indexes:     &quot;testt_pkey&quot; PRIMARY KEY, btree (i, clmn_1)                  *\/ ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; \\d ts.testt \/*                          Table &quot;ts.testt&quot;  Column |  Type   | Nullable |             Default              --------+---------+----------+---------------------------------  i      | integer | not null | nextval('testt_i_seq'::regclass)  clmn_1 | text    | not null |   clmn_2 | integer |          |                                   *\/ ALTER TABLE ts.testt ADD PRIMARY KEY (i); \\d ts.testt \/*                          Table &quot;ts.testt&quot;  Column |  Type   | Nullable |             Default              --------+---------+----------+---------------------------------  i      | integer | not null | nextval('testt_i_seq'::regclass)  clmn_1 | text    | not null |   clmn_2 | integer |          |  Indexes:     &quot;testt_pkey&quot; PRIMARY KEY, btree (i)                          *\/ ALTER TABLE ts.testt ALTER COLUMN clmn_1 DROP NOT NULL; \\d ts.testt \/*                          Table &quot;ts.testt&quot;  Column |  Type   | Nullable |             Default              --------+---------+----------+---------------------------------  i      | integer | not null | nextval('testt_i_seq'::regclass)  clmn_1 | text    |          |   clmn_2 | integer |          |  Indexes:     &quot;testt_pkey&quot; PRIMARY KEY, btree (i)                          *\/ DROP TABLE ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u041e\u0421\u041b\u0415\u0414\u041e\u0412\u0410\u0422\u0415\u041b\u042c\u041d\u041e\u0421\u0422\u0418 -- \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c CREATE SEQUENCE ts.testt_sequence AS bigint    INCREMENT BY 1    MINVALUE 1    NO MAXVALUE    START WITH 1    OWNED BY NONE; \\ds+ ts.testt_sequence -- \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 -- \u041b\u0438\u0431\u043e \u0441\u0440\u0430\u0437\u0443 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e CREATE TABLE ts.testt (   i bigint      PRIMARY KEY      NOT NULL      DEFAULT nextval('ts.testt_sequence'::regclass),    ac text); \\d+ ts.testt DROP TABLE ts.testt; -- \u041b\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0438 \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0435\u0435 CREATE TABLE ts.testt (i bigint, ac text); INSERT INTO ts.testt (i, ac) VALUES (1, '1'), (1, '2'), (2, '3'), (3, '4'); SELECT * FROM ts.testt; ALTER TABLE ts.testt ALTER COLUMN i SET DEFAULT nextval('ts.testt_sequence'); INSERT INTO ts.testt (ac) VALUES ('5'), ('6'), ('7'), ('8'); SELECT * FROM ts.testt; UPDATE ts.testt SET i = nextval('ts.testt_sequence'::regclass); SELECT * FROM ts.testt; ALTER TABLE ts.testt ALTER COLUMN i SET NOT NULL; ALTER TABLE ts.testt ADD PRIMARY KEY (i); \\d+ ts.testt DROP TABLE ts.testt; DROP SEQUENCE ts.testt_sequence; -- -- C \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430 serial \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, -- \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 CREATE TABLE ts.testt (   i bigserial PRIMARY KEY,    ac text); \\d+ ts.testt -- \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043b\u043e\u043d\u043e\u043a -- \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u0438\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; \\d+ ts.testt -- \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439, \u0434\u0432\u0443\u0445\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0439. ALTER TABLE ts.testt ADD PRIMARY KEY (i, ac); \\d+ ts.testt DROP TABLE ts.testt; -- -- \u0421\u0422\u041e\u041b\u0411\u0426\u042b \u0418\u0414\u0415\u041d\u0422\u0418\u0424\u0418\u041a\u0410\u0426\u0418\u0418 -- \u041c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438 CREATE TABLE ts.testt (   i bigint     GENERATED ALWAYS AS IDENTITY (       INCREMENT BY 1        MINVALUE 1        START WITH 1)      PRIMARY KEY,   ac text); \\d+ ts.testt \\d ts.testt_i_seq -- \u041c\u0435\u043d\u044f\u0435\u043c ALWAYS \u043d\u0430 BY DEFAULT ALTER TABLE ts.testt ALTER COLUMN i SET GENERATED BY DEFAULT; \\d+ ts.testt \\d ts.testt_i_seq -- \u0423\u0434\u0430\u043b\u044f\u0435\u043c IDENTITY \u0441\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 ALTER TABLE ts.testt ALTER COLUMN i DROP IDENTITY; \\d+ ts.testt \\d ts.testt_i_seq -- \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c IDENTITY \u0438\u043c\u0435\u044e\u0449\u0435\u043c\u0443\u0441\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0443  ALTER TABLE ts.testt    ALTER COLUMN i ADD GENERATED ALWAYS AS IDENTITY (START WITH 1001); \\d+ ts.testt \\d ts.testt_i_seq SELECT * FROM ts.testt_i_seq; -- \u041c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441 IDENTITY ALTER TABLE ts.testt    ADD COLUMN impk bigint GENERATED ALWAYS AS IDENTITY; \\d+ ts.testt \\d ts.testt_impk_seq -- \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0447\u0435\u0440\u0435\u0437 -- \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 -- \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c: CREATE UNIQUE INDEX CONCURRENTLY testt_hm_idx ON ts.testt (i, impk); ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey,     ADD CONSTRAINT hm_pkey PRIMARY KEY USING INDEX testt_hm_idx; \\d+ ts.testt DROP TABLE ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<p>  <b>\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/b><br \/>  \u041d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043d\u043e \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044f\u0432\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f <code>... REPLICA IDENTITY USING INDEX name_of_index ...<\/code> \u0438 \u0441 \u043d\u0438\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c <a href=\"#pk_and_idx_is_ud_fail\">\u043f\u043e\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435<\/a>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441, \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043d\u0430\u0431\u0434\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c <code>NOT NULL<\/code>. <\/p>\n<p>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: <i>\u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u043c, \u043d\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 NOT NULL<\/i>. \u0421\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0438\u0445 \u0441\u043e\u0441\u0442\u0430\u0432\u043e\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435. \u0415\u0441\u043b\u0438 \u0432 \u043d\u0443\u0436\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0432 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u043d\u0435\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u2014 \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c, \u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0443 \u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447. \u041c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0433\u0434\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u043d\u0434\u0435\u043a\u0441, \u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u041f\u041a<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial, t text NOT NULL DEFAULT random(), d text DEFAULT random()); CREATE UNIQUE INDEX CONCURRENTLY testt_idx ON ts.testt USING btree (i, t); ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial, t text NOT NULL DEFAULT random(), d text DEFAULT random()); ALTER TABLE ts.testt ADD PRIMARY KEY (t, i); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 INSERT INTO ts.testt (t, d) VALUES ('004', 'fourth'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 UPDATE UPDATE ts.testt SET t = t || ' upd' WHERE random() &gt;= 0.5; INSERT INTO ts.testt (t, d) VALUES ('005', 'AFTER UPDATE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt;  -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 DELETE DELETE FROM ts.testt WHERE random() &gt;= 0.5; INSERT INTO ts.testt (t, d) VALUES ('006', 'AFTER DELETE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<p>  <b>REPLICA IDENTITY FULL<\/b><br \/>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043f\u0440\u0438 <code>REPLICA IDENTITY FULL<\/code> \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0436\u0438\u0442 \u0432\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u041d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 <code>TOAST<\/code> \u2014 \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0445 \u043d\u0435 \u043a\u043e\u0441\u043d\u0443\u043b\u0438\u0441\u044c. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0451\u043c \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f <code>REPLICA IDENTITY FULL<\/code> \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e \u2014 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>REPLICA IDENTITY FULL<\/code>, \u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c (\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442), \u0438\u043d\u0430\u0447\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u2014 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043b\u0438\u0448\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b. <\/p>\n<p>  \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0442\u0430\u043a \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u044b \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u2014 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0438 \u043e\u043d\u0438 \u0434\u0430\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435. \u041d\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044f \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>NULL<\/code> \u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442. <\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u044b \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u2014 \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0431\u0435\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0431\u0430\u0437\u0435. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u043d\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u2014 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u0442\u043e\u0433\u0434\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e, \u0445\u043e\u0442\u044c \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0438 \u0431\u0443\u0434\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u0438 <code>REPLICA IDENTITY FULL<\/code> \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 \u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430.<\/p>\n<p>  <code>REPLICA IDENTITY FULL<\/code> \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445, \u0440\u0435\u0434\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u043a \u2014 \u0438\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f. \u041d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0440\u043e\u043c\u0435\u0442\u0447\u0438\u0432\u043e.<\/p>\n<p>  \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u044d\u0442\u043e\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e:  <\/p>\n<pre><code class=\"sql\">ALTER TABLE ts.testt REPLICA IDENTITY FULL;<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 REPLICA IDENTITY FULL<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial, t text, d text DEFAULT now()); ALTER TABLE ts.testt REPLICA IDENTITY FULL; INSERT INTO ts.testt (t) VALUES ('first'), ('second'), ('third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial, t text, d text); ALTER TABLE ts.testt REPLICA IDENTITY FULL; CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 INSERT INTO ts.testt (t) VALUES ('INSERTED'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 UPDATE UPDATE ts.testt SET t = t || ' upd' WHERE i = 1; INSERT INTO ts.testt (t) VALUES ('AFTER UPDATE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt;  -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 DELETE DELETE FROM ts.testt WHERE i = 1; INSERT INTO ts.testt (t) VALUES ('AFTER DELETE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 <code>REPLICA IDENTITY FULL<\/code> \u0437\u0430\u0434\u0430\u043d\u0430, \u0442\u043e \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0435\u0451 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0440\u043e\u043b\u0438 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 \u2014 \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d \u0442\u0430\u043a\u043e\u0432\u043e\u043c\u0443 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0418\u043d\u0430\u0447\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>INSERT<\/code>, \u0430 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 11 \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u2014 \u0442\u043e \u0438 <code>TRUNCATE<\/code>. \u041a\u043e\u043c\u0430\u043d\u0434\u044b <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0439\/\u0443\u0434\u0430\u043b\u044f\u0435\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u044b NULL.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0441 REPLICA IDENTITY NOTHING<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial,                         t text,                         d text); ALTER TABLE ts.testt REPLICA IDENTITY FULL; INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 SELECT pg_reload_conf(); CREATE TABLE ts.testt (d text,                         t text,                        i serial); ALTER TABLE ts.testt REPLICA IDENTITY NOTHING; CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename               password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 INSERT, UPDATE, DELETE INSERT INTO ts.testt (t, d) VALUES ('004', 'fourth'); UPDATE ts.testt SET t = t || ' upd' WHERE i = 4; DELETE FROM ts.testt WHERE i = 1; SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u2014 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438: <\/p>\n<pre><code class=\"sql\">ALTER TABLE ts.testt REPLICA IDENTITY NOTHING;<\/code><\/pre>\n<p>\u044d\u0442\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438, \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0435\u0442\u044c. \u041d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 <code>INSERT<\/code>, \u0438\u043d\u0430\u0447\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u2014 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<h3>\u0421\u043e\u0441\u0442\u0430\u0432 \u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432<\/h3>\n<p>  \u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0434\u0430\u0436\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434 <code>INSERT<\/code> \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u0442\u0440\u043e\u043a \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 <code>REPLICA IDENTITY FULL<\/code>, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041f\u0440\u0438\u0447\u0451\u043c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0440\u0438\u0446\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u043e\u0433\u0443, \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f <a href=\"#uncosistecy\">\u043d\u0435\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438<\/a> \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u043b\u0438\u0431\u043e \u0435\u0449\u0451 \u0438 <a href=\"#overgrowth_wal\">\u0440\u0430\u0437\u0434\u0443\u0442\u044c<\/a> \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043e \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432. \u0427\u0442\u043e, \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043a\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f (\u0443\u0441\u043b\u043e\u0432\u043d\u043e) \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0421 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435. \u0425\u043e\u0442\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0437\u0430\u0442\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435. \u0418 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0431\u0435\u0437 \u043e\u043f\u0430\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial,                         t varchar NOT NULL DEFAULT random(),                         d varchar DEFAULT random()); CREATE UNIQUE INDEX CONCURRENTLY testt_idx ON ts.testt USING btree (i, t); ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 (\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0438\u043f\u044b) CREATE TABLE ts.testt (d text DEFAULT random(),                         s text DEFAULT now(),                        t text NOT NULL DEFAULT random(),                         i bigserial); CREATE UNIQUE INDEX CONCURRENTLY testt_idx ON ts.testt USING btree (t, i); ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 INSERT INTO ts.testt (t, d) VALUES ('004', 'fourth'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 UPDATE UPDATE ts.testt SET t = t || ' upd' WHERE random() &gt;= 0.5; INSERT INTO ts.testt (t, d) VALUES ('005', 'AFTER UPDATE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt;  -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 DELETE DELETE FROM ts.testt WHERE random() &gt;= 0.5; INSERT INTO ts.testt (t, d) VALUES ('006', 'AFTER DELETE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2>\u0421\u043a\u043b\u0430\u0434 \u0433\u0440\u0430\u0431\u0435\u043b\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0451\u043d \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0449\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439. \u041b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c, \u0447\u0435\u043c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u2014 \u0447\u0438\u0442\u0430\u0435\u043c \u0438 \u0432\u043e\u043e\u0440\u0443\u0436\u0430\u0435\u043c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<h2><a name=\"update_delete_fail\"><\/a>\u0415\u0441\u043b\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0431\u044e\u0434\u0436\u0435\u0442<\/h2>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 <code>INSERT<\/code>, <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> (\u0438 <code>TRUNCATE<\/code>, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 11 \u0432\u0435\u0440\u0441\u0438\u0438). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0443 \u0432\u0441\u0435\u0445 \u0442\u0430\u0431\u043b\u0438\u0446. \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e \u2014 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u0440\u043e\u0441 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code class=\"pgsql\">ALTER TABLE tablename REPLICA IDENTITY DEFAULT; ALTER TABLE tablename REPLICA IDENTITY NOTHING;<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u2014 \u0441\u0431\u0440\u043e\u0441 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u0435\u0441\u0442\u044c \u2014 \u0436\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e. \u0412\u0442\u043e\u0440\u043e\u0435 \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0438\u043b\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0432\u043e\u043e\u0431\u0449\u0435, \u0442\u043e, \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:  <\/p>\n<pre><code class=\"plaintext\">ERROR:  cannot update table &quot;tablename&quot; because it does not have a replica identity and publishes updates HINT:  To enable updating the table, set REPLICA IDENTITY using ALTER TABLE.  ERROR:  cannot delete from table &quot;tablename&quot; because it does not have a replica identity and publishes deletes HINT:  To enable deleting from the table, set REPLICA IDENTITY using ALTER TABLE.<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 <code>INSERT<\/code> \u0438, \u0434\u043b\u044f \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u2014 <code>TRUNCATE<\/code>. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0434\u0432\u0430 \u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 <code>publish='insert'<\/code> \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial,                         t varchar,                         d varchar); ALTER TABLE ts.testt REPLICA IDENTITY NOTHING; INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c INSERT INSERT INTO ts.testt (t, d) VALUES ('004', 'fourth'); -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c UPDATE UPDATE ts.testt SET t = t || ' upd' WHERE i = 3; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c DELETE DELETE FROM ts.testt WHERE i = 4; SELECT * FROM ts.testt; -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e ALTER PUBLICATION testt_pub SET (publish = 'insert'); -- v.10 --ALTER PUBLICATION testt_pub SET (publish = 'insert, truncate'); -- v. &gt;=11 -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c UPDATE UPDATE ts.testt SET t = t || ' upd' WHERE i = 3; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c DELETE DELETE FROM ts.testt WHERE i = 4; SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"uncosistecy\"><\/a>&#8230; not find row.. .<\/h2>\n<pre><code class=\"plaintext\">DEBUG:  logical replication did not find row for update in replication target relation &quot;your_table_name&quot; DEBUG:  logical replication could not find row for delete in replication target relation &quot;your_table_name&quot;<\/code><\/pre>\n<p> \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u043e\u0433\u0434\u0430:<br \/>  \u204d \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0438 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 <code>NULL<\/code>;<br \/>  \u204d \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c;<br \/>  \u204d \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0441\u0442\u0440\u043e\u043a\u0438;<br \/>  \u204d \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<br \/>  \u0415\u0441\u043b\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u0442\u043e, \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>log_min_messages=warning<\/code>, \u044d\u0442\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u043b\u043e\u0433\u0430\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u041e\u0442 \u0442\u043e\u0433\u043e \u0438 \u043e \u043f\u0440\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0437\u0434\u043d\u043e. \u0410 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0443\u0437\u043d\u0430\u0442\u044c. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0421\u0423\u0411\u0414 \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u043e\u0432 \u0431\u044b\u043b \u043f\u043b\u0430\u043d. \u041d\u043e \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0431\u044b\u043b \u043f\u043b\u0430\u043d, \u0442\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>  \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0430\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 <code>log_min_messages=debug1<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u0451\u043c \u043b\u043e\u0433\u043e\u0432, \u043d\u043e \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445, \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0430 \u043d\u0430\u0439\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0443\u044e\/\u0443\u0434\u0430\u043b\u044f\u0435\u043c\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0432\u0430\u043b\u043a\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0430 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0448\u0430\u043d\u0441\u0430 \u0435\u0439 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f. \u041c\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d \u043e\u0431 \u044d\u0442\u043e\u043c \u0438 \u0432 \u0441\u0432\u043e\u0438 \u043b\u043e\u0433\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432 \u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0435\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u2014 \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0436\u0443\u0440\u043d\u0430\u043b\u0430. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0437\u0430\u0442\u0435\u043c, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u0438\u0445, \u043e\u0442\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0443, \u0447\u0442\u043e \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432\u044b\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043b: 1. \u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438; <br \/>  2. \u041d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u0438 \u0432\u044b\u0447\u0438\u0449\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443;<br \/>  3. \u041f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0443;<br \/>  4. \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e; <br \/>  5. \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u0436\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<br \/>  \u0410 \u0432\u0441\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u2014 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>REPLICA IDENTITY FULL<\/code> \u0438\u043b\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c, \u0431\u0435\u0437\u0434\u0443\u043c\u043d\u043e, \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435.<\/p>\n<p>  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>INSERT<\/code> \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial,                         t varchar,                         d varchar); ALTER TABLE ts.testt REPLICA IDENTITY FULL; INSERT INTO ts.testt (t, d)    VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 SELECT setting AS lmm FROM pg_settings WHERE name = 'log_min_messages' \\gset ALTER SYSTEM SET log_min_messages=debug1; SELECT pg_reload_conf(); CREATE TABLE ts.testt (i serial,                         t varchar,                         d varchar,                        x numeric); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 UPDATE \u0438 DELETE UPDATE ts.testt SET t = t || ' upd' WHERE i = 2; DELETE FROM ts.testt WHERE i = 3; SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 -- \u0417\u0430\u043e\u0434\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e SELECT * FROM ts.testt; UPDATE ts.testt SET t = 'updated on the replica' WHERE i = 1; DELETE FROM ts.testt WHERE i = 2; SELECT * FROM ts.testt; -- \u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u0436\u0435 \u043d\u0435\u0442 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 -- \u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0441\u0442\u044c, \u043d\u043e \u0443\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f -- \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432  -- \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430 - \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0438 -- \u0435\u0441\u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 -- \u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435. UPDATE ts.testt SET t = 'updated on the master' WHERE i = 2; DELETE FROM ts.testt WHERE i = 1; INSERT INTO ts.testt (t, d)    VALUES ('004', 'fourth'), ('005', 'fifth element'), ('006', 'sixth'); SELECT * FROM ts.testt;  -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT * FROM ts.testt; -- \u043f\u043e\u043b\u0438\u043c\u0435\u0440\u044b \u0443\u0442\u0440\u0430\u0447\u0435\u043d\u044b, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438 -- \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 -- \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430. -- C\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u0438\u043d\u0430\u0447\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e CREATE UNIQUE INDEX CONCURRENTLY testt_hm_idx ON ts.testt (i); ALTER TABLE ts.testt   ADD CONSTRAINT hm_pkey PRIMARY KEY USING INDEX testt_hm_idx; -- \u0417\u0430\u0442\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 CREATE UNIQUE INDEX CONCURRENTLY testt_hm_idx ON ts.testt (i); ALTER TABLE ts.testt   ADD CONSTRAINT hm_pkey PRIMARY KEY USING INDEX testt_hm_idx; -- \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 UPDATE ts.testt SET t = 'updated on the replica again' WHERE i &lt;&gt; 1; SELECT * FROM ts.testt;  -- \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. -- \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f -- \u043f\u0440\u043e\u0448\u043b\u0430 - \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443. -- \u0415\u0441\u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 -- \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435. UPDATE ts.testt SET t = 'recently updated on the master' WHERE i = 6; DELETE FROM ts.testt WHERE i = 4; INSERT INTO ts.testt (t, d)    VALUES ('007', 'seventh'); SELECT * FROM ts.testt;  -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 -- i=4 \u0443\u0434\u0430\u043b\u0451\u043d, i=6 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d, \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c -- \u0432\u043e\u0442 \u0447\u0442\u043e PK \u0436\u0438\u0432\u043e\u0442\u0432\u043e\u0440\u044f\u0449\u0438\u0439 \u0434\u0435\u043b\u0430\u0435\u0442! SELECT * FROM ts.testt;  -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; ALTER SYSTEM SET log_min_messages = :lmm; SELECT pg_reload_conf(); -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"overgrowth_wal\"><\/a>\u041b\u0438\u0448\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0443\u0434\u043e\u0441\u0443\u0436\u0438\u043b\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u0442\u043e \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439:   <\/p>\n<pre><code class=\"plaintext\">DEBUG:  starting logical replication worker for subscription &quot;your_subscription_name&quot; DEBUG:  registering background worker &quot;logical replication worker for subscription 16766&quot; DEBUG:  starting background worker process &quot;logical replication worker for subscription 16766&quot; LOG:  logical replication apply worker for subscription &quot;your_subscription_name&quot; has started DEBUG:  connecting to publisher using connection string &quot;host=192.168.122.182 dbname=your_db_name&quot; ERROR:  logical replication target relation &quot;public.your_table_name&quot; is missing some replicated columns DEBUG:  unregistering background worker &quot;logical replication worker for subscription 16766&quot; LOG:  background worker &quot;logical replication worker&quot; (PID 10708) exited with exit code 1<\/code><\/pre>\n<p>  \u0410 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445:<\/p>\n<pre><code class=\"plaintext\">DEBUG:  received replication command: IDENTIFY_SYSTEM DEBUG:  received replication command: START_REPLICATION SLOT &quot;your_subscription_name&quot; LOGICAL 0\/0 (proto_version '1', publication_names '&quot;your_publication_name&quot;') LOG:  starting logical decoding for slot &quot;your_subscription_name&quot; DETAIL:  streaming transactions committing after 0\/1AC5FAD0, reading WAL from 0\/1AC5FA98 LOG:  logical decoding found consistent point at 0\/1AC5FA98 DETAIL:  There are no running transactions. DEBUG:  got new restart lsn 0\/1AC5FC40 at 0\/1AC5FC40 DEBUG:  &quot;your_subscription_name&quot; has now caught up with upstream server<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432\u0441\u0442\u0430\u0432\u043a\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439, \u0432\u0435\u0434\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043d\u0435\u0442 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0432\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u00ab\u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f\u00bb. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0431\u043e\u0439\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438.<\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u0438\u043f\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0438 \u0434\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0432 \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0431\u0443\u0445\u0430\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0435 \u0441\u043f\u0430\u0441\u0451\u0442 \u2014 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438, \u0430 \u0442\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0435\u0441\u0442\u044c \u0438 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0434\u0435\u043d\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0441\u043f\u0430\u0441\u0451\u0442 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0437 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a \u0438 \u0442\u0430\u043a\u043e\u0435 \u043b\u0435\u043a\u0430\u0440\u0441\u0442\u0432\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0431\u043e\u043b\u0435\u0437\u043d\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438. <\/p>\n<p>  \u041b\u0438\u0447\u043d\u043e \u044f \u0441\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439 \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u043e\u043c \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u2014 \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0442\u0430\u043a \u043d\u0435 \u0434\u0443\u043c\u0430\u044e\u0442. \u0412 \u043e\u0431\u0449\u0435\u043c \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:   <\/p>\n<ul>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0438 \u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0438\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 (\\x6c6f6c), \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u043f\u043e \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c \u043f\u0440\u043e\u043f\u0430\u0434\u0443\u0442 \u0438 \u043e\u0441\u0442\u0430\u0432\u044f\u0442 \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043b\u043e\u0433\u0435 &quot;<code>... not find row for ...<\/code>&quot; \u2014 \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a <code>REPLICA IDENTITY FULL<\/code>.\n<p>  \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043a\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0440\u0430\u0441\u0441\u043e\u0441\u0451\u0442\u0441\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u043d\u0430\u043a\u043e\u043f\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>INSERT<\/code> \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u0430 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code> \u2014 \u043d\u0435\u0442. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442. <\/p>\n<p>  \u0412\u044b\u0431\u043e\u0440 \u0442\u0430\u043a \u0441\u0435\u0431\u0435, \u043d\u043e \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0440\u0430\u0437\u0433\u0440\u0435\u0441\u0442\u0438 \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u043d\u0435 \u0434\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043e \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430. \u041d\u0443 \u0430 \u0434\u0430\u043b\u0435\u0435 \u2014 \u0447\u0438\u0441\u0442\u0438\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443, \u0436\u0434\u0451\u043c. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u2014 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u043d\u043e\u0432\u044c, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c, \u043d\u0443 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 \u043d\u0435\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c. \u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f \u0441\u043b\u043e\u0442 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>REPLICA IDENTITY<\/code>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0422\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043d\u0435 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0441\u0440\u0430\u0437\u0443?<\/li>\n<\/ul>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial,                         t varchar,                         d varchar); ALTER TABLE ts.testt REPLICA IDENTITY FULL; INSERT INTO ts.testt (t, d)    VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial,                         t text); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438, \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 ALTER TABLE ts.testt ADD COLUMN d text; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"duplicate_key\"><\/a>\u0414\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u043b\u0438 \u00ab\u0420\u0430\u043d\u044c\u0448\u0435 \u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e!\u00bb<\/h2>\n<pre><code class=\"plaintext\">\u041f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 ERROR:  duplicate key value violates unique constraint &quot;testt_pkey&quot; DETAIL:  Key (i)=(3) already exists. CONTEXT:  COPY testt, line 3  -- \u0417\u0430\u043e\u0434\u043d\u043e \u0443\u0437\u043d\u0430\u043b\u0438 \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043d\u0438\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438  \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 ERROR:  duplicate key value violates unique constraint &quot;testt_pkey&quot; DETAIL:  Key (i)=(4) already exists.<\/code><\/pre>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430. \u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f. \u041e\u043d\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0435\u0441\u043b\u0438 \u0431\u0430\u0437\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442\u0435 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 PostgreSQL, \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435.<\/p>\n<p>  \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f, \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. <\/p>\n<p>  \u0421\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435 \u0434\u0435\u043b\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0430\u044f \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u043b\u0438\u0431\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0435\u0439 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440; \u0436\u0434\u0430\u0442\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043e\u0442\u0441\u0442\u0430\u0432\u0448\u0438\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439; \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0443\u044e \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0442\u0430\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0438.<\/p>\n<p>  \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e. \u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0418 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u043a\u0430 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442, \u0440\u0430\u0437\u043c\u0435\u0440 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u043f\u0438\u0441\u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u0435 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438 \u2014 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0431 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a. \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u0431\u044b\u0447\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u043b\u0430\u0439\u0434\u0430\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0430 CTO Stickeroid Ai, \u041a\u0430\u043c\u0438\u043b\u044f \u0418\u0441\u043b\u0430\u043c\u043e\u0432\u0430 <a href=\"https:\/\/pgconf.ru\/media\/2020\/02\/04\/%D0%9A%D0%B0%D0%BC%D0%B8%D0%BB%D1%8C%20%D0%98%D1%81%D0%BB%D0%B0%D0%BC%D0%BE%D0%B2%20-%20%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20Sequences%20%D0%B2%20%D0%B1%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B5.pdf\">\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 PostgreSQL<\/a> \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u0441\u0431\u043e\u0439\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial PRIMARY KEY,                         t varchar); ALTER TABLE ts.testt REPLICA IDENTITY FULL; INSERT INTO ts.testt (t)    VALUES ('001'), ('002'), ('003'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i bigserial PRIMARY KEY,                         t text); INSERT INTO ts.testt (i, t)    VALUES (3, '003 only replica value'),          (4, '004 only replica value'); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u043e\u0433\u0438, \u043f\u043e\u0442\u043e\u043c \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043b\u0438\u0448\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 -- \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 - \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f -- \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 - \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0439. \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 -- \u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430. DELETE FROM ts.testt WHERE i = 3; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"nnwd\"><\/a>\u0421\u0442\u043e\u043b\u0431\u0435\u0446 NOT NULL \u0431\u0435\u0437 DEFAULT \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435<\/h2>\n<pre><code class=\"plaintext\">ERROR:  null value in column &quot;column_name&quot; violates not-null constraint<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>NOT NULL<\/code> \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0434\u043b\u044f \u043d\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>DEFAULT<\/code> \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u2014 \u043a\u0430\u043a \u043f\u0440\u0438\u0448\u0435\u043b <code>NULL<\/code>, \u0442\u0430\u043a \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 <code>NOT NULL<\/code> \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0437\u0430\u0434\u0430\u0434\u0438\u0442\u0435 \u0435\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 <code>NOT NULL<\/code> \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>NULL<\/code> \u2014 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f, \u043b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 <code>NOT NULL<\/code> \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u043e \u043d\u0435 \u0441\u0445\u0435\u043c\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430:<\/p>\n<pre><code class=\"plaintext\">ERROR:  null value in column &quot;d&quot; violates not-null constraint DETAIL:  Failing row contains (3, 003, null). CONTEXT:  COPY testt, line 3: &quot;3    003     \\N&quot;<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0445\u043e\u0434\u043e\u043c, \u0442\u043e \u0432 \u043b\u043e\u0433\u0430\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u2014 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial PRIMARY KEY, t text, d text); INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', NULL); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial PRIMARY KEY, t text, d text NOT NULL DEFAULT 'null from master'); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 - \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043b\u043e\u0433\u0438 -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c d -- \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 ALTER TABLE ts.testt ALTER COLUMN d DROP NOT NULL,                      ALTER COLUMN d DROP DEFAULT; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; ALTER TABLE ts.testt ADD COLUMN x text NOT NULL DEFAULT 'start default'; ALTER TABLE ts.testt ALTER COLUMN x DROP DEFAULT; SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0443 INSERT INTO ts.testt (t) VALUES ('004'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043b\u043e\u0433\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u0442\u0430\u043c \u0443\u0436\u0435 \u043a\u0443\u0447\u0430 \u043e\u0448\u0438\u0431\u043e\u043a -- \u0417\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 -- \u041b\u0438\u0431\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u043c NOT NULL --   ALTER TABLE ts.testt ALTER COLUMN x DROP NOT NULL; -- \u041b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c DEFAULT --   ALTER TABLE ts.testt ALTER COLUMN x SET DEFAULT 'second default'; -- \u041b\u0438\u0431\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 --   ALTER TABLE ts.testt DROP COLUMN x; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"mhpk_rhnpk_ud\"><\/a>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043e\u043d \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442<\/h2>\n<pre><code class=\"plaintext\">ERROR:  logical replication target relation &quot;ts.testt&quot; has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447. \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438. \u0421\u043e\u0441\u0442\u0430\u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u043b\u0438\u0431\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d, \u043b\u0438\u0431\u043e \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b; \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial PRIMARY KEY, t text, d text); INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial, t text, d text);  CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 UPDATE ts.testt SET t = t || ' updated' WHERE i = 1; INSERT INTO ts.testt (t, d) VALUES ('004', 'AFTER UPDATE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430, \u0436\u0434\u0451\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438. ALTER TABLE ts.testt ADD PRIMARY KEY (i); SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 DELETE FROM ts.testt WHERE i = 1; INSERT INTO ts.testt (t, d) VALUES ('005', 'AFTER DELETE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430, \u0436\u0434\u0451\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e ALTER TABLE ts.testt ADD PRIMARY KEY (i); SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE IF EXISTS ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"dpk\"><\/a>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438\u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445<\/h2>\n<pre><code class=\"plaintext\">ERROR:  publisher did not send replica identity column expected by the logical replication target relation &quot;ts.testt&quot;<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 (\u0438\u043d\u0434\u0435\u043a\u0441) \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0435 \u043d\u0430 \u0442\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 (\u0438\u043d\u0434\u0435\u043a\u0441) \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0451\u043d \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 (\u0438\u043d\u0434\u0435\u043a\u0441). \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438. \u041d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial PRIMARY KEY, t text, d text); INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); CREATE PUBLICATION testt_pub for TABLE ts.testt; SELECT * FROM ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i serial, t text PRIMARY KEY, d text);  CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 UPDATE ts.testt SET t = t || ' upd' WHERE i = 1; INSERT INTO ts.testt (t, d) VALUES ('004', 'AFTER UPDATE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0436\u0434\u0451\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438. ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; ALTER TABLE ts.testt ADD PRIMARY KEY (i); SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; ALTER TABLE ts.testt ADD PRIMARY KEY (t); -- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 DELETE FROM ts.testt WHERE i = 1; INSERT INTO ts.testt (t, d) VALUES ('005', 'AFTER DELETE'); SELECT * FROM ts.testt; -- \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 - \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u0442 SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 -- \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0436\u0434\u0451\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e. ALTER TABLE ts.testt DROP CONSTRAINT testt_pkey; ALTER TABLE ts.testt ADD PRIMARY KEY (i); SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION IF EXISTS testt_sub; DROP TABLE IF EXISTS ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION IF EXISTS testt_pub; DROP TABLE ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"pk_and_idx_is_ud_fail\"><\/a>\u0424\u0430\u043d\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0431\u043e\u043b\u044c<\/h2>\n<pre><code class=\"plaintext\">ERROR:  cannot delete from table &quot;test&quot; because it does not have a replica identity and publishes deletes HINT:  To enable deleting from the table, set REPLICA IDENTITY using ALTER TABLE.<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u0443\u0434\u0430\u043b\u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432\u0437\u0430\u043c\u0435\u043d \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u043b\u0438 (\u0432\u0441\u044f\u043a\u043e \u0431\u044b\u0432\u0430\u0442, \u0443\u0436 \u043c\u044b \u0438\u0445 \u0440\u0443\u0433\u0430\u043c-\u0440\u0443\u0433\u0430\u043c, \u043d\u0438\u0447\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0442). <\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0443 \u044d\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0435 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>. \u0412\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u0430\u043b\u0438\u043b\u0438.<\/p>\n<p>  \u0427\u0442\u043e\u0431 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>REPLICA IDENTITY DEFAULT<\/code>, \u043f\u0435\u0440\u0435\u043d\u0430\u0446\u0435\u043b\u0438\u0432 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u0438c\u043a \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u043e\u043d \u0435\u0441\u0442\u044c \u2014 \u043d\u0430 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0438 \u0441\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0446\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e, \u0442\u0430\u043a \u043a\u0430\u043a oid \u0443 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439, \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0432\u0438\u0434\u0435\u0442\u044c. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c <code>REPLICA IDENTITY FULL<\/code>, \u0430 \u0443\u0436 \u0437\u0430\u0442\u0435\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, \u0438\u043d\u0430\u0447\u0435 \u0432\u044b\u043b\u0435\u0437\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e, \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u043c\u0443 \u0442\u0430\u043a\u043e\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442. \u0418, \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0438 \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u0430\u044f, \u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u0434\u043e \u0432\u0430\u0441 \u043a\u0442\u043e-\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u043b \u0438 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u043b \u0438\u043d\u0434\u0435\u043a\u0441 \u2014 \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 -- \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 CREATE TABLE ts.testt (i serial, t text, d text); -- \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0438\u043d\u0434\u0435\u043a\u0441 CREATE UNIQUE INDEX CONCURRENTLY testt_idx ON ts.testt USING btree (i); -- \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; -- \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043a\u0430\u043a REPLICA IDENTITY \\d ts.testt -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c -- relreplident = i, \u0442.\u0435. \u0438\u043d\u0434\u0435\u043a\u0441 SELECT relname, relreplident -- i-index, d-default   FROM pg_class    WHERE oid = 'ts.testt'::regclass; -- \u0411\u0435\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f, \u043d\u043e \u043d\u0435 \u0442\u0430\u043a \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e. ALTER TABLE ts.testt ADD CONSTRAINT pkey PRIMARY KEY (i);  -- \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \\d ts.testt -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c -- \u0432\u0441\u0451 \u0435\u0449\u0451 relreplident = i, \u0442.\u0435. \u0438\u043d\u0434\u0435\u043a\u0441 -- \u0442\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c, \u0432\u0435\u0434\u044c \u041f\u041a \u043a\u0430\u043a \u0420\u0418 \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0438 SELECT relname, relreplident -- i-index, d-default   FROM pg_class    WHERE oid = 'ts.testt'::regclass; CREATE PUBLICATION testt_pub for TABLE ts.testt; INSERT INTO ts.testt (t, d) VALUES ('001', 'first'), ('002', 'second'), ('003', 'third'); DROP INDEX ts.testt_idx; -- \u041f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 - \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \\d ts.testt -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c -- \u0432\u0441\u0451 \u0435\u0449\u0451 relreplident = i, \u0442.\u0435. \u0438\u043d\u0434\u0435\u043a\u0441 -- \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0443\u0436\u0435 \u043d\u0435\u0442, \u043e\u043d \u0432\u0441\u0451 \u0435\u0449\u0451 \u0420\u0418 SELECT relname, relreplident -- i-index, d-default   FROM pg_class    WHERE oid = 'ts.testt'::regclass; -- \u0421\u0435\u0439\u0447\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0438, \u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0448\u044c \u043d\u0430 \\d testt \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 -- \u0442\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u0436\u0435 \u0442\u0430\u043a - \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432\u0435\u0434\u044c \u0435\u0441\u0442\u044c. -- \u0435\u0441\u0442\u044c-\u0442\u043e \u043e\u043d \u0435\u0441\u0442\u044c, \u0434\u0430 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043a pg_class -- \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0436\u0438\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 - i, \u0430 \u043d\u0435 d - default -- \u0430 \u0438\u043d\u0434\u0435\u043a\u0441-\u0442\u043e \u044d\u0442\u043e\u0442 \u0443\u0436\u0435 \u0443\u0434\u0430\u043b\u0451\u043d UPDATE ts.testt SET t = t || ' upd' WHERE i = 1; DELETE FROM ts.testt WHERE i = 3; -- C\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 -- \u043d\u0430\u0439\u0442\u0438 \u0432 \u0447\u0435\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 - \u0438\u043d\u0434\u0435\u043a\u0441-\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c -- \u043e\u043d \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d... CREATE UNIQUE INDEX CONCURRENTLY testt_idx ON ts.testt USING btree (i); ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; -- \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0441\u0442\u044c \u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c indisreplident=t  -- \u0438 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0435\u0441\u0442\u044c, \u044d\u0442\u043e \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 SELECT pgc.oid, pgc.relname, pgi.indisreplident   FROM pg_class AS pgc,      pg_index AS pgi   WHERE pgc.oid = pgi.indexrelid     AND pgi.indrelid IN (SELECT oid FROM pg_class WHERE relname = 'testt'); -- \u0430 \u0442\u0443\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0447\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0436\u0438\u0442 \u0438\u043d\u0434\u0435\u043a\u0441: \\d ts.testt  -- \u041e\u0434\u043d\u0430\u043a\u043e UPDATE \u0438 DELETE \u0442\u0430\u043a \u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 UPDATE ts.testt SET t = t || ' upd' WHERE i = 1; DELETE FROM ts.testt WHERE i = 3; -- \u041f\u0443\u0441\u0442\u0438\u043c \u0432 \u0445\u043e\u0434 \u0434\u0435\u0444\u0438\u0431\u0440\u0438\u043b\u043b\u044f\u0442\u043e\u0440: ALTER TABLE ts.testt REPLICA IDENTITY DEFAULT; ALTER TABLE ts.testt REPLICA IDENTITY USING INDEX testt_idx; \\d ts.testt SELECT relname, relreplident -- i-index, d-default   FROM pg_class    WHERE oid = 'ts.testt'::regclass; -- \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0441\u0451 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 UPDATE ts.testt SET t = t || ' upd' WHERE i = 1; DELETE FROM ts.testt WHERE i = 3; DROP TABLE ts.testt; DROP PUBLICATION testt_pub; -- \u041d\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \/d, \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0449\u0438\u0442\u0435 \u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445! -- \u0415\u0441\u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u0435\u0441\u0442\u044c, \u0442\u043e \u043d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. ---<\/code><\/pre>\n<\/div><\/div>\n<h2><a name=\"wrong_type\"><\/a>\u041d\u0435\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u044b\u0435 \u0442\u0438\u043f\u044b<\/h2>\n<pre><code class=\"plaintext\">\u041f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 ERROR:  invalid input syntax for type bigint: &quot;\\xaabbcc&quot; CONTEXT:  COPY testt, line 1, column t: &quot;\\xaabbcc&quot;  \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 ERROR:  invalid input syntax for type bigint: &quot;\\xdeadbeef&quot; CONTEXT:  processing remote data for replication target relation &quot;ts.testt&quot; column &quot;t&quot;, remote type bytea, local type bigint<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0432 \u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430. \u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438. <\/p>\n<p>  \u0418 \u0437\u0434\u0435\u0441\u044c \u0441\u043d\u043e\u0432\u0430 \u043d\u0435\u043f\u043e\u043b\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u043d\u043e \u043d\u0435 \u043e \u0441\u0445\u0435\u043c\u0435. \u041d\u043e, \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d, \u0442\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043c\u0430\u0441\u0442\u0435\u0440 CREATE TABLE ts.testt (i serial PRIMARY KEY, t bytea); INSERT INTO ts.testt (t) VALUES('\\xaabbcc'::bytea); SELECT * FROM ts.testt; CREATE PUBLICATION testt_pub FOR TABLE ts.testt; -- \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 CREATE TABLE ts.testt (i bigserial PRIMARY KEY, t bigint); CREATE SUBSCRIPTION testt_sub    CONNECTION 'host=192.168.122.182                dbname=test                user=log_rep_rolename                password=sadp!'   PUBLICATION testt_pub; SELECT pg_sleep(5.5); SELECT * FROM ts.testt;  -- \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 -- \u0412\u0441\u0451 - \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043b\u043e\u0433\u0430\u0445, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0435\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c. -- \u0412\u043e\u0442 \u044d\u0442\u043e \u0432\u043e\u0442 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442: ALTER TABLE ts.testt ALTER COLUMN t SET DATA TYPE bytea USING t::bytea; -- \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a: ALTER TABLE ts.testt DROP COLUMN t, ADD COLUMN t bytea; SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 -- \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 -- \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043d\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 ALTER TABLE ts.testt DROP COLUMN t, ADD COLUMN t bigint; -- \u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 INSERT INTO ts.testt (t) VALUES('\\xdeadbeef'::bytea); SELECT * FROM ts.testt; -- \u0412\u0441\u0451 - \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u043f\u0430\u0443\u0437\u0435 SELECT * FROM ts.testt; -- \u0421\u043d\u043e\u0432\u0430 \u0440\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u043d\u043e \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, -- \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c bytea ALTER TABLE ts.testt DROP COLUMN t, ADD COLUMN t text;  SELECT pg_sleep(5.5); SELECT * FROM ts.testt; -- \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 -- \u0427\u0438\u0441\u0442\u0438\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0443 DROP SUBSCRIPTION testt_sub; DROP TABLE ts.testt; -- \u0427\u0438\u0441\u0442\u0438\u043c \u043c\u0430\u0441\u0442\u0435\u0440 DROP PUBLICATION testt_pub; DROP TABLE ts.testt; ---<\/code><\/pre>\n<\/div><\/div>\n<h2>\u0418 \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u0442\u0432\u043e\u0440\u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435<\/h2>\n<pre><code class=\"sql\">-- \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0442\u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 SELECT pg_drop_replication_slot('test_sub'); -- \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0441\u043b\u043e\u0442\u0435 ALTER SUBSCRIPTION testt_sub DISABLE; ALTER SUBSCRIPTION testt_sub SET (slot_name=NONE); DROP SUBSCRIPTION testt_sub;<\/code><\/pre>\n<h2>\u041e\u0431\u0449\u0438\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f<\/h2>\n<p>  \u041b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043d\u0435\u0442 \u043d\u0430 \u0441\u0432\u0435\u0442\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>PRIMARY KEY<\/code> \u0438 \u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/sql-createindex#SQL-CREATEINDEX-CONCURRENTLY\">\u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430<\/a> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430. <\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431 \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u043b\u0438\u0441\u044c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0443 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0441\u0445\u0435\u043c\u044b \u0411\u0414, \u043d\u0443 \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0445 \u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0435\u0449\u0451 \u0434\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>REPLICA IDENTITY FULL<\/code> \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438 \u0440\u0435\u0434\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0445\u0435\u043c\u044b \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u043d\u0435\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f <code>log_min_messages=debug1<\/code> \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 <code>UPDATE<\/code> \u0438 <code>DELETE<\/code>. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b, \u0430 \u0435\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0438.<\/p>\n<p>  \u041d\u043e\u0432\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0441 <code>NOT NULL<\/code> \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0445\u043e\u0440\u043e\u0448\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0438\u0434\u0451\u0442 <code>DEFAULT<\/code>.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f, \u043d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d\u0438 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0435 \u0438 \u043b\u0435\u0433\u043a\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0441 \u0443\u043c\u043e\u043c \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043a \u0432\u044b\u0431\u043e\u0440\u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043d\u0435 \u043e\u0431 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438, \u0430 \u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0445\u0435\u043c\u0430\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0442\u043e \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043e\u0439\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u0432 \u043d\u043e\u043a\u0434\u0430\u0443\u043d \u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  \u0418 \u043d\u0430 \u0441\u043b\u0430\u0434\u043a\u043e\u0435: \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a\u0430\u043a \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b. \u0422\u0443\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0411\u0414. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>\\dRs<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438, \u0430 <code>SELECT * FROM pg_subscription;<\/code> \u2014 \u043d\u0435\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0442, \u043a\u0440\u043e\u043c\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043b\u043e\u0433\u0430\u0445 (\u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f, \u0441\u043b\u043e\u0442\u0430 \u043d\u0435\u0442&#8230;), \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u0438 \u0441\u043b\u043e\u0442\u0430\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u044b\u043b\u043e \u0443\u0442\u0435\u0440\u044f\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0435. \u0417\u0430 \u043c\u0435\u0441\u044f\u0446 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0435\u043b \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0430 \u0440\u0430\u0437\u0430, \u0438 \u043e\u0431\u0430 \u0440\u0430\u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0445\u043e\u0441\u0442\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0432 \u0436\u0434\u0443\u0449\u0438\u0439 \u0438\u043b\u0438 \u0441\u043f\u044f\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c. \u0425\u043e\u0442\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u0442\u0430\u043a \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u2014 \u043d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a. \u041d\u043e \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u043e\u0435 \u0441 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043c\u043e\u0436\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e \u0442\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/489308\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/489308\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rc\/4w\/c4\/rc4wc4pblkhrdji9tkuwdwvt2ro.jpeg\" alt=\"image\"><\/div>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 10 \u0432\u0435\u0440\u0441\u0438\u0438, \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b PostgreSQL \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0431\u0435\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u2014 \u043d\u0435\u0432\u0430\u0436\u043d\u043e. \u041e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043c\u0430\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443: \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, 10 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0432\u044b\u0448\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <code>wal_level=&quot;logical&quot;<\/code>. \u0412 pg_hba.conf \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<br \/>  <code>host db_name postgres 192.168.1.3\/32 trust<\/code><br \/>  \u0417\u0430\u0442\u0435\u043c \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 postgres \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438\u0437-\u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f postgres:<\/p>\n<pre><code class=\"bash\">pg_dumpall --database=postgres --host=192.168.1.2 --no-password --globals-only --no-privileges | psql pg_dump --dbname db_name --host=192.168.1.2 --no-password --create --schema-only | psql<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c <code>postgres<\/code> \u043a \u0431\u0430\u0437\u0435 <code>db_name<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"pgsql\">CREATE PUBLICATION db_pub FOR ALL TABLES;<\/code><\/pre>\n<p>\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443:<\/p>\n<pre><code class=\"pgsql\">CREATE SUBSCRIPTION db_sub CONNECTION 'host=192.168.1.2 dbname=db_name' PUBLICATION db_pub;<\/code><\/pre>\n<p>\u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 (\u0438 \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0434\u043e\u0438\u0442\u044c \u0441\u043b\u043e\u043d\u0435\u0441\u043a\u0443) \u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0434\u0442\u0438 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0414\u0411\u0410.<br \/>  <sup>\u0414\u043b\u044f \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<\/sup>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-318774","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=318774"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318774\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}