{"id":12263,"date":"2019-02-16T12:16:37","date_gmt":"2019-02-16T11:16:37","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/"},"modified":"2023-06-15T16:33:00","modified_gmt":"2023-06-15T14:33:00","slug":"postgresql-barman-rsync-method-vs-streaming-method","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/","title":{"rendered":"PostgreSQL : barman rsync method vs streaming method"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>Barman is a tool to perform backup and recovery for PostgreSQL databases. It can do backup using two methods:<br \/>\n-rsync\/ssh<br \/>\n-streaming<br \/>\nIn this blog I am going to explain how to use these two methods to backup a PostgreSQL database. Generally it is a good practice to dedicate a server for barman instead of installing it on the database server. My environment is described below<br \/>\n<strong>postgreSQL server<\/strong>: dbi-pg-essentials 192.168.22.101 Centos 7<br \/>\n<strong>barman server<\/strong>: pgservertools 192.168.22.104 Oracle Linux 7<br \/>\n<strong>postgreSQL version<\/strong>: 11.1<br \/>\n<strong>barman version<\/strong>: 2.6<br \/>\nThe first step is to install barman on the barman server pgservertools<\/p>\n<div>\n<div id=\"highlighter_502358\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[root@pgservertools network-scripts]<\/code><code class=\"bash comments\"># yum install\u00a0 barman.noarch barman-cli.noarch<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Loaded plugins: langpacks, ulninfo<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Resolving Dependencies<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">--&gt; Running transaction check<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">---&gt; Package barman.noarch 0:2.6-1.rhel7 will be installed<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">---&gt; Package barman-cli.noarch 0:1.3-1.rhel7.1 will be installed<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">--&gt; Finished Dependency Resolution<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">Dependencies Resolved<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">================================================================================<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">Package\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Arch\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Repository\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Size<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">================================================================================<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">Installing:<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">barman\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 noarch\u00a0\u00a0\u00a0\u00a0 2.6-1.rhel7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pgdg10-updates-testing\u00a0\u00a0\u00a0\u00a0 300 k<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">barman-cli\u00a0\u00a0\u00a0\u00a0 noarch\u00a0\u00a0\u00a0\u00a0 1.3-1.rhel7.1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pgdg10-updates-testing\u00a0\u00a0\u00a0\u00a0\u00a0 14 k<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">Transaction Summary<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">================================================================================<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">...<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">Installed:<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">barman.noarch 0:2.6-1.rhel7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 barman-cli.noarch 0:1.3-1.rhel7.1<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"bash plain\">Complete!<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"bash plain\">[root@pgservertools network-scripts]<\/code><code class=\"bash comments\">#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The installation will create a linux user named barman.<br \/>\nAs the rsync method need connections without passwords between two servers for the barman user, we have to configure ssh keys<br \/>\nOn the server pgservertools (barman server) let\u2019s create keys with the user barman and then copy the public key to the database server dbi-pg-essentials for the user postgres<\/p>\n<div>\n<div id=\"highlighter_939258\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2 highlighted\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2 highlighted\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2 highlighted\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">-keygen<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Generating public<\/code><code class=\"bash plain\">\/private<\/code> <code class=\"bash plain\">rsa key pair.<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Enter <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash keyword\">in<\/code> <code class=\"bash functions\">which<\/code> <code class=\"bash plain\">to save the key (<\/code><code class=\"bash plain\">\/var\/lib\/barman\/<\/code><code class=\"bash plain\">.<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">\/id_rsa<\/code><code class=\"bash plain\">):<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">Created directory <\/code><code class=\"bash string\">'\/var\/lib\/barman\/.ssh'<\/code><code class=\"bash plain\">.<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">Enter passphrase (empty <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">no passphrase):<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">Enter same passphrase again:<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Your identification has been saved <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">\/var\/lib\/barman\/<\/code><code class=\"bash plain\">.<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">\/id_rsa<\/code><code class=\"bash plain\">.<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">Your public key has been saved <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">\/var\/lib\/barman\/<\/code><code class=\"bash plain\">.<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">\/id_rsa<\/code><code class=\"bash plain\">.pub.<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">The key fingerprint is:<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">f4:b7:6b:6e:38:25:ae:be:7f:9a:34:03:a1:1c:a0:ac barman@pgservertools<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">The key's randomart image is:<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">+--[ RSA 2048]----+<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">|\u00a0\u00a0\u00a0 .\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">| . . .\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">|\u00a0 o\u00a0\u00a0 . o\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">| .\u00a0\u00a0 . + o\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">|E\u00a0\u00a0\u00a0\u00a0 o S . .\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .....\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .++.\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .+++.\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .+++Bo\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">+-----------------+<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">cd<\/code> <code class=\"bash plain\">.<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">\/<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">ls<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"bash plain\">id_rsa\u00a0 id_rsa.pub<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><\/div>\n<div class=\"line number30 index29 alt1\"><\/div>\n<div class=\"line number31 index30 alt2 highlighted\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">-copy-<\/code><code class=\"bash functions\">id<\/code> <code class=\"bash plain\">postgres@dbi-pg-essentials<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"bash plain\">The authenticity of host <\/code><code class=\"bash string\">'dbi-pg-essentials (192.168.22.101)'<\/code> <code class=\"bash plain\">can't be established.<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"bash plain\">ECDSA key fingerprint is 33:65:38:f4:eb:5b:f4:10:d3:36:7b:ea:5a:70:33:18.<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"bash plain\">Are you sure you want to <\/code><code class=\"bash keyword\">continue<\/code> <code class=\"bash plain\">connecting (<\/code><code class=\"bash functions\">yes<\/code><code class=\"bash plain\">\/no<\/code><code class=\"bash plain\">)? <\/code><code class=\"bash functions\">yes<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"bash plain\">\/bin\/ssh-copy-id<\/code><code class=\"bash plain\">: INFO: attempting to log <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">with the new key(s), to filter out any that are already installed<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"bash plain\">\/bin\/ssh-copy-id<\/code><code class=\"bash plain\">: INFO: 1 key(s) remain to be installed -- <\/code><code class=\"bash keyword\">if<\/code> <code class=\"bash plain\">you are prompted now it is to <\/code><code class=\"bash functions\">install<\/code> <code class=\"bash plain\">the new keys<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"bash plain\">postgres@dbi-pg-essentials's password:<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"bash plain\">Number of key(s) added: 1<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"bash plain\">Now try logging into the machine, with:\u00a0\u00a0 <\/code><code class=\"bash string\">\"ssh 'postgres@dbi-pg-essentials'\"<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"bash plain\">and check to <\/code><code class=\"bash functions\">make<\/code> <code class=\"bash plain\">sure that only the key(s) you wanted were added.<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>If everything is fine, barman should be able to connect to database server as postgres linux user without password<\/p>\n<div>\n<div id=\"highlighter_858335\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2 highlighted\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">hostname<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">pgservertools.localdomain<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">id<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">uid=994(barman) gid=992(barman) <\/code><code class=\"bash functions\">groups<\/code><code class=\"bash plain\">=992(barman) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023<\/code><\/div>\n<div class=\"line number5 index4 alt2 highlighted\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ <\/code><code class=\"bash functions\">ssh<\/code> <code class=\"bash plain\">postgres@dbi-pg-essentials <\/code><code class=\"bash functions\">hostname<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">dbi-pg-essentials<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>On the database server I also have installed the package barman-cli.noarch which will allow us to use the command barman-wal-archive. We will talk about this later.<\/p>\n<div>\n<div id=\"highlighter_90729\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[root@dbi-pg-essentials ~]<\/code><code class=\"bash comments\"># yum install barman-cli.noarch<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Loaded plugins: fastestmirror<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">dbipgessentials\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 3.6 kB\u00a0\u00a0\u00a0\u00a0 00:00<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">edb-repos\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 2.4 kB\u00a0\u00a0\u00a0\u00a0 00:00<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">\u2026<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">\u2026<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Running transaction check<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">Running transaction <\/code><code class=\"bash functions\">test<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">Transaction <\/code><code class=\"bash functions\">test<\/code> <code class=\"bash plain\">succeeded<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">Running transaction<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">Installing : barman-cli-1.3-1.rhel7.1.noarch\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1<\/code><code class=\"bash plain\">\/1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">Verifying\u00a0 : barman-cli-1.3-1.rhel7.1.noarch\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1<\/code><code class=\"bash plain\">\/1<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">Installed:<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">barman-cli.noarch 0:1.3-1.rhel7.1<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">Complete!<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">[root@dbi-pg-essentials ~]<\/code><code class=\"bash comments\"># <\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>rsync backup<\/h3>\n<p>As specified earlier in this case the backup is done using rsync. But we have many ways to ship WAL to the barman server. So before talking about barman configuration let\u2019s take a moment to see the WAL shipping<br \/>\n<strong>1- With WAL archiving<\/strong><br \/>\nTo better understand I put this picture I got from the<a href=\"http:\/\/docs.pgbarman.org\/release\/2.6\/\" target=\"_blank\" rel=\"noopener noreferrer\"> barman documentation <\/a>. As we see backup is done via rsync and the WAL are sent via the barman-wal-archive. This utility comes with barman 2.6.<br \/>\nBefore barman 2.6 the rsync command was used to send WAL to barman.<br \/>\nIn the documentation we can find that using barman-wal-archive instead of rsync\/SSH reduces the risk of data corruption of the shipped WAL file on the Barman server.<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-31167\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\" alt=\"rsync_1\" width=\"300\" height=\"142\" \/><\/a><br \/>\nThe use of barman_wal_archive is done via the postgresql.conf file on the database server. It appears on the value of the parameter archive_command. Below values in my postgresql.conf file.<\/p>\n<div>\n<div id=\"highlighter_941586\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials PG1]$ <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">-E\u00a0 <\/code><code class=\"bash string\">\"archive_mode|wal_level|archive_command\"<\/code> <code class=\"bash plain\">postgresql.conf<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">wal_level = replica\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># minimal, replica, or logical<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">archive_mode = on\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># enables archiving; off, on, or always<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">archive_command = <\/code><code class=\"bash string\">'barman-wal-archive 192.168.22.104 pgserver11 %p'<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"bash comments\"># command to use to archive a logfile segment<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Before barman 2.6 we would use following for archive_command to send WAL to barman server<\/p>\n<div>\n<div id=\"highlighter_258947\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">archive_command = <\/code><code class=\"bash string\">'rsync -a\u00a0 %p\u00a0 barman@pgservertools:\/var\/lib\/barman\/pgserver11\/incoming\/%f'<\/code> <code class=\"bash comments\"># command to use to archive a logfile segment<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">[postgres@dbi-pg-essentials PG1]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>2- With WAL archiving and WAL streaming<\/strong><br \/>\nThis picture from barman documentation will help to better understand<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-31170\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_2.png\" alt=\"rsync_2\" width=\"300\" height=\"153\" \/><\/a><br \/>\nTo use WAL streaming to the barman server, we need pg_receivewal (pg_receivexlog up to PostgreSQL 10) to be installed on the barman server. Be careful of the version of pg_receivewal. In my case I installed the version 11.1 as my PostgreSQL is 11.1<\/p>\n<div>\n<div id=\"highlighter_293781\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@pgservertools bin]$ <\/code><code class=\"bash plain\">\/usr\/pgsql-11\/bin\/pg_receivewal<\/code> <code class=\"bash plain\">-V<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">pg_receivewal (PostgreSQL) 11.1<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[postgres@pgservertools bin]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>A streaming connection also should be configured and the parameter streaming_archiver should be set to on.<br \/>\nNow to resume let\u2019s say that I want to configure barman with<br \/>\n-rsync method<br \/>\n-using barman_wal_archive and WAL streaming<br \/>\nThe barman file configuration \/etc\/barman.conf should be like<\/p>\n<div>\n<div id=\"highlighter_869626\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2 highlighted\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2 highlighted\">17<\/div>\n<div class=\"line number18 index17 alt1 highlighted\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@pgservertools bin]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/etc\/barman<\/code><code class=\"bash plain\">.conf | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">-<\/code><code class=\"bash functions\">v<\/code>\u00a0 <code class=\"bash plain\">^\\;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[barman]<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">barman_user = barman<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">configuration_files_directory = <\/code><code class=\"bash plain\">\/etc\/barman<\/code><code class=\"bash plain\">.d<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">barman_home = <\/code><code class=\"bash plain\">\/var\/lib\/barman<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">log_file = <\/code><code class=\"bash plain\">\/var\/log\/barman\/barman<\/code><code class=\"bash plain\">.log<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">log_level = INFO<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">compression = <\/code><code class=\"bash functions\">gzip<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">retention_policy = REDUNDANCY 2<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">[pgserver11]<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">description = <\/code><code class=\"bash string\">\"Main DB Server\"<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">ssh_command = <\/code><code class=\"bash functions\">ssh<\/code> <code class=\"bash plain\">postgres@dbi-pg-essentials<\/code><\/div>\n<div class=\"line number15 index14 alt2 highlighted\"><code class=\"bash plain\">streaming_conninfo=host=192.168.22.101 user=postgres<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">conninfo=host=192.168.22.101 user=postgres<\/code><\/div>\n<div class=\"line number17 index16 alt2 highlighted\"><code class=\"bash plain\">backup_method = <\/code><code class=\"bash functions\">rsync<\/code><\/div>\n<div class=\"line number18 index17 alt1 highlighted\"><code class=\"bash plain\">streaming_archiver = on<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">archiver = on<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">path_prefix=<\/code><code class=\"bash plain\">\/usr\/pgsql-11\/bin\/<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">[postgres@pgservertools bin]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And the postgresql.conf should contain following entries<\/p>\n<div>\n<div id=\"highlighter_182922\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials PG1]$ <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">-E\u00a0 <\/code><code class=\"bash string\">\"archive_mode|wal_level|archive_command\"<\/code> <code class=\"bash plain\">postgresql.conf<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">wal_level = replica\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># minimal, replica, or logical<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">archive_mode = on\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># enables archiving; off, on, or always<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">archive_command = <\/code><code class=\"bash string\">'barman-wal-archive 192.168.22.104 pgserver11 %p'<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"bash comments\"># command to use to archive a logfile segment<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The first thing is to test that the barman configuration is fine for the PostgreSQL database. The check command should not return any errors. On the barman server with the user barman<\/p>\n<div>\n<div id=\"highlighter_938380\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman check pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Server pgserver11:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">PostgreSQL: OK<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">is_superuser: OK<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">PostgreSQL streaming: OK<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">wal_level: OK<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">directories: OK<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">retention policy settings: OK<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">backup maximum age: OK (no last_backup_maximum_age provided)<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">compression settings: OK<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">failed backups: OK (there are 0 failed backups)<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">minimum redundancy requirements: OK (have 0 backups, expected at least 0)<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">: OK (PostgreSQL server)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">not <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">recovery: OK<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archive_mode: OK<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archive_command: OK<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">continuous archiving: OK<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_receivexlog: OK<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_receivexlog compatible: OK<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">receive-wal running: OK<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archiver errors: OK<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now we can launch a backup using the backup command on the barman server with the user barman<\/p>\n<div>\n<div id=\"highlighter_742464\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1 highlighted\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2 highlighted\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman backup pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1 highlighted\"><code class=\"bash plain\">Starting backup using <\/code><code class=\"bash functions\">rsync<\/code><code class=\"bash plain\">-exclusive method <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">server pgserver11 <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">\/var\/lib\/barman\/pgserver11\/base\/20190215T153350<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Backup start at LSN: 0<\/code><code class=\"bash plain\">\/2E000060<\/code> <code class=\"bash plain\">(00000005000000000000002E, 00000060)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">This is the first backup <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">server pgserver11<\/code><\/div>\n<div class=\"line number5 index4 alt2 highlighted\"><code class=\"bash plain\">Starting backup copy via <\/code><code class=\"bash functions\">rsync<\/code><code class=\"bash plain\">\/SSH<\/code> <code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">20190215T153350<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">Copy <\/code><code class=\"bash keyword\">done<\/code> <code class=\"bash plain\">(<\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 12 seconds)<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">This is the first backup <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">server pgserver11<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">WAL segments preceding the current backup have been found:<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">00000005000000000000002D from server pgserver11 has been removed<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">Asking PostgreSQL server to finalize the backup.<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">Backup size: 74.1 MiB<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">Backup end at LSN: 0<\/code><code class=\"bash plain\">\/2E000168<\/code> <code class=\"bash plain\">(00000005000000000000002E, 00000168)<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">Backup completed (start <\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 2019-02-15 15:33:52.392144, elapsed <\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 15 seconds)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">Processing xlog segments from <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash plain\">archival <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">pgserver11<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">00000005000000000000002E<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">00000005000000000000002E.00000060.backup<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We can list the existing backup. On the barman server with the barman user<\/p>\n<div>\n<div id=\"highlighter_696192\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman list-backup pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">pgserver11 20190215T153350 - Fri Feb 15 15:34:08 2019 - Size: 74.1 MiB - WAL Size: 0 B<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Streaming backup<\/h3>\n<p>Since the version 2.0, barman supports streaming replication for backup. This method uses the native pg_basebackup<br \/>\n<strong>1- Streaming-only backup<\/strong><br \/>\nThis picture is from the barman documentation may help<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/stream_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-31178\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/stream_1.png\" alt=\"stream_1\" width=\"300\" height=\"136\" \/><\/a><br \/>\nAs we can see, In this case backup are done via streaming. WAL are also using streaming protocol.<br \/>\n<strong>2- WAL archiving and WAL streaming<\/strong><br \/>\nOnce again following picture may help<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/stream_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-31179\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/stream_2.png\" alt=\"stream_2\" width=\"300\" height=\"169\" \/><\/a><br \/>\nIn this case we configure standard archiving as well to implement a more robust architecture<\/p>\n<p>For example to implement a barman configuration with streaming backup WAL streaming and WAL archiving, the \/etc\/barman.conf should be like<\/p>\n<div>\n<div id=\"highlighter_495943\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2 highlighted\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@pgservertools bin]$ <\/code><code class=\"bash functions\">cat<\/code> <code class=\"bash plain\">\/etc\/barman<\/code><code class=\"bash plain\">.conf | <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">-<\/code><code class=\"bash functions\">v<\/code>\u00a0 <code class=\"bash plain\">^\\;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[barman]<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">barman_user = barman<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">configuration_files_directory = <\/code><code class=\"bash plain\">\/etc\/barman<\/code><code class=\"bash plain\">.d<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">barman_home = <\/code><code class=\"bash plain\">\/var\/lib\/barman<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">log_file = <\/code><code class=\"bash plain\">\/var\/log\/barman\/barman<\/code><code class=\"bash plain\">.log<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">log_level = INFO<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">compression = <\/code><code class=\"bash functions\">gzip<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">retention_policy = REDUNDANCY 2<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">[pgserver11]<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">description = <\/code><code class=\"bash string\">\"Main DB Server\"<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash plain\">ssh_command = <\/code><code class=\"bash functions\">ssh<\/code> <code class=\"bash plain\">postgres@dbi-pg-essentials<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">streaming_conninfo=host=192.168.22.101 user=postgres<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash plain\">conninfo=host=192.168.22.101 user=postgres<\/code><\/div>\n<div class=\"line number17 index16 alt2 highlighted\"><code class=\"bash plain\">backup_method = postgres<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash plain\">streaming_archiver = on<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash plain\">archiver = on<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash plain\">slot_name=barman<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash plain\">path_prefix=<\/code><code class=\"bash plain\">\/usr\/pgsql-11\/bin\/<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>and the postgressql.conf<\/p>\n<div>\n<div id=\"highlighter_226422\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials PG1]$ <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">-E\u00a0 <\/code><code class=\"bash string\">\"archive_mode|wal_level|archive_command\"<\/code> <code class=\"bash plain\">postgresql.conf<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">wal_level = replica\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># minimal, replica, or logical<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">archive_mode = on\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"bash comments\"># enables archiving; off, on, or always<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">archive_command = <\/code><code class=\"bash string\">'barman-wal-archive 192.168.22.104 pgserver11 %p'<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"bash comments\"># command to use to archive a logfile segment<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>So the check should not return any errors<\/p>\n<div>\n<div id=\"highlighter_713192\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman check pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Server pgserver11:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">PostgreSQL: OK<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">is_superuser: OK<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">PostgreSQL streaming: OK<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">wal_level: OK<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">replication slot: OK<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">directories: OK<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">retention policy settings: OK<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">backup maximum age: OK (no last_backup_maximum_age provided)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">compression settings: OK<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">failed backups: OK (there are 0 failed backups)<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">minimum redundancy requirements: OK (have 1 backups, expected at least 0)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_basebackup: OK<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_basebackup compatible: OK<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_basebackup supports tablespaces mapping: OK<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archive_mode: OK<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archive_command: OK<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">continuous archiving: OK<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_receivexlog: OK<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">pg_receivexlog compatible: OK<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">receive-wal running: OK<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">archiver errors: OK<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And we launch a backup, we can see that barman is using pg_basebackup<\/p>\n<div>\n<div id=\"highlighter_630302\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman backup pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Starting backup using postgres method <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">server pgserver11 <\/code><code class=\"bash keyword\">in<\/code> <code class=\"bash plain\">\/var\/lib\/barman\/pgserver11\/base\/20190215T160757<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Backup start at LSN: 0<\/code><code class=\"bash plain\">\/2F0001A8<\/code> <code class=\"bash plain\">(00000005000000000000002F, 000001A8)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">Starting backup copy via pg_basebackup <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">20190215T160757<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">Copy <\/code><code class=\"bash keyword\">done<\/code> <code class=\"bash plain\">(<\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 11 seconds)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">Finalising the backup.<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">Backup size: 73.9 MiB<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">Backup end at LSN: 0<\/code><code class=\"bash plain\">\/31000060<\/code> <code class=\"bash plain\">(000000050000000000000031, 00000060)<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">Backup completed (start <\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 2019-02-15 16:07:57.919595, elapsed <\/code><code class=\"bash functions\">time<\/code><code class=\"bash plain\">: 11 seconds)<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">Processing xlog segments from <\/code><code class=\"bash functions\">file<\/code> <code class=\"bash plain\">archival <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">pgserver11<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">000000050000000000000030<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">000000050000000000000031<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"bash plain\">Processing xlog segments from streaming <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">pgserver11<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"bash spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"bash plain\">000000050000000000000030<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Available backups are now<\/p>\n<div>\n<div id=\"highlighter_697632\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman list-backup pgserver11<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">pgserver11 20190215T160757 - Fri Feb 15 16:08:09 2019 - Size: 73.9 MiB - WAL Size: 0 B<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">pgserver11 20190215T153350 - Fri Feb 15 15:34:08 2019 - Size: 74.1 MiB - WAL Size: 48.3 KiB<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>To restore with barman, we use the command recover. For example the following command will restore the backup 20190215T160757 on server dbi-pg-essentials_3 in the directory \/u02\/pgdata\/PGRESTORE<\/p>\n<div>\n<div id=\"highlighter_418637\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">-<\/code><code class=\"bash functions\">bash<\/code><code class=\"bash plain\">-4.2$ barman recover --remote-<\/code><code class=\"bash functions\">ssh<\/code><code class=\"bash plain\">-<\/code><code class=\"bash functions\">command<\/code> <code class=\"bash string\">\"ssh postgres@dbi-pg-essentials_3\"<\/code> <code class=\"bash plain\">pgserver11 20190215T160757 <\/code><code class=\"bash plain\">\/u02\/pgdata\/PGRESTORE<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>Conclusion<\/h3>\n<p>In this blog I have tried to explain different scenarios for using barman. We talked about rsync method and streaming methods for backups. Before starting the setup a choice must be done. One can check documentation for more information<\/p>\n<p>Ref: http:\/\/docs.pgbarman.org\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw Barman is a tool to perform backup and recovery for PostgreSQL databases. It can do backup using two methods: -rsync\/ssh -streaming In this blog I am going to explain how to use these two methods to backup a PostgreSQL database. Generally it is a good practice to dedicate a server for barman [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":12264,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,83],"tags":[329,1577,1323,1578,1579,1105],"type_dbi":[],"class_list":["post-12263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-postgresql","tag-barman","tag-barman-wal-archive","tag-postgresql-11","tag-postgresql-backup-and-recovery","tag-rsync","tag-streaming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL : barman rsync method vs streaming method - dbi Blog<\/title>\n<meta name=\"description\" content=\"barman,postgresql 11, barman-wal-archive,streaming,rsync\" \/>\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\/postgresql-barman-rsync-method-vs-streaming-method\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL : barman rsync method vs streaming method\" \/>\n<meta property=\"og:description\" content=\"barman,postgresql 11, barman-wal-archive,streaming,rsync\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-16T11:16:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-15T14:33:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"629\" \/>\n\t<meta property=\"og:image:height\" content=\"297\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 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\/postgresql-barman-rsync-method-vs-streaming-method\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"PostgreSQL : barman rsync method vs streaming method\",\"datePublished\":\"2019-02-16T11:16:37+00:00\",\"dateModified\":\"2023-06-15T14:33:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\"},\"wordCount\":756,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\",\"keywords\":[\"Barman\",\"barman-wal-archive\",\"PostgreSQL 11\",\"postgresql backup and recovery\",\"rsync\",\"streaming\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\",\"name\":\"PostgreSQL : barman rsync method vs streaming method - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\",\"datePublished\":\"2019-02-16T11:16:37+00:00\",\"dateModified\":\"2023-06-15T14:33:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"barman,postgresql 11, barman-wal-archive,streaming,rsync\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png\",\"width\":629,\"height\":297},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL : barman rsync method vs streaming method\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL : barman rsync method vs streaming method - dbi Blog","description":"barman,postgresql 11, barman-wal-archive,streaming,rsync","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\/postgresql-barman-rsync-method-vs-streaming-method\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL : barman rsync method vs streaming method","og_description":"barman,postgresql 11, barman-wal-archive,streaming,rsync","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/","og_site_name":"dbi Blog","article_published_time":"2019-02-16T11:16:37+00:00","article_modified_time":"2023-06-15T14:33:00+00:00","og_image":[{"width":629,"height":297,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png","type":"image\/png"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"PostgreSQL : barman rsync method vs streaming method","datePublished":"2019-02-16T11:16:37+00:00","dateModified":"2023-06-15T14:33:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/"},"wordCount":756,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png","keywords":["Barman","barman-wal-archive","PostgreSQL 11","postgresql backup and recovery","rsync","streaming"],"articleSection":["Database Administration &amp; Monitoring","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/","name":"PostgreSQL : barman rsync method vs streaming method - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png","datePublished":"2019-02-16T11:16:37+00:00","dateModified":"2023-06-15T14:33:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"barman,postgresql 11, barman-wal-archive,streaming,rsync","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/rsync_1.png","width":629,"height":297},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-barman-rsync-method-vs-streaming-method\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL : barman rsync method vs streaming method"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12263","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12263"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12263\/revisions"}],"predecessor-version":[{"id":25937,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12263\/revisions\/25937"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/12264"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12263"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}