
{"id":8587,"date":"2025-06-11T11:42:22","date_gmt":"2025-06-11T11:42:22","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=8587"},"modified":"2025-06-11T11:42:27","modified_gmt":"2025-06-11T11:42:27","slug":"evolving-postgresql-backups-my-experience-with-automating-backups","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/","title":{"rendered":"Evolving PostgreSQL Backups: My experience with automating backups"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When it comes to managing PostgreSQL backups in production, pgBackRest has consistently stood out as one of the most powerful, flexible, and enterprise-ready solutions available. I recently implemented pgBackRest in a native PostgreSQL environment and found it not only reliable and secure but also impressively scalable, especially when paired with the latest feature updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this post, I\u2019ll walk you through the key version changes from pgBackRest 2.45 to 2.55.1, spotlighting major enhancements and quality-of-life improvements introduced across recent releases, including the game-changing 2.53. Whether you&#8217;re setting up pgBackRest for the first time or looking to optimize your existing deployment, these updates bring significant value to modern PostgreSQL operations.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">From stable to smarter: What&#8217;s changed since v2.45?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Version 2.45 introduced block incremental backups (beta), a major step toward faster and more storage-efficient backups by only saving changed blocks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Over subsequent versions, this feature matured alongside improvements to recovery workflows (e.g., better handling of recovery.signal), logging defaults, and usability documentation.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u00a0Highlights from v2.53 and beyond<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Concurrent Backup Support<\/strong>: Now you can run full, diff, or incr backups across multiple repositories simultaneously, critical for high-availability (HA) and cloud-native setups.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Smarter Logging &amp; TLS Enhancements:<\/strong> Defaults like log-level-stderr=off, better SFTP error reporting, and IP SAN validation in TLS configs improve security and clarity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cloud-Ready Features:<\/strong> With enhanced encryption, object storage support, and batch cleanup capabilities, pgBackRest is more aligned than ever with hybrid and cloud-first environments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These enhancements reflect pgBackRest\u2019s core philosophy: high performance, cloud compatibility, and zero-compromise data safety.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure to read our previous blog posts on this topic:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/test.opensource-db.in\/wp1\/unveiling-the-mystery-of-postgres-backups-for-my-peeps\/\">Best PostgreSQL Backup Tools<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/test.opensource-db.in\/wp1\/setting-up-and-configuring-pgbackrest\/\">Setting up and Configuring pgBackRest<\/a><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Configuration of pgBackrest<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Do these steps on the primary and replica using a &#8216;repo&#8217; of the pgbackrest.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sudo mkdir -p \/var\/lib\/pgbackrest<\/li>\n\n\n\n<li>&nbsp;sudo chmod 0750 \/var\/lib\/pgbackrest<\/li>\n\n\n\n<li>sudo chown -R postgres:postgres \/var\/lib\/pgbackrest<\/li>\n\n\n\n<li>sudo chown -R postgres:postgres \/var\/log\/pgbackrest<\/li>\n\n\n\n<li>sudo cp \/etc\/pgbackrest.conf \/etc\/pgbackrest.conf.backup<\/li>\n\n\n\n<li>sudo chmod 755 \/usr\/bin\/pgbackrest<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Configure your replica<\/strong>(repo) &#8211; vi \/etc\/pgbackrest.conf<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"467\" height=\"340\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-151619-1.png\" alt=\"\" class=\"wp-image-8590\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-151619-1.png 467w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-151619-1-300x218.png 300w\" sizes=\"(max-width: 467px) 100vw, 467px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Configure your replica<\/strong>(repo) &#8211; vi \/etc\/pgbackrest.conf<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"519\" height=\"352\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-152216.png\" alt=\"\" class=\"wp-image-8592\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-152216.png 519w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/Screenshot-2025-06-11-152216-300x203.png 300w\" sizes=\"(max-width: 519px) 100vw, 519px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We have configured both the primary and the standby server.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Initialize pgBackRest on the Replica (Repo Host)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In the replica server (repo host), log in as the postgres user and execute the following commands to create the stanza, verify the configuration, and perform an initial backup.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Create the Stanza<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">pgbackrest stanza-create &#8211;stanza=test &#8211;log-level-console=info<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfYRUkxx2eer28KLNr-UMo9fqF-VjDtV_NwBBrJAUStd4XSmCstNS6cE60fxIYsSqFgZ5mYG2ksQ13ZIvbiS2_iz3oJSdb-bvLjPENC7PTx_9Q1hHiNXgyv2GRMlruSmhwNZ0A7Lw?key=Ty02C9MY3DZJwCtvj4RsXg\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This command sets up the necessary internal metadata and prepares the repository for backups under the <code>test<\/code> stanza.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Check the Stanza Configuration<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">pgbackrest &#8211;stanza=test &#8211;config=\/etc\/pgbackrest.conf check<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdA-NGlkHd7sztOMiQKsosbo9Xfb6TPv2s_KF8L2zIbbwp46g6iD9hjjlz7MbVfFiilIm9THK0LdPW9E4-WTJWYf0yMwwGRY5Je5h5Pr-1WhcK9Dpa-EvQcJJ2RCZ18U0fYkOrPLA?key=Ty02C9MY3DZJwCtvj4RsXg\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This verifies communication between the primary and repository and checks PostgreSQL configuration for backup readiness.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 3: Run a Backup<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">pgbackrest backup &#8211;stanza=test &#8211;log-level-console=info<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe0N9jvN9J4aUO4XcmrO0OFEpp38xaHP99so1OMIinE-1pegSpb4byu1StRtxhhGrJRbu5sQuGgijI-mLJlhnz6NSN3fMhuPQpDkSWx04pr-rApHPWnQvRNNWBNNCJvg96IzgSnhA?key=Ty02C9MY3DZJwCtvj4RsXg\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Starts a backup using the configuration. You can also specify <code>--type=full<\/code>, <code>--type=diff<\/code>, or <code>--type=incr.<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 4: View Backup Info<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">pgbackrest &#8211;stanza=test info<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdYKRL5y4IY92dBAamEhlGeBNI9DC7pEPhGPaFanxLHWbFfpLWwrSm0_DvYZlQb9JgZnzxPfrUK456f_Gn5VKuC7LM-6SvEMEjKQQLuuZy1CSXr_C_L9-BHPiZPgG-2kWbhq95IgQ?key=Ty02C9MY3DZJwCtvj4RsXg\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Displays a summary of completed backups, sizes, and WAL coverage.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Automating pgBackRest Backups<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After successfully setting up and verifying pgBackRest for managing PostgreSQL backups, the next step was to <strong>automate the backup process<\/strong> to ensure regular and reliable protection of data, without the need for manual intervention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To achieve this, I used <strong>cron<\/strong>, a built-in job scheduler on most Linux systems. Cron allows you to schedule commands to run at specific intervals (daily, weekly, etc.), making it ideal for automating backup tasks like full, differential, or incremental backups.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By setting up automated backup jobs with pgBackRest, I was able to establish a consistent and efficient backup routine that reduces risk, improves disaster recovery readiness, and eliminates the chance of missed backups due to human error.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">pgBackRest uses different commands for different backup types:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Preparing backup commands:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full backup<\/strong> (usually once a week)<\/li>\n\n\n\n<li>pgbackrest &#8211;stanza=test backup &#8211;type=full<\/li>\n\n\n\n<li><strong>Differential backup<\/strong> (between full backups)<\/li>\n\n\n\n<li>pgbackrest &#8211;stanza=test backup &#8211;type=diff<\/li>\n\n\n\n<li><strong>Incremental backup<\/strong> (daily or multiple times a day)<\/li>\n\n\n\n<li>pgbackrest &#8211;stanza=test backup &#8211;type=incr<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Implementing a common and effective rotation strategy using crontab:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Full backup every Friday at 2:00 AM.<br><\/li>\n\n\n\n<li>Incremental backup on all other days at 2:00 AM.<br><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This balances reliability and performance, keeping the backup window short on most days while ensuring weekly full recovery points.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">crontab -e<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">0 2 * * 5 pgbackrest &#8211;stanza=test &#8211;type=full backup &gt;&gt; \/var\/log\/pgbackrest\/test-backup.log 2&gt;&amp;1<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">0 2 * * 0,1,2,3,4,6 pgbackrest &#8211;stanza=test &#8211;type=incr backup &gt;&gt; \/var\/log\/pgbackrest\/test-backup.log 2&gt;&amp;1<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfDZP5gCbizT0Cwyc8RE9AdJKlHn2ji3f6JehJP4JDA3V3OdvuR0A02_OKXeQNlcaio1L7scsZRSacqerIaWIhdhNWsaqe1luoS_E7c69kxOUs6St8_jOCBwkoeelcYqCiNQ-qA3g?key=Ty02C9MY3DZJwCtvj4RsXg\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This rotation balances backup time and recovery reliability while minimizing storage usage.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Conclusion:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The transition from pgBackRest 2.45 to 2.55.1 represents more than just incremental upgrades\u2014it reflects a strategic leap in backup management for PostgreSQL. With block-level incremental backups, concurrent repo support, and enhanced automation tools, pgBackRest is ready to meet the demands of both On-prem and cloud-native PostgreSQL infrastructures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you haven&#8217;t updated or implemented automation yet, now\u2019s the time to explore these powerful features. Backups shouldn&#8217;t just be reliable, they should be smart, efficient, and hands-off.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to managing PostgreSQL backups in production, pgBackRest has consistently stood out as one of the most powerful, [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":8604,"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":[1,23,42,89],"tags":[],"class_list":["post-8587","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-others","category-postgresql-14","category-postgresql-15","category-postgresql-16"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Evolving PostgreSQL Backups: My experience with automating backups - 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=\"Evolving PostgreSQL Backups: My experience with automating backups - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"When it comes to managing PostgreSQL backups in production, pgBackRest has consistently stood out as one of the most powerful, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\" \/>\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=\"2025-06-11T11:42:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T11:42:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"945\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keerthi Seetha\" \/>\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=\"Keerthi Seetha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 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\/evolving-postgresql-backups-my-experience-with-automating-backups\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\"},\"author\":{\"name\":\"Keerthi Seetha\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/27a0d58614eb95641245de6c693e777b\"},\"headline\":\"Evolving PostgreSQL Backups: My experience with automating backups\",\"datePublished\":\"2025-06-11T11:42:22+00:00\",\"dateModified\":\"2025-06-11T11:42:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\"},\"wordCount\":822,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png\",\"articleSection\":[\"Others\",\"PostgreSQL 14\",\"PostgreSQL 15\",\"PostgreSQL 16\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\",\"name\":\"Evolving PostgreSQL Backups: My experience with automating backups - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png\",\"datePublished\":\"2025-06-11T11:42:22+00:00\",\"dateModified\":\"2025-06-11T11:42:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png\",\"width\":1800,\"height\":945},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Evolving PostgreSQL Backups: My experience with automating backups\"}]},{\"@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\/27a0d58614eb95641245de6c693e777b\",\"name\":\"Keerthi Seetha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fee3bb0c2853d5deb94341712c23bc5ab139ea72438ce75bdbf8fb5c0f4807ea?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fee3bb0c2853d5deb94341712c23bc5ab139ea72438ce75bdbf8fb5c0f4807ea?s=96&d=mm&r=g\",\"caption\":\"Keerthi Seetha\"},\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/keerthi-seetha\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Evolving PostgreSQL Backups: My experience with automating backups - 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":"Evolving PostgreSQL Backups: My experience with automating backups - OpenSource DB","og_description":"When it comes to managing PostgreSQL backups in production, pgBackRest has consistently stood out as one of the most powerful, [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2025-06-11T11:42:22+00:00","article_modified_time":"2025-06-11T11:42:27+00:00","og_image":[{"width":1800,"height":945,"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png","type":"image\/png"}],"author":"Keerthi Seetha","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Keerthi Seetha","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/"},"author":{"name":"Keerthi Seetha","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/27a0d58614eb95641245de6c693e777b"},"headline":"Evolving PostgreSQL Backups: My experience with automating backups","datePublished":"2025-06-11T11:42:22+00:00","dateModified":"2025-06-11T11:42:27+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/"},"wordCount":822,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png","articleSection":["Others","PostgreSQL 14","PostgreSQL 15","PostgreSQL 16"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/","url":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/","name":"Evolving PostgreSQL Backups: My experience with automating backups - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png","datePublished":"2025-06-11T11:42:22+00:00","dateModified":"2025-06-11T11:42:27+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png","width":1800,"height":945},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/evolving-postgresql-backups-my-experience-with-automating-backups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"Evolving PostgreSQL Backups: My experience with automating backups"}]},{"@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\/27a0d58614eb95641245de6c693e777b","name":"Keerthi Seetha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fee3bb0c2853d5deb94341712c23bc5ab139ea72438ce75bdbf8fb5c0f4807ea?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fee3bb0c2853d5deb94341712c23bc5ab139ea72438ce75bdbf8fb5c0f4807ea?s=96&d=mm&r=g","caption":"Keerthi Seetha"},"url":"https:\/\/test.opensource-db.in\/wp1\/author\/keerthi-seetha\/"}]}},"rttpg_featured_image_url":{"full":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",1800,945,false],"landscape":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",1800,945,false],"portraits":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",1800,945,false],"thumbnail":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26-150x150.png",150,150,true],"medium":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26-300x158.png",300,158,true],"large":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26-1024x538.png",1024,538,true],"1536x1536":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26-1536x806.png",1536,806,true],"2048x2048":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",1800,945,false],"ultp_layout_landscape_large":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",1200,630,false],"ultp_layout_landscape":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",870,457,false],"ultp_layout_portrait":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",600,315,false],"ultp_layout_square":["https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2025\/06\/image-26.png",600,315,false]},"rttpg_author":{"display_name":"Keerthi Seetha","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/keerthi-seetha\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/business\/others\/\" rel=\"category tag\">Others<\/a> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-14\/\" rel=\"category tag\">PostgreSQL 14<\/a> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-15\/\" rel=\"category tag\">PostgreSQL 15<\/a> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-16\/\" rel=\"category tag\">PostgreSQL 16<\/a>","rttpg_excerpt":"When it comes to managing PostgreSQL backups in production, pgBackRest has consistently stood out as one of the most powerful, [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/8587","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\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=8587"}],"version-history":[{"count":7,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/8587\/revisions"}],"predecessor-version":[{"id":8603,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/8587\/revisions\/8603"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media\/8604"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=8587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=8587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=8587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}