QA PgPool-II 同步 Postgresql
X1 服務器准備
192.168.59.121 PostgreSQL10
192.168.59.120 PGPool-II 3.7
X2 安裝PostgreSQL
#M1 下載
$ https://yum.postgresql.org/
$ yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y
#M2 安裝
$ yum list | grep postgresql
$ yum install postgresql10-contrib postgresql10-server -y
#M3 初始化數據庫
$ /usr/pgsql-10/bin/postgresql-10-setup initdb
** /var/lib/pgsql/10/data /** 數據目錄 /
** /usr/pgsql-10/bin /** 命令目錄 /
#M4 啟動數據庫並設置開機啟動
$ systemctl start postgresql-10.service
$ systemctl enable postgresql-10.service
#M5 登錄postgresql並設置密碼---postgresql在安裝時默認添加用戶postgres
$ su - postgres
$ psql
$ ALTER USER postgres WITH PASSWORD 'hotcomm123';
$ \q
#M6 支持遠程登錄-修改配置文件[pg_hba.conf,postgresql.conf]
&& pg_hba.conf
@在文件末尾添加下面記錄,並且將所有 peer|ident 修改為md5
host all all 0.0.0.0/0 md5
&& postgresql.conf
@ listen_addresses = '*'
@ port = 5432
X3 安裝PgPool-II
##M1 安裝
$ rpm -ivh http://www.pgpool.net/yum/rpms/3.7/redhat/rhel-7-x86_64/pgpool-II-release-3.7-1.noarch.rpm
$ yum -y install pgpool-II-pg95
$ yum -y install pgpool-II-pg95-debuginfo
$ yum -y install pgpool-II-pg95-devel
$ yum -y install pgpool-II-pg95-extensions
## 配置文件路徑
/etc/pgpool-II/pgpool.conf
##M2 修改配置文件 pgpool.conf
@ listen_addresses = '*'
@ port = 9999
@ backend_hostname0 = '10.10.10.104' #主機ip
@ backend_port0 = 5432
@ backend_weight0 = 1 #loadbalance不開啟,無效
@ backend_data_directory0 = '/var/lib/postgresql/9.5/main'
@ backend_flag0 = 'ALLOW_TO_FAILOVER'
@ enable_pool_hba = on
@ pool_passwd = 'pool_passwd'
##M3 修改配置文件pool_hba.conf
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
##M4 啟用配置文件pool_passwd 密碼:hotcomm123 客戶端連接pgpool
$ pg_md5 -m -p -u postgres pool_passwd ## 配置的賬號密碼將直接用於連接PostgreSQL 數據的賬號密碼
$ pgpool -n
$ psql -h 192.168.59.120 -p 9999 -U postgres
QB PostgreSQL10 流復制
X1 服務器准備
192.168.59.121 PostgreSQL10 Master
192.168.59.122 PostgreSQL10 Slaver
X2 安裝 Master PostgreSQL10
##M0 此處和接下來就不在陳述安裝細節,可以參考QA.X2
##M1 修改配置文件-postgresql.conf
@wal_level = replica # 參數控制 WAL 日志信息的輸出級別,有 minimal 、 replica 、 logical 三種模式, minimal 記錄的 WAL 日 志信息最少,除了記錄數據庫異常關閉需要恢復時的WAL 信息外,其他操作信息都不記錄; replica 記錄 的 WAL 信息比 minimal 信息多些,會記錄支持 WAL 歸檔、復制和備庫中啟用只讀查詢等操作所需 的 WAL 信息;logical 記 錄 的 WAL 日志信息 最多, 包含了支持邏輯解析 (IO 版本的新特性,邏輯復制使用這種模式,本章后面會介紹)所需 的 WAL
@archive_mode = on # 參數控制是否啟用歸檔, off 表示不啟用歸檔, on 表示啟用歸檔並使用 archive command 參數的配置命令將 WAL 日志歸檔到歸檔存儲上,此參數設置后需重啟數據庫生效,這里通常設置成 on
@archive command = ’ / bin/date ’ # 參數設置 WAL 歸檔命令, 可以將 WAL 歸檔到本機目錄,也可以歸檔到遠程其他主機上,由於流復制的配置並不一定需要依賴配置歸檔命令,我們將歸檔命令暫且設置成偽歸檔命令/bin/date ,后期如果需要打開歸檔直接配置歸檔命令即可
@max wal senders = 10 # 參數控制主庫上的最大 WAL 發送進程數 ,通過 pg_basebackup 命令在主庫上做基准備份時也會消耗 WAL 進程, 此參數設置不能 比 max_connections參數值高 , 默認值為 10 , 一個流復制備庫通常只需要消耗流復制主庫一個 WAL 發送進程 。
@wal keep segments = 512 # 設置流復制保留的最多的xlog數目,一份是 16M,注意機器磁盤 16M*64 = 1G
@hot_standby = on # 參數控制數據庫恢復過程中是否啟用讀操作 ,這個參數通常用在流復制備庫,開啟此參數后流復制備庫支持只讀 SQL ,但備庫不支持寫操作,主庫上也設置此參數為 on 。
@wal_sender_timeout = 60s # 設置流復制主機發送數據的超時時間
@max_connections = 100 # 這個設置要注意下,從庫的max_connections必須要大於主庫的
##M2 創建流復制賬號,進入數據庫內部執行腳本,該角色(賬號)用於復制和登入
$ CREATE ROLE replica login replication encrypted password 'replica';
##M3 修改 pg_hba.conf 文件 進入最后部分,添加如下
host replication replica 0.0.0.0/0 md5 #允許使用 replica 用戶來復制
##M4 重啟服務,執行之后通過status檢查執行是否成功,假如失敗,則返回前面步驟好好檢查是否哪里忘了
$ systemctl restart postgresql-10.service
X3 安裝 Slaver PostgreSQL10
##M0 此處不重復展示安裝細節,參考QA.X2,但是需要注意,執行完M2即可停止
##M1 通過執行pg_basebackup 方式部署流復制,具體執行下面腳本
$ pg_basebackup -h 192.168.59.121 -U replica -D /var/lib/pgsql/10/data -X stream -P -R ## 輸入主庫流復制 賬號-密碼
$ chown -R postgres:postgres /var/lib/pgsql/10/data/*
##M2 修改配置文件 recovery.conf
$ vim recovery.conf /**添加屬性/
@ recovery_target_timeline = 'latest' ##參數設置恢復的時間線( timeline ) , 默認情況下是恢復到基准備份生成時 的時間線,設置成 latest 表示從備份 中恢復到最近的 時間線 , 通常流復制環境設置此參數為 latest ,復雜的恢復場景可將此參數設置成其他值
##M3 重啟並檢查服務
$ systemctl restart postgresql-10.service
$ systemctl status postgresql-10.service
X4 驗證復制
##M0 來到主庫 192.168.59.121 進入數據庫執行腳本
$ psql
$ select client_addr,sync_state from pg_stat_replication; ## 通過查看記錄,正常安裝成功則會顯示從庫地址 例如 192.168.59.122
$ CREATE DATABASE test_v1 OWNER postgres; ## 可以通過創建數據庫(DDL)來判斷
##M1 來到從庫 192.168.59.122 到這一步假如一切成功則證明流復制(異步)成功
$ su - postgres
$ psql
$ \l
X5 參考資料
網址:
https://www.jianshu.com/p/343c3c8047f0
https://blog.csdn.net/pg_hgdb/article/details/79069407
https://www.postgresql.org/files/documentation/pdf/10/postgresql-10-A4.pdf
https://www.jb51.net/article/148841.htm
書籍:
PostgreSQL實戰.pdf
PostgreSQL 修煉之道.pdf(該書默認使用postgresql_9,所以部分屬性不適用,例如wal_level的值和PSQL_10完全不同,但是該書在很多細節方面寫的很全面,非常有參考價值)