成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PostgreSQL主備環境搭建

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

PostgreSQL主備環境搭建

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

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

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

1.安裝部署數據庫軟件

安裝部署還是得啰嗦幾句,使用的是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)創建用戶和組 

  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 

至此,數據庫軟件部署就搞定了,在這里我們只做了功能,還沒有涉及性能層面的調整和優化。

2.配置主庫

使用的環境是兩臺服務器

192.168.179.128  主庫

192.168.253.134  備庫

1)創建一個復制角色

CREATE ROLE replica login replication encrypted password 'replica';

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

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

  1. host   replication  replica   192.168.253.134/24   trust 

因為是跨網段,我額外補充了一條網關的記錄 

  1. host   replication  replica   192.168.179.1/24   trust 

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

修改如下的幾個參數設置,端口還是保留默認的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.配置備庫

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

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

  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還原數據

先不必擔心,我們可以使用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里面的歸檔參數或者和MySQL里的change master的設置類似。

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

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

recovery.conf文件的內容改動參考如下: 

  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)修改參數文件postgresql.conf的配置

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

  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)查看復制狀態

可以在主庫端查看復制狀態,參考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   
責任編輯:龐桂玉 來源: 楊建榮的學習筆記
相關推薦

2022-03-09 12:26:04

MySQL高可用性主備延遲

2021-10-26 08:00:00

數據庫架構技術

2013-10-30 22:41:23

Clouda環境

2011-03-09 13:02:31

LAMP環境搭建

2011-03-14 13:06:58

LAMP搭建

2023-12-12 07:24:06

MySQL策略主服務器

2023-11-27 07:23:39

2021-07-14 23:38:02

PostgreSQLOracle模式

2017-12-12 14:26:16

數據庫PostgreSQL邏輯優化

2015-10-26 10:14:13

Android開發環境robolectric

2013-07-23 06:11:44

Android開發學習Android開發環境Java

2011-04-02 11:40:17

LAMP測試環境

2009-06-17 17:02:22

2011-08-25 15:02:17

Lua環境搭建EditPlus

2024-05-31 13:55:25

2016-08-16 13:44:28

AndroidLinuxADT

2022-04-26 11:06:50

環境搭建

2011-09-01 19:06:57

UbuntuLua安裝環境

2010-06-07 17:33:14

Linux測試環境搭建

2011-09-27 11:30:29

SSH 環境搭建
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产免费一区二区三区五区 | 成人精品一区二区 | 91精品国产色综合久久不卡蜜臀 | 精品福利一区二区三区 | 欧美日韩久久 | 天天干夜夜操 | 精品一区二区在线看 | 精品久久久久久18免费网站 | 日韩av一区二区在线观看 | 久国产精品 | 久久久免费 | 国产乱码精品一区二区三区忘忧草 | 先锋av资源网 | 国产在线一区二区三区 | 国产成人a亚洲精品 | 欧美日韩网站 | 国产精品久久久久久久久 | 国产在线一区二区 | 中文字幕一区二区三区日韩精品 | 久久综合九色综合欧美狠狠 | 99国产精品久久久 | 91 在线 | 中文字幕欧美日韩一区 | 国产精品99久久久久久久vr | 日本不卡视频在线播放 | 亚洲综合色自拍一区 | 国产色婷婷精品综合在线播放 | 久久亚洲精品国产精品紫薇 | 在线看无码的免费网站 | 久久久99国产精品免费 | 免费在线观看一区二区 | 国产日韩一区 | 国产午夜精品一区二区三区在线观看 | 日韩精品一区二区三区中文字幕 | 亚洲精品久久久蜜桃 | 久久久久久综合 | 婷婷中文字幕 | 久久精品无码一区二区三区 | 国产精品久久久久久久7电影 | av天天干 | 中文字幕一区二区三区精彩视频 |