{"id":41495,"date":"2025-11-12T09:50:03","date_gmt":"2025-11-12T08:50:03","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=41495"},"modified":"2025-11-12T09:50:05","modified_gmt":"2025-11-12T08:50:05","slug":"postgresql-19-logical-replication-of-sequences","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/","title":{"rendered":"PostgreSQL 19: Logical replication of sequences"},"content":{"rendered":"\n<p>Logical replication in PostgreSQL got a lot of features and performance improvements over the last releases. It was introduced in PostgreSQL 10 back in 2017, and PostgreSQL 9.6 (in 2016) introduced logical decoding which is the basis for logical replication. Today logical replication is really mature and from my point of view only two major features are missing: DDL replication and the replication of sequences. The latter is now possible with the upcoming PostgreSQL 19 next year, and this is what this post is about.<\/p>\n\n\n\n<p>Before we can see how this works we need a logical replication setup. An easy method to set this up is to create a physical replica and then transform that into a logical replica using <a href=\"https:\/\/www.postgresql.org\/docs\/18\/app-pgcreatesubscriber.html\">pg_createsubscriber<\/a>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,5,7,8,9,10]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -c &quot;create table t ( a int primary key generated always as identity, b text)&quot;\nCREATE TABLE\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -c &quot;insert into t (b) values (&#039;aaaa&#039;)&quot;\nINSERT 0 1\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -c &quot;insert into t (b) values (&#039;bbbb&#039;)&quot;\nINSERT 0 1\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_basebackup --pgdata=\/var\/tmp\/dummy --write-recovery-conf --checkpoint=fast\npostgres@:\/home\/postgres\/ &#x5B;pgdev] echo &quot;port=8888&quot; &gt;&gt; \/var\/tmp\/dummy\/postgresql.auto.conf \npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_createsubscriber --all --pgdata=\/var\/tmp\/dummy --subscriber-port=8888 --publisher-server=&quot;host=localhost,port=5432&quot;\npostgres@:\/home\/postgres\/ &#x5B;pgdev] pg_ctl --pgdata=\/var\/tmp\/dummy start\n2025-11-11 13:21:20.818 CET - 1 - 9669 -  - @ - 0LOG:  redirecting log output to logging collector process\n2025-11-11 13:21:20.818 CET - 2 - 9669 -  - @ - 0HINT:  Future log output will appear in directory &quot;pg_log&quot;.\n2025-11-11 13:21:21.250 CET - 1 - 9684 -  - @ - 0LOG:  redirecting log output to logging collector process\n2025-11-11 13:21:21.250 CET - 2 - 9684 -  - @ - 0HINT:  Future log output will appear in directory &quot;pg_log&quot;.\n<\/pre><\/div>\n\n\n<p>Once this is done we have a logical replica and the data is synchronized:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;select * from t&quot;\n a |  b   \n---+------\n 1 | aaaa\n 2 | bbbb\n(2 rows)\n<\/pre><\/div>\n\n\n<p>A quick check the replication is ongoing:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;insert into t (b) values(&#039;cccc&#039;);&quot;\nINSERT 0 1\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;select * from t&quot;\n a |  b   \n---+------\n 1 | aaaa\n 2 | bbbb\n 3 | cccc\n(3 rows)\n<\/pre><\/div>\n\n\n<p>The &#8220;generated always as identidy&#8221; we used above to create the table automatically created a sequence for us:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;\\x&quot; -c &quot;select * from pg_sequences;&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 3\n<\/pre><\/div>\n\n\n<p>Checking the same sequence on the replica clearly shows that the sequence is not synchronized (last_value is still a 2):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;\\x&quot; -c &quot;select * from pg_sequences;&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 2\n<\/pre><\/div>\n\n\n<p>The reason is, that sequences are not synchronized automatically:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,8]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;\\x&quot; -c &quot;select * from pg_publication;&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]---+-------------------------------\noid             | 16397\npubname         | pg_createsubscriber_5_f58e9acd\npubowner        | 10\npuballtables    | t\npuballsequences | f\npubinsert       | t\npubupdate       | t\npubdelete       | t\npubtruncate     | t\npubviaroot      | f\npubgencols      | n\n\n<\/pre><\/div>\n\n\n<p>As there currently is no way to enable sequence synchronization for an existing publication we can either drop and re-create or add an additional publication and subscription just for the sequences:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,22]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;create publication pubseq for all sequences;&quot;\nCREATE PUBLICATION\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;\\x&quot; -c &quot;select * from pg_publication;&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]---+-------------------------------\noid             | 16397\npubname         | pg_createsubscriber_5_f58e9acd\npubowner        | 10\npuballtables    | t\npuballsequences | f\npubinsert       | t\npubupdate       | t\npubdelete       | t\npubtruncate     | t\npubviaroot      | f\npubgencols      | n\n-&#x5B; RECORD 2 ]---+-------------------------------\noid             | 16398\npubname         | pubseq\npubowner        | 10\npuballtables    | f\npuballsequences | t\npubinsert       | t\npubupdate       | t\npubdelete       | t\npubtruncate     | t\npubviaroot      | f\npubgencols      | n\n<\/pre><\/div>\n\n\n<p>The publication has sequence replication enabled and the subscription to consume this can be created like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;create subscription subseq connection &#039;host=localhost port=5432&#039; publication pubseq&quot;\nCREATE SUBSCRIPTION\n<\/pre><\/div>\n\n\n<p>Now the sequence is visible in <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/catalog-pg-subscription-rel.html\" target=\"_blank\" rel=\"noreferrer noopener\">pg_subscription_rel<\/a> on the subscriber:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;select * from pg_subscription_rel;&quot;\n srsubid | srrelid | srsubstate |  srsublsn  \n---------+---------+------------+------------\n   24589 |   16385 | r          | \n   24590 |   16384 | r          | 0\/04004780   -- sequence\n(2 rows)\n<\/pre><\/div>\n\n\n<p>State &#8220;r&#8221; means ready, so the sequence should have synchronized, and indeed:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,16]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;\\x&quot; -c &quot;select * from pg_sequences&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 3\n\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;\\x&quot; -c &quot;select * from pg_sequences&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 3\n<\/pre><\/div>\n\n\n<p>Adding new rows to the table, which also increases the last_value of the sequence, should also synchronize the sequences:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,5,20]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;insert into t (b) values (&#039;eeee&#039;)&quot;\nINSERT 0 1\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;insert into t (b) values (&#039;ffff&#039;)&quot;\nINSERT 0 1\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 5432 -c &quot;\\x&quot; -c &quot;select * from pg_sequences&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 6\n\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;\\x&quot; -c &quot;select * from pg_sequences&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 4\n<\/pre><\/div>\n\n\n<p>&#8230; but is not happening automatically. To get them synchronized you need to refresh the subscription:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,4]; title: ; notranslate\" title=\"\">\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;\\x&quot; -c &quot;alter subscription subseq refresh sequences&quot;\nExpanded display is on.\nALTER SUBSCRIPTION\npostgres@:\/home\/postgres\/ &#x5B;pgdev] psql -p 8888 -c &quot;\\x&quot; -c &quot;select * from pg_sequences&quot;\nExpanded display is on.\n-&#x5B; RECORD 1 ]-+-----------\nschemaname    | public\nsequencename  | t_a_seq\nsequenceowner | postgres\ndata_type     | integer\nstart_value   | 1\nmin_value     | 1\nmax_value     | 2147483647\nincrement_by  | 1\ncycle         | f\ncache_size    | 1\nlast_value    | 6\n<\/pre><\/div>\n\n\n<p>Great, this reduces the work to fix the sequences quite a bit and is really helpful. As usual, thanks to all involved.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Logical replication in PostgreSQL got a lot of features and performance improvements over the last releases. It was introduced in PostgreSQL 10 back in 2017, and PostgreSQL 9.6 (in 2016) introduced logical decoding which is the basis for logical replication. Today logical replication is really mature and from my point of view only two major [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[77],"type_dbi":[],"class_list":["post-41495","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 19: Logical replication of sequences - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 19: Logical replication of sequences\" \/>\n<meta property=\"og:description\" content=\"Logical replication in PostgreSQL got a lot of features and performance improvements over the last releases. It was introduced in PostgreSQL 10 back in 2017, and PostgreSQL 9.6 (in 2016) introduced logical decoding which is the basis for logical replication. Today logical replication is really mature and from my point of view only two major [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-12T08:50:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-12T08:50:05+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"PostgreSQL 19: Logical replication of sequences\",\"datePublished\":\"2025-11-12T08:50:03+00:00\",\"dateModified\":\"2025-11-12T08:50:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\"},\"wordCount\":319,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\",\"name\":\"PostgreSQL 19: Logical replication of sequences - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2025-11-12T08:50:03+00:00\",\"dateModified\":\"2025-11-12T08:50:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 19: Logical replication of sequences\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 19: Logical replication of sequences - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 19: Logical replication of sequences","og_description":"Logical replication in PostgreSQL got a lot of features and performance improvements over the last releases. It was introduced in PostgreSQL 10 back in 2017, and PostgreSQL 9.6 (in 2016) introduced logical decoding which is the basis for logical replication. Today logical replication is really mature and from my point of view only two major [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/","og_site_name":"dbi Blog","article_published_time":"2025-11-12T08:50:03+00:00","article_modified_time":"2025-11-12T08:50:05+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"PostgreSQL 19: Logical replication of sequences","datePublished":"2025-11-12T08:50:03+00:00","dateModified":"2025-11-12T08:50:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/"},"wordCount":319,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/","name":"PostgreSQL 19: Logical replication of sequences - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2025-11-12T08:50:03+00:00","dateModified":"2025-11-12T08:50:05+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-19-logical-replication-of-sequences\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 19: Logical replication of sequences"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=41495"}],"version-history":[{"count":15,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41495\/revisions"}],"predecessor-version":[{"id":41514,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/41495\/revisions\/41514"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=41495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=41495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=41495"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=41495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}