cht電腦資訊SQL DB
adm Find login register

在 Fedora 上使用 PostgreSQL 的 database binary replication

eliu
1 在 Fedora 上使用 PostgreSQL 的 database binary replication
Promote 0 Bookmark 02014-03-21quote  

database replication(資料庫複製) 就是主資料庫(master)有更動時透過網路馬上複製一份到備用端(standby)

備用端(standby) 在平時可以做 read-only 的查詢。如果主資料庫(master)伺服器掛了,可以手動切換變成可以 update 的主資料庫(master)。

PostgreSQL 要建立 replication 可以用兩種方式

  • 離線:server 必須停止
  • 線上複製

master & standby 的 OS 版本 & PostgreSQL 版本最好一樣,如果用 32/64 bit 不同的版本,有可能會不相容。離線的方式比較簡單,底下是介紹離線的方式。測試前最好資料備份,以免毀掉。

master 端的準確工作:

  • 由於我們要用 rsync 傳輸資料,rsync 是使用 ssh 傳送資料,為了安全,ssh 一般是不開放 root 直接 login。開放 root ssh 如果弄完忘了關閉,風險很大。建議開放 postgres 也就是 PostgreSQL 的 super user,我們可以用 root 執行 'passwd postgres',就讓 postgres 可以 login 了。
  • su - postgres,這時候應該是在 /var/lib/pgsql
  • cd data,修改
    postgresql.conf
    listen_address = '*'
    wal_level = hot_standby
    max_wal_senders = 3

    pg_hba.conf
    host replication all 192.168.0.2/32 trust
  • 以 root 執行 'service postgresql stop'

standby 端的準備工作:

  • su - postgres
  • cd data
    postgresql.conf
    hot_standby = on
  • 新增
    /var/lib/pgsql/data/recovery.conf
    standby_mode = 'on'
    primary_conninfo = 'host=192.168.0.1'
  • 使用 rsync 從複製資料。

    cd /var/lib/pgsql; rsync -av --exclude pg_xlog --exclude postgresql.conf 192.168.0.1:/var/lib/pgsql/data .

在 standby 以 root 執行 'service postgresql start',  在 master 以 root 執行 'service postgresql start'
如果有錯誤,可以在 /var/lib/pgsql/data/pg_log 錯誤訊息。
edited: 3

cht電腦資訊SQL DB
adm Find login register
views:3674