postgresql 增量備份

來源:互聯網
上載者:User

標籤:

介紹:

barman是postgresql備份還原的管理工具。官網: http://www.pgbarman.org/

本文環境:

系統: centos6.6

PostgreSQL 9.3.9

barman-1.4.1-1.rhel6.noarch.rpm

主機如下:

192.168.33.30 pgserver192.168.33.31 backup

其中pgserver與backup安裝相同版本的pg

postgresql的安裝見:http://my.oschina.net/firxiao/blog/295027 

安裝與配置:在pgserver上安裝rsync:
yum install rsync -y
在backup上安裝並配置barman:

 配置epel源:

curl firxiao.com/sh/chrepo.sh|bash

安裝barman:

yum install -y http://nchc.dl.sourceforge.net/project/pgbarman/1.4.1/barman-1.4.1-1.rhel6.noarch.rpm

   

配置barman:

mv /etc/barman.conf /etc/barman.conf.bakvim /etc/barman.conf


添加如下內容:

[barman]barman_home = /var/lib/barmanbarman_user = barmanlog_file = /var/log/barman/barman.logconfiguration_files_directory = /etc/barman.dcompression = gzipreuse_backup = linkbandwidth_limit = 4000basebackup_retry_times = 3basebackup_retry_sleep = 30

 建立設定檔目錄

mkdir /etc/barman.d

 建立名字為pgserver的備份配置

 vim /etc/barman.d/pgserver.conf


添加如下內容

[pgserver]description =  "The pgserver PostgreSQL Database"ssh_command = ssh [email protected]conninfo = host=pgserver user=postgresminimum_redundancy = 1retention_policy = RECOVERY WINDOW OF 4 WEEKS

 

各個參數的定義詳見

man 5 barman


配置雙機ssh信任登入:

 使用ssh-copy-id 需要用到pgserver上的postgre使用者密碼及backup上barman使用者密碼

使用passwd 給予即可

配置完畢後使用passwd -d 刪除密碼

  在pgserver上配置

[[email protected] ~]# mkdir /var/lib/pgsql/.ssh[[email protected] ~]# chown postgres /var/lib/pgsql/.ssh[[email protected] ~]# su - postgres-bash-4.1$ ssh-keygen Generating public/private rsa key pair.Enter file in which to save the key (/var/lib/pgsql/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/pgsql/.ssh/id_rsa.Your public key has been saved in /var/lib/pgsql/.ssh/id_rsa.pub.The key fingerprint is:5b:bf:25:02:1c:36:e3:b9:98:42:5a:85:27:d4:03:92 [email protected]The key‘s randomart image is:+--[ RSA 2048]----+|  ..oo           ||  Eo .o          ||    o o.=        ||     + + =       ||    o   S .      ||   +   o = .     ||  . . o o . o .  ||     .     . +   ||            .    |+-----------------+-bash-4.1$ ssh-copy-id [email protected]The authenticity of host ‘backup (192.168.33.31)‘ can‘t be established.RSA key fingerprint is f3:48:30:89:03:76:cb:04:19:7a:fe:8d:6c:90:e4:fe.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘backup,192.168.33.31‘ (RSA) to the list of known hosts.[email protected]‘s password: Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:  .ssh/authorized_keysto make sure we haven‘t added extra keys that you weren‘t expecting.-bash-4.1$ ssh [email protected]

  不輸入密碼即可登入backup表示配置成功

  在backup上配置

[[email protected] ~]# su - barman-bash-4.1$ ssh-keygen Generating public/private rsa key pair.Enter file in which to save the key (/var/lib/barman/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/barman/.ssh/id_rsa.Your public key has been saved in /var/lib/barman/.ssh/id_rsa.pub.The key fingerprint is:59:f3:8a:23:56:b5:00:b2:40:e2:a9:fb:ea:95:1d:b8 [email protected]The key‘s randomart image is:+--[ RSA 2048]----+|..o . .          ||.... o .         || o  .   . +      ||.   .    = +     ||.  . .  S . .    || .  + .. . .     ||.  E .o o .      || ..  . . .       ||oo.              |+-----------------+-bash-4.1$ ssh-copy-id [email protected][email protected]‘s password: Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:  .ssh/authorized_keysto make sure we haven‘t added extra keys that you weren‘t expecting.-bash-4.1$ ssh [email protected]


  不輸入密碼即可登入pgserver表示配置成功


配置pgserver中的postgresql:
[[email protected] ~]# vim /var/lib/pgsql/9.3/data/postgresql.conf

添加如下內容

wal_level = ‘archive‘ # For PostgreSQL >= 9.0archive_mode = onarchive_command = ‘rsync -a %p [email protected]:INCOMING_WALS_DIRECTORY/%f‘

其中INCOMING_WALS_DIRECTORY 可以在backup伺服器上使用

#barman show-server pgserver|grep "incoming_wals_directory"incoming_wals_directory: /var/lib/barman/pgserver/incoming

查看 並更改為那個目錄

所以替換後應該是:

wal_level = ‘archive‘ # For PostgreSQL >= 9.0archive_mode = onarchive_command = ‘rsync -a %p [email protected]:/var/lib/barman/pgserver/incoming/%f‘

接下來配置backup可以免密碼登入

vim /var/lib/pgsql/9.3/data/pg_hba.conf

添加

host    all             postgres         192.168.33.31/32       trust

注意其中的IP地址為backup的地址

驗證配置:

在backup上檢查是否配置成功

#psql -c ‘SELECT version()‘ -U postgres -h pgserver                                                    version                                                    --------------------------------------------------------------------------------------------------------------- PostgreSQL 9.3.9 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11), 64-bit(1 行記錄)

驗證barman配置

[[email protected] ~]# barman check pgserverServer pgserver:ssh: OKPostgreSQL: OKarchive_mode: OKarchive_command: OKdirectories: OKretention policy settings: OKbackup maximum age: OK (no last_backup_maximum_age provided)compression settings: OKminimum redundancy requirements: FAILED (have 0 backups, expected at least 1)

最後一行為檢查最小儲存備份數,因為還沒有備份所以為0,其他的都為ok就可以了

基本使用:

 以下操作均在backup上執行  

  開始備份:
[[email protected] ~]# barman backup pgserverStarting backup for server pgserver in /var/lib/barman/pgserver/base/20150914T151454Backup start at xlog location: 0/6000028 (000000010000000000000006, 00000028)Copying files.Copy done.Backup size: 32.1 MiB. Actual size on disk: 141.8 KiB (-99.57% deduplication ratio).Asking PostgreSQL server to finalize the backup.Backup end at xlog location: 0/60000B8 (000000010000000000000006, 000000B8)Backup completedProcessing xlog segments for pgserver000000010000000000000005000000010000000000000006000000010000000000000006.00000028.backup
  列出備份:
[[email protected] ~]# barman list-backup pgserverpgserver 20150914T151454 - Mon Sep 14 15:14:55 2015 - Size: 32.1 MiB - WAL Size: 0 Bpgserver 20150914T143210 - Mon Sep 14 14:32:11 2015 - Size: 32.1 MiB - WAL Size: 32.1 KiBpgserver 20150914T142931 - Mon Sep 14 14:29:41 2015 - Size: 32.1 MiB - WAL Size: 1.9 MiBpgserver 20150914T142547 - FAILED
  刪除備份:
[[email protected] ~]# barman delete pgserver 20150914T142547Deleting backup 20150914T142547 for server pgserverDelete associated WAL segments:Done


  恢複備份:

  資料庫誤刪除 丟失的時候 就需要恢複了

[[email protected] ~]# su - barman-bash-4.1$ barman recover pgserver 20150914T142931 /tmp/pgserver_recoverStarting local restore for server pgserver using backup 20150914T142931 Destination directory: /tmp/pgserver_recoverCopying the base backup.Copying required wal segments.Generating archive status filesDisabling dangerous settings in destination directory.The archive_command was set to ‘false‘ to prevent data losses.Your PostgreSQL server has been successfully prepared for recovery!Please review network and archive related settings in the PostgreSQLconfiguration file before starting the just recovered instance.Recovery completed successful.

這個操作會將資料庫啟動所需的檔案複製到指定的目錄然後使用命令啟動即可

-bash-4.1$  /usr/pgsql-9.3/bin/pg_ctl -D /tmp/pg_recover/ startserver starting-bash-4.1$ < 2015-09-14 15:52:06.384 CST >LOG:  redirecting log output to logging collector process< 2015-09-14 15:52:06.384 CST >HINT:  Future log output will appear in directory "pg_log".-bash-4.1$ ps -ef|grep postgresbarman    4547     1  0 15:52 pts/0    00:00:00 /usr/pgsql-9.3/bin/postgres -D /tmp/pg_recoverbarman    4548  4547  0 15:52 ?        00:00:00 postgres: logger process                      barman    4550  4547  0 15:52 ?        00:00:00 postgres: checkpointer process                barman    4551  4547  0 15:52 ?        00:00:00 postgres: writer process                      barman    4552  4547  0 15:52 ?        00:00:00 postgres: wal writer process                  barman    4553  4547  0 15:52 ?        00:00:00 postgres: autovacuum launcher process         barman    4554  4547  0 15:52 ?        00:00:00 postgres: archiver process   failed on 000000010000000000000009barman    4555  4547  0 15:52 ?        00:00:00 postgres: stats collector process             barman    4560  4434  0 15:52 pts/0    00:00:00 grep postgres

  連上上這個資料庫,從中找出你丟失的資料 然後恢複至pgserver中吧

  停掉資料庫:

-bash-4.1$  /usr/pgsql-9.3/bin/pg_ctl -D /tmp/pg_recover/ stopwaiting for server to shut down....... doneserver stopped

  

  定時備份:

 利用cron實現定時備份

#crontab -e

  添加如下資訊即可:

*/5 * * * * /usr/bin/barman backup pgserver >/dev/null 2>&1

 (5分鐘備份一次)


到此已經完成了barman的基本配置及備份還原。


參考:

安裝及配置:  http://docs.pgbarman.org/#installation 

更多barman配置及使用詳見官方文檔: http://docs.pgbarman.org/ 


postgresql 增量備份

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.