這兩天正忙著研究postgresql,基本用法和其他資料庫大同小異,先不自己講解,今天主要想記錄下postgresql的叢集方案hot standby方式。
本人設定叢集環境:
三台電腦:一台主要資料庫和兩台從資料庫
1. 安裝Postgresql9
tar -zxvf postgresql-9.1.3.tar.gz #解壓
cd postgresql-9.1.3
./configure --prefix /home/proxy_pg/pgsql #配置postgresql安裝目錄
這裡需要安裝基礎的庫(gcc、readline、zlib、) #可以不必理會,make時會提示
make #編譯
make install #安裝
2. 添加postgres賬戶
useradd postgres #添加賬戶
passwd postgres #之後輸入密碼
#之後進入postgres使用者
su postgres
3. 初始化主要資料庫
mkdir data #在你想要存放資料的地方建立data檔案夾
bin/initdb –D ../data/ #初始化資料庫
修改data/postgresql.conf
port = 5433 #可以任意更改你想要的
wal_level = hot_standby
max_wal_senders = 30
修改data/pg_hba.conf
host replication all 0.0.0.0 0.0.0.0 trust
4. 啟動主要資料庫
bin/pg_ctl start -D ../data/
5. 檢測資料庫是否啟動成功
./psql -d postgres
psql (9.1.3)
Type "help" for help.
postgres=# #說明啟動成功了
6. 基礎備份
基本流程:在主要資料庫伺服器上執行pg_start_backup(),複製data目錄,在執行pg_stop_backup()。
./psql –d postgres
postgres=# select pg_start_backup(‘’);
#這姓這個方法後,所有請求在寫日誌之後不會再重新整理到磁碟。直到執行pg_stop_backup()這個函數。
#下面需要拷貝一份data目錄,並通過scp複製到子資料庫中
cp –R data /data_bac
7. 建立從資料庫(standby)
#通過scp方式拷貝data_bac目錄到從資料庫下(當然也可以通過其他方式)
scp -r data_bac/ postgres@192.168.30.199:/home/proxy_pg/pgsql/
#進入從資料庫伺服器,進入剛剛拷貝過來的data_bac目錄下
cd data_bac
#修改postgres.conf
port = 5433 #改成你想的連接埠
hot_standby = on
#增加recovery.conf配置下串連的主要資料庫資訊(ip、連接埠、使用者)
standby_mode = 'on'
primary_conninfo = 'host=192.168.30.150 port=5433 user=postgres'
#刪除pid檔案
rm postmaster.pid
8. 啟動從資料庫
bin/pg_ctl start -D ../data_bac/
9. 停止主要資料庫基礎備份
postgres=# select pg_stop_backup();
這裡要注意的是:8和9步可以顛倒,因為先停止備份後,當從資料庫啟動會,會自動連接主要資料庫,拉取伺服器自基礎備份後的交易記錄,然後,對事物日誌進行重演。
10. 測試
#為了方便查看資料庫,我安裝了pgAdminII
當在主要資料庫中建立一張表並插入三條資料後,觀察從資料庫:
#建立資料庫lengzijian
./createdb lengzijian -p 5433 #主從庫全部都會建立lengzijian資料庫
#接下來可以建立表,並且插入欄位。這裡就不示範了。
11. 總結
這裡只是做了初步的叢集安裝,postgresql的叢集方案還有好多種,本人會示範所有方案,之後會對每一種方案進行檢測,如果你有做好的實驗或者方案,不放分享給我。