postgresql主從配置


master:10.0.1.114

slaver:10.0.1.116

一、yum安裝https://blog.csdn.net/weixin_41048363/article/details/80310285

二、主從配置

1、主數據配置(10.0.1.114)

1.1  初始化

/usr/pgsql-9.6/bin/postgresql96-setup initdb 

  

1.2 啟動postgresql 


systemctl start postgresql-9.6

  

1.3 切換到postgres用戶(安裝好生成默認的用戶)

[root@steven1 data]# su - postgres  
上一次登錄:三 5月 16 09:19:49 UTC 2018pts/0 上  
-bash-4.2$    
-bash-4.2$ psql    進入數據庫  
  
postgres=#

  

1.4 創建賬號並授權

postgres=# create role 賬戶名 login replication encrypted password '密碼';

  

1.5  修改/var/lib/pgsql/9.6/data/pg_hba.conf配置文件.

# IPv4 local connections:  
host    all             all             127.0.0.1/32            ident  
#  添加如下內容  
host    replication     repl            10.0.1.0/24             md5  
host    all             repl            10.0.1.1/24             trust 

  

1.6 修改postgresql.conf

-bash-4.2$ vim postgresql.conf  
listen_addresses = '10.0.1.114'     
wal_level = hot_standby  #熱備模式  
max_wal_senders= 6 #可以設置最多幾個流復制鏈接,差不多有幾個從,就設置多少  
wal_keep_segments = 10240  #重要配置   
wal_send_timeout = 60s   
max_connections = 512 #從庫的 max_connections要大於主庫  
archive_mode = on #允許歸檔   
archive_command = 'cp %p /url/path%f'   #根據實際情況設置  

  

三、從數據庫配置

1、切換到postgres

[root@localhost data]# su - postgres  

  

2、拷貝master配置相關文件。

-bash-4.2$ rm -rf /var/lib/pgsql/9.6/data/*  
-bash-4.2$ pg_basebackup -h 10.0.1.114 -U repl -D /var/lib/pgsql/9.6/data -X stream -P       
-bash-4.2$ cp /usr/pgsql-9.6/share/recovery.conf.sample /var/lib/pgsql/9.6/data/recovery.conf  

  

 3、修改recovery.conf文件

standby_mode = on  
primary_conninfo = 'host=10.0.1.114 port=5432 user=master創建的用戶名 password='密碼'  
trigger_file = '/var/lib/pgsql/9.6/data/trigger.kenyon'    #主從切換時后的觸發文件  
recovery_target_timeline = 'latest'  

  

 4、修改postgresql.conf文件

listen_addresses = 10.0.1.116  
wal_level = hot_standby   
max_connections = 1000 #一般從的最大鏈接要大於主的。   
hot_standby = on #說明這台機器不僅僅用於數據歸檔,也用於查詢   
max_standby_streaming_delay = 30s   
wal_receiver_status_interval = 10s #多久向主報告一次從的狀態。   
hot_standby_feedback = on #如果有錯誤的數據復制,是否向主進行范例 

  

四、檢測

1、在master數據庫中測試

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

  

2、在master數據庫中創建test數據庫

postgres=# create database test;  
CREATE DATABASE  
postgres=# \l     //  查看當前所有數據庫  
                                  List of databases  
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges  
-----------+----------+----------+-------------+-------------+-----------------------  
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +  
           |          |          |             |             | postgres=CTc/postgres  
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +  
           |          |          |             |             | postgres=CTc/postgres  
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  
(4 rows)  
  
postgres=# 

  

3、在從數據庫中查看數據庫是否同步。

postgres=# \l  
                                  List of databases  
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges  
-----------+----------+----------+-------------+-------------+-----------------------  
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +  
           |          |          |             |             | postgres=CTc/postgres  
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +  
           |          |          |             |             | postgres=CTc/postgres  
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |  
(4 rows)

  

參考:https://www.linuxidc.com/Linux/2017-03/142145.htm

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM