{"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;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4133],"tags":[155,219],"class_list":["post-6414","post","type-post","status-publish","format-standard","hentry","category-database","tag-patching","tag-upgrade"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Upgrading PostgreSQL to a new major release - dbi services | 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;&nbsp;\" \/>\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 services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-02T06:18:20+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\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=\"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\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"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,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"keywords\":[\"Patching\",\"Upgrade\"],\"articleSection\":[\"Database\"],\"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 services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2015-12-02T06:18:20+00:00\",\"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 services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"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\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"caption\":\"Open source Team\"},\"description\":\"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Upgrading PostgreSQL to a new major release - dbi services | 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;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/upgrading-postgresql-to-a-new-major-release\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2015-12-02T06:18:20+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Open source Team","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":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"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,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"keywords":["Patching","Upgrade"],"articleSection":["Database"],"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 services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2015-12-02T06:18:20+00:00","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 services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","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":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","caption":"Open source Team"},"description":"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.","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\/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\/28"}],"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"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}