{"id":14715,"date":"2020-09-14T06:15:46","date_gmt":"2020-09-14T04:15:46","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/"},"modified":"2024-09-10T17:30:27","modified_gmt":"2024-09-10T15:30:27","slug":"postgresql-13-and-patroni-2-0-when-parameters-change","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/","title":{"rendered":"PostgreSQL 13 and Patroni 2.0 &#8211; when parameters change"},"content":{"rendered":"<p>Starting with PostgreSQL 13 there is a name and value change of one of the parameters used for the streaming replication of a replica server. Some may already know which parameter I am talking about. Until Postgres 12 it was called &#8220;wal_keep_segments&#8221; but with PostgreSQL 13 it will become &#8220;wal_keep_size&#8221;.<br \/>\nIn this small post I will explain, what changed and which nice new feature Patroni 2.0 offers us to not get in trouble using old configuration files.<br \/>\n<!--more--><\/p>\n<h3> wal_keep_segments <\/h3>\n<p>If you have ever setup a replica server with PostgreSQL you may have met wal_keep_segments. An integer parameter that defines the minimum number of log files segments that should be kept in the pg_wal directory. In case this parameter is zero (default) or too small, it is possible that there are not enough wal files kept in pg_wal in case of an disconnection of the standby server.<br \/>\nEach segment normally has a size of 16 MB.<br \/>\nIf you want to go a bit deeper into that topic, you can also have a look at the <a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-replication.html\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\"> PostgreSQL documentation<\/a>.<\/p>\n<h3> wal_keep_size and what changed <\/h3>\n<p>With PostgreSQL 13 things will look a bit different. wal_keep_segments is replaced by wal_keep_size. The parameter has still the same purpose. Define the kept log files segments, but now we define the size of the log files segments instead of the number. If you don&#8217;t specify a unit, MB will be taken as the default. There is a simple formular, that helps you to calculate the value of the wal_keep_size:<\/p>\n<pre class=\"brush: bash;\">\nwal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)\n<\/pre>\n<h3> New Patroni 2.0 feature <\/h3>\n<p>As this change is quite essential for a Patroni cluster and its setup, the developers of Patroni implemented a really nice feature in the new Patroni 2.0 version. In case you use an old patroni.yml, as I did in my <a href=\"https:\/\/www.dbi-services.com\/blog\/patroni-2-0-new-features-patroni-on-pure-raft\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\"> last blog post<\/a>, Patroni will automatically recognize the old parameter and reset it with the new one and the new value as well.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@partoni1:\/home\/postgres\/ [PG1] cat \/u01\/app\/postgres\/local\/dmk\/etc\/patroni.yml | grep wal_keep\n        wal_keep_segments: 8\npostgres@partoni1:\/home\/postgres\/ [PG1] patronictl edit-config | grep wal_keep\nVim: Warning: Output is not to a terminal\n    wal_keep_segments: 8\n\npostgres@partoni1:\/home\/postgres\/ [PG1] sq\npsql (13beta3 dbi services build)\nType \"help\" for help.\n\npostgres=# show wal_keep_size;\n wal_keep_size\n---------------\n 128MB\n(1 row)\n\npostgres=# show wal_keep_segments;\nERROR:  unrecognized configuration parameter \"wal_keep_segments\"\n<\/pre>\n<p>Compare that values with the above formular, we see that it work. 8 * 16MB = 128MB. It executes the change in the background  <\/p>\n<p>I think this is a quite small new feature, but it&#8217;s very helpful. Of course, there will be many people not thinking about that change in the beginning. So Patroni helps to minimize a human error here.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Starting with PostgreSQL 13 there is a name and value change of one of the parameters used for the streaming replication of a replica server. Some may already know which parameter I am talking about. Until Postgres 12 it was called &#8220;wal_keep_segments&#8221; but with PostgreSQL 13 it will become &#8220;wal_keep_size&#8221;. In this small post I [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[],"type_dbi":[],"class_list":["post-14715","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring"],"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 13 and Patroni 2.0 - when parameters change - 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-13-and-patroni-2-0-when-parameters-change\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 13 and Patroni 2.0 - when parameters change\" \/>\n<meta property=\"og:description\" content=\"Starting with PostgreSQL 13 there is a name and value change of one of the parameters used for the streaming replication of a replica server. Some may already know which parameter I am talking about. Until Postgres 12 it was called &#8220;wal_keep_segments&#8221; but with PostgreSQL 13 it will become &#8220;wal_keep_size&#8221;. In this small post I [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-14T04:15:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-10T15:30:27+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\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-13-and-patroni-2-0-when-parameters-change\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"PostgreSQL 13 and Patroni 2.0 &#8211; when parameters change\",\"datePublished\":\"2020-09-14T04:15:46+00:00\",\"dateModified\":\"2024-09-10T15:30:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\"},\"wordCount\":394,\"commentCount\":0,\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\",\"name\":\"PostgreSQL 13 and Patroni 2.0 - when parameters change - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2020-09-14T04:15:46+00:00\",\"dateModified\":\"2024-09-10T15:30:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 13 and Patroni 2.0 &#8211; when parameters change\"}]},{\"@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\/59554f0d99383431eb6ed427e338952b\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 13 and Patroni 2.0 - when parameters change - 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-13-and-patroni-2-0-when-parameters-change\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 13 and Patroni 2.0 - when parameters change","og_description":"Starting with PostgreSQL 13 there is a name and value change of one of the parameters used for the streaming replication of a replica server. Some may already know which parameter I am talking about. Until Postgres 12 it was called &#8220;wal_keep_segments&#8221; but with PostgreSQL 13 it will become &#8220;wal_keep_size&#8221;. In this small post I [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/","og_site_name":"dbi Blog","article_published_time":"2020-09-14T04:15:46+00:00","article_modified_time":"2024-09-10T15:30:27+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"PostgreSQL 13 and Patroni 2.0 &#8211; when parameters change","datePublished":"2020-09-14T04:15:46+00:00","dateModified":"2024-09-10T15:30:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/"},"wordCount":394,"commentCount":0,"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/","name":"PostgreSQL 13 and Patroni 2.0 - when parameters change - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-09-14T04:15:46+00:00","dateModified":"2024-09-10T15:30:27+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-13-and-patroni-2-0-when-parameters-change\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 13 and Patroni 2.0 &#8211; when parameters change"}]},{"@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\/59554f0d99383431eb6ed427e338952b","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14715","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\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14715"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14715\/revisions"}],"predecessor-version":[{"id":34683,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14715\/revisions\/34683"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14715"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}