{"id":6414,"date":"2015-12-02T07:18:20","date_gmt":"2015-12-02T06:18:20","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/"},"modified":"2015-12-02T07:18:20","modified_gmt":"2015-12-02T06:18:20","slug":"upgrading-postgresql-to-a-new-major-release","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/","title":{"rendered":"Upgrading PostgreSQL to a new major release"},"content":{"rendered":"<p>The <a href=\"http:\/\/dbi-services.com\/blog\/patching-postgresql-to-a-new-minor-release\/\" target=\"_blank\" rel=\"noopener\">last post<\/a> looked into how to upgrade PostgreSQL to a new minor version. In this post I&#8217;ll look into how to upgrade PostgreSQL to a new major version. This is not as simple as just installing the binaries and start the instance from there. For major upgrades there are two possibilities:<\/p>\n<ul>\n<li>dump the old version and restore into the new version by using <a href=\"http:\/\/www.postgresql.org\/docs\/current\/static\/app-pgdump.html\" target=\"_blank\" rel=\"noopener\">pg_dump<\/a> and <a href=\"http:\/\/www.postgresql.org\/docs\/current\/static\/app-pgrestore.html\" target=\"_blank\" rel=\"noopener\">pg_restore<\/a><\/li>\n<li>use <a href=\"http:\/\/www.postgresql.org\/docs\/current\/static\/pgupgrade.html\" target=\"_blank\" rel=\"noopener\">pg_upgrade<\/a><\/li>\n<\/ul>\n<p>I&#8217;ll only look into pg_upgrade for this post. For simplicity I&#8217;ll upgrade the 9.4.5 PostgreSQL instance from the last post to  9.5 beta2. The binaries for 9.5 beta2 are already there:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] which pg_upgrade\n\/u01\/app\/postgres\/product\/95\/db_b2\/bin\/pg_upgrade\n<\/pre>\n<p>Obviously we need to stop the current version before performing the upgrade:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] pg_ctl stop -D \/u02\/pgdata\/PG1\nwaiting for server to shut down.... done\nserver stopped\n<\/pre>\n<p>Then we need to create a new database cluster with the version we want to upgrade to  (9.5 beta2 in this case):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] mkdir \/u02\/pgdata\/PG7\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] mkdir \/u03\/pgdata\/PG7\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] mkdir \/u90\/arch\/PG7\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG1] initdb -D \/u02\/pgdata\/PG7 -X \/u03\/pgdata\/PG7\/ \nThe files belonging to this database system will be owned by user \"postgres\".\nThis user must also own the server process.\n\nThe database cluster will be initialized with locales\n  COLLATE:  en_US.UTF-8\n  CTYPE:    en_US.UTF-8\n  MESSAGES: en_US.UTF-8\n  MONETARY: de_CH.UTF-8\n  NUMERIC:  de_CH.UTF-8\n  TIME:     en_US.UTF-8\nThe default database encoding has accordingly been set to \"UTF8\".\nThe default text search configuration will be set to \"english\".\n\nData page checksums are disabled.\n\nfixing permissions on existing directory \/u02\/pgdata\/PG7 ... ok\nfixing permissions on existing directory \/u03\/pgdata\/PG7 ... ok\ncreating subdirectories ... ok\nselecting default max_connections ... 100\nselecting default shared_buffers ... 128MB\nselecting dynamic shared memory implementation ... posix\ncreating configuration files ... ok\ncreating template1 database in \/u02\/pgdata\/PG7\/base\/1 ... ok\ninitializing pg_authid ... ok\ninitializing dependencies ... ok\ncreating system views ... ok\nloading system objects' descriptions ... ok\ncreating collations ... ok\ncreating conversions ... ok\ncreating dictionaries ... ok\nsetting privileges on built-in objects ... ok\ncreating information schema ... ok\nloading PL\/pgSQL server-side language ... ok\nvacuuming database template1 ... ok\ncopying template1 to template0 ... ok\ncopying template1 to postgres ... ok\nsyncing data to disk ... ok\n\nWARNING: enabling \"trust\" authentication for local connections\nYou can change this by editing pg_hba.conf or using the option -A, or\n--auth-local and --auth-host, the next time you run initdb.\n\nSuccess. You can now start the database server using:\n\n    pg_ctl -D \/u02\/pgdata\/PG7 -l logfile start\n<\/pre>\n<p>To verify the version we do a quick startup:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] pg_ctl -D \/u02\/pgdata\/PG7 start\nserver starting\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] LOG:  database system was shut down at 2015-12-01 12:10:02 CET\nLOG:  MultiXact member wraparound protections are now enabled\nLOG:  database system is ready to accept connections\nLOG:  autovacuum launcher started\n\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] sqh\nNull display is \"NULL\".\nTiming is on.\npsql (9.5beta2)\nType \"help\" for help.\n\n(postgres@[local]:5449) [postgres] &gt; \n<\/pre>\n<p>Then shut it down again:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] pg_ctl -D \/u02\/pgdata\/PG7 stop -m fast\nwaiting for server to shut down....LOG:  received fast shutdown request\nLOG:  aborting any active transactions\nLOG:  autovacuum launcher shutting down\nLOG:  shutting down\nLOG:  database system is shut down\n done\nserver stopped\n<\/pre>\n<p>Now we can begin with the upgrade by specifying four environment variables:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] export PGDATAOLD=\/u02\/pgdata\/PG1\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] export PGDATANEW=\/u02\/pgdata\/PG7\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] export PGBINOLD=\/u01\/app\/postgres\/product\/94\/db_5\/bin\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] export PGBINNEW=\/u01\/app\/postgres\/product\/95\/db_b2\/bin\/\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] pg_upgrade\nPerforming Consistency Checks\n-----------------------------\nChecking cluster versions                                   ok\nChecking database user is the install user                  ok\nChecking database connection settings                       ok\nChecking for prepared transactions                          ok\nChecking for reg* system OID user data types                ok\nChecking for contrib\/isn with bigint-passing mismatch       ok\nCreating dump of global objects                             ok\nCreating dump of database schemas\n                                                            ok\nChecking for presence of required libraries                 ok\nChecking database user is the install user                  ok\nChecking for prepared transactions                          ok\n\nIf pg_upgrade fails after this point, you must re-initdb the\nnew cluster before continuing.\n\nPerforming Upgrade\n------------------\nAnalyzing all rows in the new cluster                       ok\nFreezing all rows on the new cluster                        ok\nDeleting files from new pg_clog                             ok\nCopying old pg_clog to new server                           ok\nSetting next transaction ID and epoch for new cluster       ok\nDeleting files from new pg_multixact\/offsets                ok\nCopying old pg_multixact\/offsets to new server              ok\nDeleting files from new pg_multixact\/members                ok\nCopying old pg_multixact\/members to new server              ok\nSetting next multixact ID and offset for new cluster        ok\nResetting WAL archives                                      ok\nSetting frozenxid and minmxid counters in new cluster       ok\nRestoring global objects in the new cluster                 ok\nRestoring database schemas in the new cluster\n                                                            ok\nCreating newly-required TOAST tables                        ok\nCopying user relation files\n                                                            ok\nSetting next OID for new cluster                            ok\nSync data directory to disk                                 ok\nCreating script to analyze new cluster                      ok\nCreating script to delete old cluster                       ok\n\nUpgrade Complete\n----------------\nOptimizer statistics are not transferred by pg_upgrade so,\nonce you start the new server, consider running:\n    .\/analyze_new_cluster.sh\n\nRunning this script will delete the old cluster's data files:\n    .\/delete_old_cluster.sh\n<\/pre>\n<p>Quite easy, isn&#8217;t it? As pointed out by pg_upgrade optimizer statistics need to be gathered as this is not done automatically:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] pg_ctl -D \/u02\/pgdata\/PG7 start\nserver starting\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] LOG:  database system was shut down at 2015-12-01 12:18:34 CET\nLOG:  MultiXact member wraparound protections are now enabled\nLOG:  database system is ready to accept connections\nLOG:  autovacuum launcher started\n\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] .\/analyze_new_cluster.sh \nThis script will generate minimal optimizer statistics rapidly\nso your system is usable, and then gather statistics twice more\nwith increasing accuracy.  When it is done, your system will\nhave the default level of optimizer statistics.\n\nIf you have used ALTER TABLE to modify the statistics target for\nany tables, you might want to remove them and restore them after\nrunning this script because they will delay fast statistics generation.\n\nIf you would like default statistics as quickly as possible, cancel\nthis script and run:\n    \"\/u01\/app\/postgres\/product\/95\/db_b2\/bin\/vacuumdb\" --all --analyze-only\n\nvacuumdb: processing database \"bi\": Generating minimal optimizer statistics (1 target)\nvacuumdb: processing database \"db1\": Generating minimal optimizer statistics (1 target)\nvacuumdb: processing database \"patch\": Generating minimal optimizer statistics (1 target)\nvacuumdb: processing database \"postgres\": Generating minimal optimizer statistics (1 target)\nvacuumdb: processing database \"template1\": Generating minimal optimizer statistics (1 target)\nvacuumdb: processing database \"bi\": Generating medium optimizer statistics (10 targets)\nvacuumdb: processing database \"db1\": Generating medium optimizer statistics (10 targets)\nvacuumdb: processing database \"patch\": Generating medium optimizer statistics (10 targets)\nvacuumdb: processing database \"postgres\": Generating medium optimizer statistics (10 targets)\nvacuumdb: processing database \"template1\": Generating medium optimizer statistics (10 targets)\nvacuumdb: processing database \"bi\": Generating default (full) optimizer statistics\nvacuumdb: processing database \"db1\": Generating default (full) optimizer statistics\nvacuumdb: processing database \"patch\": Generating default (full) optimizer statistics\nvacuumdb: processing database \"postgres\": Generating default (full) optimizer statistics\nvacuumdb: processing database \"template1\": Generating default (full) optimizer statistics\n\nDone\n<\/pre>\n<p>The output above proves that the &#8220;patch&#8221; database is really there but we can confirm that:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] sqh\nNull display is \"NULL\".\nTiming is on.\npsql (9.5beta2)\nType \"help\" for help.\n\n(postgres@[local]:5449) [postgres] &gt; c patch\nYou are now connected to database \"patch\" as user \"postgres\".\n(postgres@[local]:5449)  &gt; select count(*) from test;\n count \n-------\n   100\n(1 row)\n\nTime: 0.705 ms\n<\/pre>\n<p>And finally we can delete the old data files:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] .\/delete_old_cluster.sh \npostgres@oel7:\/u01\/app\/postgres\/software\/ [PG7] ls -al \/u02\/pgdata\/PG1\nls: cannot access \/u02\/pgdata\/PG1: No such file or directory\n<\/pre>\n<p>That&#8217;s it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The last post looked into how to upgrade PostgreSQL to a new minor version. In this post I&#8217;ll look into how to upgrade PostgreSQL to a new major version. This is not as simple as just installing the binaries and start the instance from there. For major upgrades there are two possibilities: dump the old [&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":[229],"tags":[155,77,219],"type_dbi":[],"class_list":["post-6414","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-patching","tag-postgresql","tag-upgrade"],"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>Upgrading PostgreSQL to a new major release - 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\/upgrading-postgresql-to-a-new-major-release\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Upgrading PostgreSQL to a new major release\" \/>\n<meta property=\"og:description\" content=\"The last post looked into how to upgrade PostgreSQL to a new minor version. In this post I&#8217;ll look into how to upgrade PostgreSQL to a new major version. This is not as simple as just installing the binaries and start the instance from there. For major upgrades there are two possibilities: dump the old [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-02T06:18:20+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=\"7 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\/upgrading-postgresql-to-a-new-major-release\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Upgrading PostgreSQL to a new major release\",\"datePublished\":\"2015-12-02T06:18:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\"},\"wordCount\":221,\"commentCount\":0,\"keywords\":[\"Patching\",\"PostgreSQL\",\"Upgrade\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\",\"name\":\"Upgrading PostgreSQL to a new major release - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2015-12-02T06:18:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upgrading PostgreSQL to a new major release\"}]},{\"@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":"Upgrading PostgreSQL to a new major release - 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\/upgrading-postgresql-to-a-new-major-release\/","og_locale":"en_US","og_type":"article","og_title":"Upgrading PostgreSQL to a new major release","og_description":"The last post looked into how to upgrade PostgreSQL to a new minor version. In this post I&#8217;ll look into how to upgrade PostgreSQL to a new major version. This is not as simple as just installing the binaries and start the instance from there. For major upgrades there are two possibilities: dump the old [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/","og_site_name":"dbi Blog","article_published_time":"2015-12-02T06:18:20+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Upgrading PostgreSQL to a new major release","datePublished":"2015-12-02T06:18:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/"},"wordCount":221,"commentCount":0,"keywords":["Patching","PostgreSQL","Upgrade"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/","url":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/","name":"Upgrading PostgreSQL to a new major release - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2015-12-02T06:18:20+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Upgrading PostgreSQL to a new major release"}]},{"@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\/6414","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=6414"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/6414\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=6414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=6414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=6414"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=6414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}