
{"id":2633,"date":"2021-11-18T12:31:14","date_gmt":"2021-11-18T12:31:14","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=2633"},"modified":"2021-11-19T06:43:57","modified_gmt":"2021-11-19T06:43:57","slug":"running-postgres96-time-for-a-major-upgrade","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/","title":{"rendered":"Running PostgreSQL 9.6? Time for a major upgrade!"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-style-default\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png\" alt=\"\" class=\"wp-image-2636\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png 1024w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-300x169.png 300w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-768x432.png 768w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1536x864.png 1536w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-2048x1152.png 2048w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-176x99.png 176w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-142x80.png 142w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-394x222.png 394w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-915x514.png 915w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1240x697.png 1240w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1920x1080.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:21px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In the <a href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-minor-release-nov-2021\/\" target=\"_blank\" rel=\"noreferrer noopener\">last blog post<\/a>, we mentioned the latest PostgreSQL Minor release of PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19, and 9.6.24.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An important note is that this is the final release of the PostgreSQL 9.6 major version.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The PostgreSQL Global Development Group supports a major version for 5 years after its initial release. After its five-year anniversary, a major version will have one last minor release containing any fixes and will be considered end-of-life (EOL) and no longer supported. For more info, read the <a href=\"https:\/\/www.postgresql.org\/support\/versioning\/\" target=\"_blank\" rel=\"noreferrer noopener\">Versioning policy<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We would like to talk about the major upgrade options available with less downtime.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Progressive approach<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before delving into any PostgreSQL major upgrade, it is important to carry out a progressive approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testing the upgrade: <\/strong>Using a Logical replication solution, like, for ex: pglogical, you can do this in two steps which allows you to properly test applications working with the upgraded version of PostgreSQL,<br>as well as the switch operation itself. Meaning, you could have both your PosgreSQL 9.6 and the latest version up and running at the same point in time. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Near zero cut-over time: <\/strong>By using logical replication, you can have a near-zero cut-over time switch to the latest version, therefore reducing the risk of failure and issues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Reducing technical debt:<\/strong> It is recommended to utilize the upgrade downtime\/maintenance window to install an updated minor version of the Operating system and of PostgreSQL on a new server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The pglogical way<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>pglogical<\/strong> extension can be used to implement logical replication between PostgreSQL version 9.6 and any latest PostgreSQL version.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This method guarantees a very short downtime that just depends on the time needed to redirect all the connections to the new instance, once the subscriber has caught up with the old instance and replication is in streaming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is recommended to use a different database instance as the replication target.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pglogical will replicate from the current cluster to a new PostgreSQL cluster, also composed of one master and one physical replica, that will work in parallel with the current 9.6 master.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The steps would be:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Prepare the subscriber<\/strong><ul><li>Take a pg_dumpall of your PostgreSQL 9.6 instance<\/li><li>If there are any tables without Primary key, pglogical cannot logically replicate them. So, take a dump of the tables that don&#8217;t have a PKey.<\/li><li>Restore the dumps and your target instance is partially ready<\/li><\/ul><\/li><li><strong>Setup the pglogial provider<\/strong><ul><li>Make sure you have the minimal configuration parameters set on postgresql.conf file<\/li><\/ul><\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><code>wal_level = logical<br>max_wal_senders = 10<br>max_replication_slots = 10<br>shared_preload_libraries = 'pglogical'<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Create pglogical extension and node<\/li><li>Add tables and sequences to the replication, the following SQLs would help:<br><br>Adding tables:<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>SELECT pglogical.replication_set_add_table(<br>set_name := 'default',<br>relation := c.oid,<br>synchronize_data := true<br>)<br>FROM<br>pg_class c<br>JOIN<br>pg_namespace n<br>ON n.oid = c.relnamespace<br>WHERE<br>c.relkind = 'r'<br>AND EXISTS (<br>SELECT 1<br>FROM pg_constraint con<br>WHERE con.conrelid = c.oid<br>AND con.contype = 'p'<br>)<br>AND n.nspname &lt;&gt; ALL (<br>ARRAY [<br>'pg_catalog',<br>'information_schema',<br>'pglogical',<br>'pglogical_origin'<br>]<br>);<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adding sequences to replication:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>SELECT pglogical.replication_set_add_all_sequences(<br>set_name := 'default',<br>schema_names := '{public, bo}'::text[],<br>synchronize_data := true<br>);<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The remaining steps would get the publisher and subscriber communicate and logical replication<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Setup the pglogical subscriber<\/li><li>Monitor logical replication on database<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><code>SELECT * FROM pglogical.show_subscription_status();<br>SELECT pglogical.wait_slot_confirm_lsn(NULL, NULL);<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, the actual cutover from PostgreSQL 9.6 to the Latest target version<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Make sure applications are stopped on the provider<\/li><li>Make sure there is no replication lag on the logical connection<\/li><li>Dump and restore of tables without PK from the subscriber onto new instance<\/li><li>Synchronize database sequence values<\/li><li>Make sure everything works as expected<\/li><li>Switch the database connection from PG9.6 to the latest server<\/li><li>Cleanup replication and old server<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">While working with a couple of our customers, we had observed issues with Database sequence values not synching 100%. Here&#8217;s an alternate SQL approach we took using pg_dump and psql restore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Execute the pg_dump command on PG13 instance and you will get an output file sequence_dump.sql<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\\pset tuples_only\n\\o pgdump_command.out\nSELECT 'pg_dump -h &lt;pg96-host&gt; -d &lt;database&gt; -U postgres -c -f sequence_dump.sql '||string_agg('-t ' || n.nspname||'.'||c.relname, ' ')\n as pg_dump_statement\n FROM pg_catalog.pg_class c\n      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\n WHERE c.relkind IN ('S','')\n       AND n.nspname &lt;&gt; 'pg_catalog'\n       AND n.nspname &lt;&gt; 'information_schema'\n       AND n.nspname !~ '^pg_toast'\n   AND pg_catalog.pg_table_is_visible(c.oid);\n\\o<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For restoring, simple call psql and the file, like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>psql -d &lt;dbname&gt; -f sequence_dump.sql<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong> PgBouncer could also be used to reduce downtime when pointing applications to the new server.<\/p>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Using <code>pg_upgrade<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Alternatively, an in-place upgrade from 9.6 to any latest version is also a possibility. There&#8217;s a definite downtime involved in this approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Well, <em>how does pg_upgrade work?<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The pg_upgrade utility works by creating a new set of database catalog tables, and then creating the old objects again in the new tables using the same identifiers as before. The pg_upgrade utility works easily because the data block format hasn&#8217;t changed between some releases. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How to go about pg_upgrade?<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Set up a test server with the PG9.6 on it. Restore one of your backups in it. Upgrade that system to the new release to verify that there are no conflicts from software dependencies.<\/li><li>Test your application. Make sure you identify and test each add-in PostgreSQL module you were using to confirm that it still works at the new release level.<\/li><li>Back up your production server, before even thinking about pg_upgrade<\/li><li>Install new version of PostgreSQL on the production server, and create a new database server.<\/li><li>Shut down both the PG9.6 and the latest database instance<\/li><li>Run pg_upgrade<ul><li>For example: <code>pg_upgrade -v -b \/usr\/pgsql-9.6\/bin -B \/usr\/pgsql-13\/bin -d \/pg96\/data -D \/pg13\/data<\/code><\/li><\/ul><\/li><li>Start up the new database server and immediately run a server-wide ANALYZE operation using <code>vacuumdb --analyze-in-stages<\/code><\/li><li>Run through your Application validation and sanity tests<\/li><li>If everything works fine, re-enable wide access to the database server. Restart the applications.<br>and boom!<br><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/calendly.com\/info-osdb\" target=\"_blank\" rel=\"noreferrer noopener\">Talk to us<\/a> if you need assistance upgrading your PostgreSQL 9.6 databases to the latest version with minimal downtime.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last blog post, we mentioned the latest PostgreSQL Minor release of PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19, and [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[39,26],"class_list":["post-2633","post","type-post","status-publish","format-standard","hentry","category-postgresql-14","tag-major-upgrade","tag-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"In the last blog post, we mentioned the latest PostgreSQL Minor release of PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19, and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\" \/>\n<meta property=\"og:site_name\" content=\"OpenSource DB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-18T12:31:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-19T06:43:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png\" \/>\n<meta name=\"author\" content=\"Hari Kiran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:site\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hari Kiran\" \/>\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:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\"},\"author\":{\"name\":\"Hari Kiran\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\"},\"headline\":\"Running PostgreSQL 9.6? Time for a major upgrade!\",\"datePublished\":\"2021-11-18T12:31:14+00:00\",\"dateModified\":\"2021-11-19T06:43:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\"},\"wordCount\":834,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png\",\"keywords\":[\"major-upgrade\",\"postgresql\"],\"articleSection\":[\"PostgreSQL 14\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\",\"name\":\"Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png\",\"datePublished\":\"2021-11-18T12:31:14+00:00\",\"dateModified\":\"2021-11-19T06:43:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96.png\",\"width\":2401,\"height\":1350,\"caption\":\"PostgreSQL 9.6\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running PostgreSQL 9.6? Time for a major upgrade!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"name\":\"OpenSource DB\",\"description\":\"Your Trusted OpenSource Databases partner\",\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\",\"name\":\"OPENSOURCE DB PRIVATE LIMITED\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"width\":368,\"height\":120,\"caption\":\"OPENSOURCE DB PRIVATE LIMITED\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\",\"https:\/\/x.com\/opensource_db\",\"https:\/\/www.youtube.com\/channel\/UCmTI5h\",\"https:\/\/www.linkedin.com\/company\/opensource-db\",\"https:\/\/www.instagram.com\/opensource_db\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\",\"name\":\"Hari Kiran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"caption\":\"Hari Kiran\"},\"description\":\"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB","og_description":"In the last blog post, we mentioned the latest PostgreSQL Minor release of PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19, and [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2021-11-18T12:31:14+00:00","article_modified_time":"2021-11-19T06:43:57+00:00","og_image":[{"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png","type":"","width":"","height":""}],"author":"Hari Kiran","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Hari Kiran","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/"},"author":{"name":"Hari Kiran","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09"},"headline":"Running PostgreSQL 9.6? Time for a major upgrade!","datePublished":"2021-11-18T12:31:14+00:00","dateModified":"2021-11-19T06:43:57+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/"},"wordCount":834,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png","keywords":["major-upgrade","postgresql"],"articleSection":["PostgreSQL 14"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/","url":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/","name":"Running PostgreSQL 9.6? Time for a major upgrade! - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96-1024x576.png","datePublished":"2021-11-18T12:31:14+00:00","dateModified":"2021-11-19T06:43:57+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/11\/osdb-blog-pg-96.png","width":2401,"height":1350,"caption":"PostgreSQL 9.6"},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/running-postgres96-time-for-a-major-upgrade\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"Running PostgreSQL 9.6? Time for a major upgrade!"}]},{"@type":"WebSite","@id":"https:\/\/test.opensource-db.in\/wp1\/#website","url":"https:\/\/test.opensource-db.in\/wp1\/","name":"OpenSource DB","description":"Your Trusted OpenSource Databases partner","publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/test.opensource-db.in\/wp1\/#organization","name":"OPENSOURCE DB PRIVATE LIMITED","url":"https:\/\/test.opensource-db.in\/wp1\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","width":368,"height":120,"caption":"OPENSOURCE DB PRIVATE LIMITED"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","https:\/\/x.com\/opensource_db","https:\/\/www.youtube.com\/channel\/UCmTI5h","https:\/\/www.linkedin.com\/company\/opensource-db","https:\/\/www.instagram.com\/opensource_db\/"]},{"@type":"Person","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09","name":"Hari Kiran","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","caption":"Hari Kiran"},"description":"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.","url":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Hari Kiran","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-14\/\" rel=\"category tag\">PostgreSQL 14<\/a>","rttpg_excerpt":"In the last blog post, we mentioned the latest PostgreSQL Minor release of PostgreSQL 14.1, 13.5, 12.9, 11.14, 10.19, and [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=2633"}],"version-history":[{"count":10,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2633\/revisions"}],"predecessor-version":[{"id":2871,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2633\/revisions\/2871"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=2633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=2633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=2633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}