{"id":30294,"date":"2024-01-20T16:10:00","date_gmt":"2024-01-20T15:10:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=30294"},"modified":"2024-01-18T16:40:59","modified_gmt":"2024-01-18T15:40:59","slug":"postgresql-17-incremental-backups-pg_walsummary","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/","title":{"rendered":"PostgreSQL 17: Incremental backups, pg_walsummary"},"content":{"rendered":"\n<p>In the last posts about the new incremental backup feature we&#8217;ve looked at the following topics:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How does it work in general? <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-support-for-incremental-backups\/\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL 17: Support for incremental backups<\/a><\/li>\n\n\n\n<li>Backup chains, what is it? <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-and-backup-chains\/\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL 17: Incremental backups and backup chains<\/a><\/li>\n\n\n\n<li>Additional system information functions and how you can use them &#8211; <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-system-information-functions\/\">PostgreSQL 17: Incremental backups, system information functions<\/a><\/li>\n<\/ul>\n\n\n\n<p>In this post we&#8217;ll look into the final topic for this feature: In addition to what was described in the previous posts, there is also a new utility which made it into PostgreSQL: <a href=\"https:\/\/www.postgresql.org\/docs\/devel\/app-pgwalsummary.html\">pg_walsummary<\/a>. As the name implies this can be used to get information about the WAL summary files from an operating system point of view.<\/p>\n\n\n\n<p>This time we&#8217;ll not start from a fresh, new cluster but we start with a new table containing some data:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: sql; highlight: [1,3,5,7]; title: ; notranslate\" title=\"\">\npostgres=# create table x ( a int, b text );\nCREATE TABLE\npostgres=# insert into x select i, i::text from generate_series(1,10000) i;\nINSERT 0 10000\npostgres=# checkpoint;\nCHECKPOINT\npostgres=# select pg_relation_filepath(&#039;x&#039;);\n pg_relation_filepath \n----------------------\n base\/5\/16399\n(1 row)\n<\/pre><\/div>\n\n\n<p>As we know already from the <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-system-information-functions\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous post<\/a>, all the changed blocks should be listed in the last WAL summary file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\npostgres@debian12-pg:\/home\/postgres\/ &#x5B;pgdev] cd $PGDATA\/pg_wal\/summaries\/\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] ls -latr\ntotal 92\n-rw------- 1 postgres postgres 4808 Jan 18 10:51 00000001000000000100002800000000010B3098.summary\n-rw------- 1 postgres postgres 4944 Jan 18 10:51 0000000100000000010B309800000000014E8838.summary\n-rw------- 1 postgres postgres   32 Jan 18 10:51 0000000100000000014E883800000000014E8938.summary\n-rw------- 1 postgres postgres  230 Jan 18 10:51 0000000100000000014E893800000000014EF360.summary\n-rw------- 1 postgres postgres   32 Jan 18 10:51 0000000100000000014EF36000000000014EF460.summary\n-rw------- 1 postgres postgres   88 Jan 18 10:51 0000000100000000014EF46000000000014EF798.summary\n-rw------- 1 postgres postgres   32 Jan 18 10:51 0000000100000000014EF79800000000014EF810.summary\n-rw------- 1 postgres postgres  682 Jan 18 11:11 0000000100000000014EF8100000000001557C00.summary\n-rw------- 1 postgres postgres   88 Jan 18 11:14 000000010000000001557C0000000000015598C8.summary\n-rw------- 1 postgres postgres 8250 Jan 18 11:23 0000000100000000015598C80000000005290968.summary\n-rw------- 1 postgres postgres 8490 Jan 18 11:29 00000001000000000529096800000000077DC3C0.summary\n-rw------- 1 postgres postgres  116 Jan 18 11:49 0000000100000000077DC3C000000000077DE570.summary\ndrwx------ 4 postgres postgres 4096 Jan 18 11:49 ..\n-rw------- 1 postgres postgres  434 Jan 18 14:29 0000000100000000077DE57000000000077F4060.summary\n-rw------- 1 postgres postgres  584 Jan 18 14:49 0000000100000000077F40600000000007811618.summary\n-rw------- 1 postgres postgres  756 Jan 18 15:35 00000001000000000781161800000000078D3198.summary\ndrwx------ 2 postgres postgres 4096 Jan 18 15:35 .\n<\/pre><\/div>\n\n\n<p>If we give the last summary file to pg_walsummary and grep for our table, we&#8217;ll get this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] pg_walsummary 00000001000000000781161800000000078D3198.summary | grep 16399\nTS 1663, DB 5, REL 16399, FORK main: limit 0\nTS 1663, DB 5, REL 16399, FORK main: blocks 0..53\nTS 1663, DB 5, REL 16399, FORK vm: block 0\n<\/pre><\/div>\n\n\n<p>The number of changed blocks reported here (0..53) is again consistent with what we can see on disk:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] ls -la ..\/..\/base\/5\/16399\n-rw------- 1 postgres postgres 442368 Jan 18 15:35 ..\/..\/base\/5\/16399\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] echo &quot;442368\/8192&quot; | bc\n54\n<\/pre><\/div>\n\n\n<p>&#8220;limit 0&#8221; means, that the relation was either created or truncated in this range of WAL and &#8220;vm&#8221; means the <a href=\"https:\/\/www.postgresql.org\/docs\/current\/storage-vm.html\">visibility map<\/a>.<\/p>\n\n\n\n<p>By default pg_walsummary gives you a line per range of blocks, but you may list the individual blocks as well:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] pg_walsummary --individual 00000001000000000781161800000000078D3198.summary | grep 16399\nTS 1663, DB 5, REL 16399, FORK main: limit 0\nTS 1663, DB 5, REL 16399, FORK main: block 0\nTS 1663, DB 5, REL 16399, FORK main: block 1\nTS 1663, DB 5, REL 16399, FORK main: block 2\nTS 1663, DB 5, REL 16399, FORK main: block 3\n...\nTS 1663, DB 5, REL 16399, FORK main: block 52\nTS 1663, DB 5, REL 16399, FORK main: block 53\nTS 1663, DB 5, REL 16399, FORK vm: block 0\n<\/pre><\/div>\n\n\n<p>Another option you have is to give all the summary files to pg_walsummary:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@debian12-pg:\/u02\/pgdata\/PGDEV\/pg_wal\/summaries\/ &#x5B;pgdev] pg_walsummary *\nTS 1663, DB 1, REL 112, FORK main: block 0\nTS 1663, DB 1, REL 113, FORK main: block 0\nTS 1663, DB 1, REL 174, FORK main: block 0\nTS 1663, DB 1, REL 175, FORK main: block 0\nTS 1663, DB 1, REL 548, FORK main: block 0\nTS 1663, DB 1, REL 549, FORK main: block 0\nTS 1663, DB 1, REL 827, FORK main: block 0\nTS 1663, DB 1, REL 828, FORK main: block 0\nTS 1663, DB 1, REL 2187, FORK main: block 0\nTS 1663, DB 1, REL 2228, FORK main: blocks 0..1\nTS 1663, DB 1, REL 2337, FORK main: block 0\n...\nTS 1663, DB 5, REL 16402, FORK main: limit 0\nTS 1663, DB 5, REL 16403, FORK main: limit 0\nTS 1663, DB 5, REL 16403, FORK main: block 0\n<\/pre><\/div>\n\n\n<p>Depending on what you&#8217;re interested in, you can now easily grep over the output.<\/p>\n\n\n\n<p>I don&#8217;t think pg_walsummary is something a lot of people will use on a day by day basis, but having it available for troubleshooting and testing is great.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last posts about the new incremental backup feature we&#8217;ve looked at the following topics: In this post we&#8217;ll look into the final topic for this feature: In addition to what was described in the previous posts, there is also a new utility which made it into PostgreSQL: pg_walsummary. As the name implies this [&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-30294","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.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 17: Incremental backups, pg_walsummary - 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-17-incremental-backups-pg_walsummary\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 17: Incremental backups, pg_walsummary\" \/>\n<meta property=\"og:description\" content=\"In the last posts about the new incremental backup feature we&#8217;ve looked at the following topics: In this post we&#8217;ll look into the final topic for this feature: In addition to what was described in the previous posts, there is also a new utility which made it into PostgreSQL: pg_walsummary. As the name implies this [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-20T15:10:00+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-17-incremental-backups-pg_walsummary\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"PostgreSQL 17: Incremental backups, pg_walsummary\",\"datePublished\":\"2024-01-20T15:10:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/\"},\"wordCount\":299,\"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-17-incremental-backups-pg_walsummary\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/\",\"name\":\"PostgreSQL 17: Incremental backups, pg_walsummary - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2024-01-20T15:10:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/postgresql-17-incremental-backups-pg_walsummary\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 17: Incremental backups, pg_walsummary\"}]},{\"@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 17: Incremental backups, pg_walsummary - 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-17-incremental-backups-pg_walsummary\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 17: Incremental backups, pg_walsummary","og_description":"In the last posts about the new incremental backup feature we&#8217;ve looked at the following topics: In this post we&#8217;ll look into the final topic for this feature: In addition to what was described in the previous posts, there is also a new utility which made it into PostgreSQL: pg_walsummary. As the name implies this [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/","og_site_name":"dbi Blog","article_published_time":"2024-01-20T15:10:00+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-17-incremental-backups-pg_walsummary\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"PostgreSQL 17: Incremental backups, pg_walsummary","datePublished":"2024-01-20T15:10:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/"},"wordCount":299,"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-17-incremental-backups-pg_walsummary\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/","name":"PostgreSQL 17: Incremental backups, pg_walsummary - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-01-20T15:10:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-17-incremental-backups-pg_walsummary\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 17: Incremental backups, pg_walsummary"}]},{"@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\/30294","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=30294"}],"version-history":[{"count":7,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/30294\/revisions"}],"predecessor-version":[{"id":30301,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/30294\/revisions\/30301"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=30294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=30294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=30294"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=30294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}