天天看點

postgres pgcluster 配置

在一台linux伺服器上配置postgres資料庫同步複制。也可以分多台配置,一台複制伺服器(rep1)、兩個pg資料庫(cluster2、cluster3)。

如果是多台,此處的主機名配置視情況而定,隻要rep1、cluster2、cluster3互相能用主機名ping通就可以了。

1.1. 修改配置檔案

1.2. 使ip位址生效:

1.3. 設定主機名(如果要永久修改redhat的hostname,就修改/etc/sysconfig/network檔案,将裡面的hostname這一行修改成hostname=newname) 編輯/etc/hosts

源碼安裝postgres8.1+pgcluster1.5

2.1. 下載下傳postgresql-8.1對應的pgcluster-1.5.0rc21.tar.gz (包含postgresql-8.1版本與pgcluster-1.5.0插件)

2.2. <code>tar xzf pgcluster-1.5.0rc21.tar.gz</code>

2.3. 安裝

2.4. 添加postgres使用者

2.5. 初始化資料庫

2.6. 允許網絡通路pg,修改/var/lib/pgsql/data2 和/var/lib/pgsql/data3目錄下的配置,注意端口不同。 修改/var/lib/pgsql/data/pg_hba.conf

3.1.

在cluster2上面建立/var/lib/pgsql/data2/cluster.conf檔案如下:

3.2.

在cluster3上面建立/var/lib/pgsql/data3/cluster.conf檔案如下(注意名稱和recovery_port與cluster2要不同):

3.3.

在rep1上面建立/var/lib/pgsql/etc/pgreplicate.conf檔案,内容如下:

4.1. 啟動replication伺服器(rep1):<code>/var/lib/pgsql/bin/pgreplicate -lnv -d /var/lib/pgsql/share (停止 ctrl+c 或 /var/lib/pgsql/bin/pgreplicate -d /var/lib/pgsql/share stop)</code>

4.2. 分别啟動資料庫cluster2, cluster3:<code>/var/lib/pgsql/bin/pg_ctl -d /var/lib/pgsql/data2 start /var/lib/pgsql/bin/pg_ctl -d /var/lib/pgsql/data3 start (停止 /var/lib/pgsql/bin/pg_ctl -d /var/lib/pgsql/data2 stop)</code>

停止叢集的順序正好相反。

在cluster2, cluster3兩個資料庫上做建立、插入操作。 create table test_cluster (id serial,"name" varchar(255)); insert into test_cluster("name") values('hello');

1.如果啟動出現"could not translate host name localhost"問題,則修改/etc/hosts加入 127.0.0.1 localhost.localdomain localhost , 然後重新開機network。

2.複制伺服器不停的報 pgrcreateconn():retry. h_errno is 1,reason is 'fe_sendauth: no password supplied 錯誤, 則檢查data2和data3目錄下的/var/lib/pgsql/data/pg_hba.conf檔案需要将rep1的ip設定為trust,rep1複制伺服器會用postgres角色對cluster2和cluster3進行無密碼的通路。

3.如果是多台伺服器,需配置ssh無密碼互訪 3.1. vi /etc/ssh/sshd_config a、打開authorizedkeysfile,就是删除前面的#号 (如果有的話) b、添加允許通路的帳戶,allowusers postgres root

3.2. 通過ssh-keygen産生rsa公私密鑰對(密碼為空)(rep1,cluster2,cluster3都要運作)

這樣會在/var/lib/pgsql/.ssh/下生成id_rsa和id_rsa.pub

3.3. 将公鑰進行互相拷貝(順序執行)

3.4. 重新開機ssh服務 <code>su root service sshd restart</code>

3.5. 互訪測試,如無需密碼則完成配置。 <code>[postgres@rep1 ~]$ssh postgres@cluster2 [postgres@cluster2 ~]$ssh postgres@rep1</code>