av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

PostgreSQL主備環(huán)境搭建

記得在2年前寫過一篇PostgreSQL的文章,當時處于興趣,本來想在工作中接一下PG的業(yè)務,***因為各種各樣的原因就擱置了。

宿豫網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,宿豫網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為宿豫數(shù)千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的宿豫做網(wǎng)站的公司定做!

今天整理了下PostgreSQL的一些基礎內(nèi)容,參考的書是唐成老師的那本《PostgreSQL修煉之道》,有了Oracle和MySQL的基礎,看起來會比從零開始要容易一些,總體的感覺,PG功能確實很多很全,功能上像Oracle看齊,技術風格和MySQL很像,在做一些總結(jié)的時候,不停的在兩個數(shù)據(jù)庫之間來回切換。

關于主備環(huán)境的搭建,我使用的基于流復制的方式搭建,這是在PG 9.0之后提供的對WAL傳遞日志的方法,是基于物理復制,在9.4開始有了邏輯解碼,而細粒度的邏輯復制在PG 10中會有較大的改進。

1.安裝部署數(shù)據(jù)庫軟件

安裝部署還是得啰嗦幾句,使用的是9.5版本的源碼安裝,源碼包很小,就幾十兆。

1)解壓 

 
 
 
 
  1. tar -zxvf  postgresql-9.5.0.tar.gz 

2)切換到解壓目錄,嘗試編譯準備 

 
 
 
 
  1. cd postgresql-9.5.0  
  2. ./configure -prefix /usr/local/pgsql  

這個過程很可能有問題,比如下面的錯誤。 

 
 
 
 
  1. configure: error: zlib library not found  
  2. If you have zlib already installed, see config.log for details on the  
  3. failure.  It is possible the compiler isn't looking in the proper directory.  
  4. Use --without-zlib to disable zlib support.  

類似的錯誤還有readline,實際的情況zlib包和readline包都是有的。

這里需要注意一點:

redhat 系列下這個軟件包叫  readline-devel     ubuntu 下叫readline-dev    細分又分為libreadline5-dev   和 libreadline6-dev

所以我們需要安裝的是readline-devel和zlib-devel的包即可搞定,而不要只是懷疑,然后把--without-zlib選項給啟用了。

接下來的步驟就簡單了。

3)開始編譯安裝

這兩個過程耗時相對會多一些,大概幾分鐘吧,比MySQL的源碼編譯要快很多。 

 
 
 
 
  1. make  
  2. make install  

4)創(chuàng)建用戶和組 

 
 
 
 
  1. useradd postgres  
  2. mkdir -p /data/pgsql9.5  
  3. chown -R postgres:postgres /data/pgsql9.5  
  4. su - postgres  

5)初始化部署 

 
 
 
 
  1. /usr/local/pgsql/bin/initdb -D  /data/pgsql9.5 

至此,數(shù)據(jù)庫軟件部署就搞定了,在這里我們只做了功能,還沒有涉及性能層面的調(diào)整和優(yōu)化。

2.配置主庫

使用的環(huán)境是兩臺服務器

192.168.179.128  主庫

192.168.253.134  備庫

1)創(chuàng)建一個復制角色

CREATE ROLE replica login replication encrypted password 'replica';

2)配置訪問權限文件gp_hba.conf

添加一條記錄,使得備庫可以訪問,修改后需要重啟 

 
 
 
 
  1. host   replication  replica   192.168.253.134/24   trust 

因為是跨網(wǎng)段,我額外補充了一條網(wǎng)關的記錄 

 
 
 
 
  1. host   replication  replica   192.168.179.1/24   trust 

3)修改參數(shù)配置文件postgresql.conf

修改如下的幾個參數(shù)設置,端口還是保留默認的5432 

 
 
 
 
  1. listen_addresses = '*"  
  2. port = 5432  
  3. wal_level = hot_standby  
  4. max_wal_senders = 2  
  5. wal_keep_segments = 32  
  6. wal_sender_timeout =60s  
  7. max_connections =100 

這些步驟完成后,切記要重啟一下PG使得配置生效

4)重啟PG 

 
 
 
 
  1. $ /usr/local/pgsql/bin/pg_ctl -D /data/pgsql9.5 -l logfile restart 

3.配置備庫

備庫需要同樣的步驟來部署數(shù)據(jù)庫軟件,參考***部分即可。

這個時候備庫上還沒有初始化數(shù)據(jù),我們模擬客戶端的方式來訪問,可能會有如下的錯誤。 

 
 
 
 
  1. $ psql -Ureplica -h192.168.179.128 -p5432 --password  
  2. Password for user replica:   
  3. psql: FATAL:  no pg_hba.conf entry for host "192.168.179.1", user "replica", database "replica"  

1)使用pg_basebackup還原數(shù)據(jù)

先不必擔心,我們可以使用pg_basebackup或者命令行的方式來做備份恢復 

 
 
 
 
  1. $ pg_basebackup -F p --progress -D /data/pgsql9.5 -h 192.168.179.128 -p 5432 -U replica --password  
  2. Password:   
  3. 22484/22484 kB (100%), 1/1 tablespace  
  4. NOTICE:  WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup 

2)配置恢復配置recovery.conf

這個步驟是關鍵,和Oracle里面的歸檔參數(shù)或者和MySQL里的change master的設置類似。

recovery.conf文件可以從模板里拿到: 

 
 
 
 
  1. cp /usr/local/pgsql/share/recovery.conf.sample  /data/pgsql9.5/recovery.conf 

recovery.conf文件的內(nèi)容改動參考如下: 

 
 
 
 
  1. standby_mode = on  
  2. primary_conninfo = 'host=192.168.179.128 port=5432 user=replica password=replica'  
  3. recovery_target_timeline = 'latest'  
  4. trigger_file = '/data/pgsql9.5/trigger_activestb' 

3)修改參數(shù)文件postgresql.conf的配置

postgresql.conf文件的內(nèi)容修改如下,配置和主庫差別較大,需要注意。 

 
 
 
 
  1. listen_addresses = '*'  
  2. port = 5432  
  3. wal_level = minimal  
  4. max_wal_senders = 0  
  5. wal_keep_segments = 0  
  6. max_connections = 1000  
  7.  
  8.  
  9. synchronous_commit = off  
  10. synchronous_standby_names = ''  
  11. hot_standby = on  
  12. max_standby_streaming_delay = 30  
  13. wal_receiver_status_interval = 1s  
  14. hot_standby_feedback = on  

4)啟動PG備庫 

 
 
 
 
  1. $ /usr/local/pgsql/bin/pg_ctl -D /data/pgsql9.5 -l logfile start 

5)查看復制狀態(tài)

可以在主庫端查看復制狀態(tài),參考pg_stat_replication視圖,在查看的過程中,這個視圖字段較大,看起來會有些亂,我們可以使用類似MySQL \G的方式來查看,即\x的擴展模式。 

 
 
 
 
  1. postgres=# \x  
  2. Expanded display is on.  
  3. postgres=# select * from pg_stat_replication;   
  4. -[ RECORD 1 ]----+------------------------------  
  5. pid              | 20539  
  6. usesysid         | 16384  
  7. usename          | replica  
  8. application_name | walreceiver  
  9. client_addr      | 192.168.179.1  
  10. client_hostname  |   
  11. client_port      | 49374  
  12. backend_start    | 2018-03-25 05:19:15.215181+08  
  13. backend_xmin     | 1756  
  14. state            | streaming  
  15. sent_location    | 0/302F600  
  16. write_location   | 0/302F600  
  17. flush_location   | 0/302F600  
  18. replay_location  | 0/302F600  
  19. sync_priority    | 0  
  20. sync_state       | async   

標題名稱:PostgreSQL主備環(huán)境搭建
本文URL:http://uogjgqi.cn/article/dpgopso.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流