{"id":4617,"date":"2015-05-18T09:56:18","date_gmt":"2015-05-18T07:56:18","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/"},"modified":"2015-05-18T09:56:18","modified_gmt":"2015-05-18T07:56:18","slug":"getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/","title":{"rendered":"getting started with postgres plus advanced server (3) &#8211; setting up a hot standby server"},"content":{"rendered":"<p>So, we have a <a href=\"http:\/\/dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-1-setting-up-ppas\/\" target=\"_blank\" rel=\"noopener\">ppas 94 database up and running<\/a> and we have a <a href=\"http:\/\/dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-2-setting-up-a-backup-and-recovery-server\/\" target=\"_blank\" rel=\"noopener\">backup server for backing up and restoring the database<\/a>. Now it is time to additionally protect the database by setting up a hot standby database. This database could even be used to offload reporting functionality from the primary database as the standby database will be open in read only mode. Again, I&#8217;ll use another system for that so that the system overview looks like this:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>server<\/strong><\/td>\n<td><strong>ip address<\/strong><\/td>\n<td><strong>purpose<\/strong><\/td>\n<\/tr>\n<tr>\n<td>ppas<\/td>\n<td>192.168.56.243<\/td>\n<td>ppas database cluster<\/td>\n<\/tr>\n<tr>\n<td>ppasbart<\/td>\n<td>192.168.56.245<\/td>\n<td>backup and recovery server<\/td>\n<\/tr>\n<tr>\n<td>ppasstandby<\/td>\n<td>192.168.56.244<\/td>\n<td>ppas hot standby database<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>As the standby database will need the ppas binaries just follow <a href=\"http:\/\/dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-1-setting-up-ppas\/\" target=\"_blank\" rel=\"noopener\">the first post<\/a> for setting this up again. Once the binaries are installed and the database is up and running I&#8217;ll completely destroy it but keep the data directory:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">[root@oel7 tmp]# service ppas-9.4 stop\nStopping Postgres Plus Advanced Server 9.4: \nwaiting for server to shut down.... done\nserver stopped\n[root@oel7 tmp]# rm -rf \/opt\/PostgresPlus\/9.4AS\/data\/*\n[root@oel7 tmp]# \n<\/pre>\n<p>Ready to go. It is amazingly easy to setup a hot standby server with postgres. In a nutshell, everything that needs to be done is to create a replication user in the database, do a <a href=\"http:\/\/www.postgresql.org\/docs\/current\/static\/app-pgbasebackup.html\" target=\"_blank\" rel=\"noopener\">base backup<\/a> of the primary database, copy that to the standby server, create a recovery.conf file and startup the standby database. Lets start by creating the user which will be used for the recovery in the primary database:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">[root@ppas ~]# su - enterprisedb\n-bash-4.2$ . .\/pgplus_env.sh \n-bash-4.2$ psql\npsql.bin (9.4.1.3)\nType \"help\" for help.\n\nedb=# edb=# create role standby LOGIN REPLICATION UNENCRYPTED PASSWORD 'standby';\nCREATE ROLE\nedb=# commit;\nCOMMIT\nedb'# \n<\/pre>\n<p>&#8230; and adjust the pg_hba.conf file (the second entry is for the base backup later):<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-bash-4.2$ tail -1 data\/pg_hba.conf\nhost    replication     standby         192.168.56.244\/24          md5\nlocal   replication     standby                                              md5\n<\/pre>\n<p>&#8230; and adjust the wal-level in postgresql.conf<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-bash-4.2$ grep wal_level data\/postgresql.conf \nwal_level = hot_standby\t\t\t# minimal, archive, hot_standby, or logical\n<\/pre>\n<p>For the settings in pg_hba.conf and postgresql.conf to take effect either a reload of the main server process or a complete restart is required:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-bash-4.2$ pg_ctl -D data\/ restart\nwaiting for server to shut down..... done\nserver stopped\nserver starting\n<\/pre>\n<p>Now it is a good time to test if we can connect to the primary database from the standby node:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">[root@oel7 tmp]# \/opt\/PostgresPlus\/9.4AS\/bin\/psql -h 192.168.56.243 -U standby edb\nPassword for user standby: \npsql.bin (9.4.1.3)\nType \"help\" for help.\n\nedb=&gt; \n<\/pre>\n<p>Ready for the basebackup of the primary database?<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">mkdir \/var\/tmp\/primary_base_backup\/\n-bash-4.2$ pg_basebackup -D \/var\/tmp\/primary_base_backup\/ -U standby -F t -R -x -z -l for_standby -P\nPassword: \n56517\/56517 kB (100%), 1\/1 tablespace\n-bash-4.2$ \n<\/pre>\n<p>Especially notice the &#8220;-R&#8221; switch of pg_basebackup as this creates a minimal recovery.conf for us which we can use as a template for our standby database. Transfer and extract the file written to the standby server (I again prepared passwordless ssh authentication between the primary and the standby server. check the <a href=\"https:\/\/www.dbi-services.com\/index.php\/blog\/entry\/getting-started-with-postgres-plus-advanced-server-2-setting-up-backup-and-recovery-server\" target=\"_blank\" rel=\"noopener\">second post on how to do that<\/a>).<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">bash-4.2$ pwd\n\/opt\/PostgresPlus\/9.4AS\/data\nbash-4.2$ scp 192.168.56.243:\/var\/tmp\/primary_base_backup\/* .\nbase.tar.gz                                                                                                  100% 5864KB   5.7MB\/s   00:00    \n-bash-4.2$ \n-bash-4.2$ tar -axf base.tar.gz \n-bash-4.2$ ls\nbackup_label  dbms_pipe  pg_dynshmem    pg_log        pg_notify    pg_snapshots  pg_subtrans  PG_VERSION            postgresql.conf\nbase          global     pg_hba.conf    pg_logical    pg_replslot  pg_stat       pg_tblspc    pg_xlog               recovery.conf\nbase.tar.gz   pg_clog    pg_ident.conf  pg_multixact  pg_serial    pg_stat_tmp   pg_twophase  postgresql.auto.conf\n-bash-4.2$ \n<\/pre>\n<p>Almost ready. Now we need to adjust the recovery.conf file:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">standby_mode = 'on'\nprimary_conninfo = 'host=192.168.56.243 port=5444 user=standby password=standby'\nrestore_command = 'scp bart@192.168.56.245:\/opt\/backup\/ppas94\/archived_wals\/%f %p'\n<\/pre>\n<p>&#8230; and enable hot standby mode in the postgresql.conf file on the standby server and adjust the listen address:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-bash-4.2$ grep hot postgresql.conf \nwal_level = hot_standby\t\t\t# minimal, archive, hot_standby, or logical\nhot_standby = on\t\t\t# \"on\" allows queries during recovery\n#hot_standby_feedback = off\t\t# send info from standby to prevent\n-bash-4.2$ grep listen data\/postgresql.conf\nlisten_addresses = '192.168.56.244'\t\t# what IP address(es) to listen on;\n<\/pre>\n<p>Startup the standby database and if everything is fine messages similar to this should be reported in the postgresql log file (\/opt\/PostgresPlus\/9.4AS\/data\/pg_log\/):<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">2015-04-29 14:03:36 CEST LOG:  entering standby mode\nscp: \/opt\/backup\/ppas94\/archived_wals\/000000010000000000000017: No such file or directory\n2015-04-29 14:03:36 CEST LOG:  consistent recovery state reached at 0\/17000090\n2015-04-29 14:03:36 CEST LOG:  redo starts at 0\/17000090\n2015-04-29 14:03:36 CEST LOG:  record with zero length at 0\/170000C8\n2015-04-29 14:03:36 CEST LOG:  database system is ready to accept read only connections\n2015-04-29 14:03:36 CEST LOG:  started streaming WAL from primary at 0\/17000000 on timeline 1\n<\/pre>\n<p>To further prove the setup lets create a simple table in the primary database and add some rows to it:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">edb=# create table standby_test ( a int ); \nCREATE TABLE\nedb=# insert into standby_test values (1);\nINSERT 0 1\nedb=# insert into standby_test values (2);\nINSERT 0 1\nedb=# commit;\nCOMMIT\nedb=# ! hostname\nppas.local\nedb=#<\/pre>\n<p>Lets see if we can query the table on the standby:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">-bash-4.2$ psql\npsql.bin (9.4.1.3)\nType \"help\" for help.\n\nedb=# select * from standby_test;\n a \n---\n 1\n 2\n(2 rows)\n\nedb=# ! hostname\nppasstandby.local\nedb=# \n<\/pre>\n<p>Cool. Minimal effort for getting a hot standby database up and running. Make yourself familiar with <a href=\"http:\/\/www.postgresql.org\/docs\/current\/static\/hot-standby.html\" target=\"_blank\" rel=\"noopener\">the various settings that influence the behavior of the standby database<\/a>. I&#8217;ll write another post on how to do failovers in near future.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, we have a ppas 94 database up and running and we have a backup server for backing up and restoring the database. Now it is time to additionally protect the database by setting up a hot standby database. This database could even be used to offload reporting functionality from the primary database as the [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[199],"tags":[77],"type_dbi":[],"class_list":["post-4617","post","type-post","status-publish","format-standard","hentry","category-hardware-storage","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>getting started with postgres plus advanced server (3) - setting up a hot standby server - 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\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"getting started with postgres plus advanced server (3) - setting up a hot standby server\" \/>\n<meta property=\"og:description\" content=\"So, we have a ppas 94 database up and running and we have a backup server for backing up and restoring the database. Now it is time to additionally protect the database by setting up a hot standby database. This database could even be used to offload reporting functionality from the primary database as the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-18T07:56:18+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=\"5 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\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"getting started with postgres plus advanced server (3) &#8211; setting up a hot standby server\",\"datePublished\":\"2015-05-18T07:56:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\"},\"wordCount\":492,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Hardware &amp; Storage\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\",\"name\":\"getting started with postgres plus advanced server (3) - setting up a hot standby server - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2015-05-18T07:56:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"getting started with postgres plus advanced server (3) &#8211; setting up a hot standby server\"}]},{\"@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":"getting started with postgres plus advanced server (3) - setting up a hot standby server - 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\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/","og_locale":"en_US","og_type":"article","og_title":"getting started with postgres plus advanced server (3) - setting up a hot standby server","og_description":"So, we have a ppas 94 database up and running and we have a backup server for backing up and restoring the database. Now it is time to additionally protect the database by setting up a hot standby database. This database could even be used to offload reporting functionality from the primary database as the [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/","og_site_name":"dbi Blog","article_published_time":"2015-05-18T07:56:18+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"getting started with postgres plus advanced server (3) &#8211; setting up a hot standby server","datePublished":"2015-05-18T07:56:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/"},"wordCount":492,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Hardware &amp; Storage"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/","url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/","name":"getting started with postgres plus advanced server (3) - setting up a hot standby server - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2015-05-18T07:56:18+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-postgres-plus-advanced-server-3-setting-up-a-hot-standby-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"getting started with postgres plus advanced server (3) &#8211; setting up a hot standby server"}]},{"@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\/4617","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=4617"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4617\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=4617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=4617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=4617"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=4617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}