Postgresql主從服務搭建Postgresql 9.5

Postgresql主從服務搭建

環境信息:win10 虛擬機下實現

Ubuntu 16.04 Postgresql 9.5

主服務 : 192.168.40.129

從服務器:192.168.40.131

主服務配置:

  1. 修改postgresql.conf文件
sudo vim /etc/postgresql/9.5/main/postgresql.conf  

原文件都有這些信息,需要仔細找到修改

listen_addresses = ‘*’

wal_level = hot_standby

synchronous_commit = local – 本地同步級別

max_wal_senders = 2 – 兩臺服務器

wal_keep_segments = 10

保存退出

  1. 修改pg_hba.conf文件
sudo vim /etc/postgresql/9.5/main/pg_hba.conf

添加

host    all             all             0.0.0.0/0               md5
host    all             all             192.168.40.131/32       md5
host    replication     replica         192.168.40.129/32       md5
host    replication     replica         192.168.40.131/32       md5

保存退出,重啓Postgresql

sudo service postgresql restart
  1. 創建用於複製的用戶replica

首先需要 登錄postgresql

myubtu@ubuntu:~$ sudo -u postgres psql
could not change directory to "/home/myubtu": Permission denied
psql (9.5.2)
Type "help" for help.

創建用戶用於複製

創建用戶用於複製

postgres=# CREATE ROLE replica login replication encrypted password 'replica';
CREATE ROLE
postgres=#

主服務器配置結束--------END

從服務器配置

  1. 停止Postgresql服務

    sudo service postgresql stop
    
  2. 修改postgresql.conf文件

​ listen_addresses = ‘*’

​ wal_level = hot_standby

​ synchronous_commit = local

​ max_wal_senders = 2

​ wal_keep_segments = 10

​ hot_standby = on

​ 保存並退出。

將數據從主機複製到從機【重點】

要從主服務器同步到從服務器,從服務器上的PostgreSQL主目錄必須由主服務器的主目錄替換。 在從服務器中,登錄postgres用戶

sudo -u postgres psql  -- 登錄postgres 

備份實際數據庫目錄:

postgres@ubuntu:~$ cd /var/lib/postgresql/9.5/
postgres@ubuntu:~/9.5$ mv main main_back

創建新的主目錄,更改權限:

postgres@ubuntu:~/9.5$ mkdir main/
postgres@ubuntu:~/9.5$ chmod 700 main

此時,使用pg_basebackupR將主目錄從主服務器複製到從服務器:(要輸入密碼replica)

postgres@ubuntu:~/9.5$ pg_basebackup -h 192.168.40.129 -U replica -D /var/lib/postgresql/9.5/main -P
Password:

傳輸完成後,在主目錄中創建一個新的recovery.conf文件,並粘貼以下內容:

standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica password=usr_strong_pwd'
trigger_file = '/tmp/postgresql.trigger.5432'

保存退出,更改文件權限:

postgres@ubuntu:~/9.5$ vim main/recovery.conf 
postgres@ubuntu:~/9.5$ 
postgres@ubuntu:~/9.5$ chmod 600 main/recovery.conf 

重啓Postgresql。從服務配置結束。

驗證

  1. 主服務登錄驗證:
myubtu@ubuntu:/home$ sudo -u postgres psql
[sudo] password for myubtu: 
psql (9.5.2)
Type "help" for help.

postgres=# select client_addr,sync_state from pg_stat_replication;
  client_addr   | sync_state 
----------------+------------
 192.168.40.131 | async
(1 row)

postgres=# select pg_is_in_recovery();

pg_is_in_recovery 

 f
(1 row)

出現 192.168.40.131 | async 表示成功!!!

  1. 測試在數據庫添加新表:
    在這裏插入圖片描述
    129上新建表後,從庫131出現所添加表

  2. 測試從庫修改數據(從庫修改報錯。權限限制)
    在這裏插入圖片描述
    131從庫中對錶中數據做修改報錯(從庫只有查詢權限,無法添加、修改)

參考連接

https://blog.csdn.net/pollydejia/article/details/96321703
https://www.cnblogs.com/guoximing/p/9429009.html
https://www.cnblogs.com/yjf512/p/4499547.html
https://my.oschina.net/robin3d/blog/2907024
https://blog.csdn.net/wlwlwlwl015/article/details/53287855
https://www.linuxidc.com/Linux/2017-08/146190.htm
https://blog.51cto.com/wn2100/2238996

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章