Docker之PostgreSQL 12主從流復制搭建


環境參數
1. 宿主機 ubnutu 20.0.4LTS
2. Docker CE 19.0.3
3. Postgre 12.4
4. master容器 172.17.0.2 slave 172.17.0.3
主要步驟
1. 設置兩個容器 master slave
docker run --name slave -e POSTGRES_PASSWORD=123456 -p 5412:5432 -d postgres:12.4
docker run --name master -e POSTGRES_PASSWORD=123456 -p 5411:5432 -d postgres:12.4
2. 然后stop掉slave
3. 查看容器掛載實際目錄(或者容器內直接操作文件)
docker inspect master|grep Source
/var/lib/docker/volumes/1768df8e4d70b74d63c43a7d1b4257127be1857d535a4c5e79f9d727584da8eb/_data
docker inspect slave|grep Source
/var/lib/docker/volumes/d89f20c596f57acab31e806e3fcf59ada481052d92afc6f3596f26d46b7fd700/_data
4. master節點創建復制賬號或者直接使用root賬號
CREATE ROLE replication WITH REPLICATION PASSWORD 'postgres' LOGIN;
5. 進入Master節點的實際磁盤目錄
cd /var/lib/docker/volumes/1768df8e4d70b74d63c43a7d1b4257127be1857d535a4c5e79f9d727584da8eb/_data
vim pg_hba.conf 添加如下代碼
  host    replication     replication      172.17.0.3/32         md5 #配置復制賬號 以及slave的ip
 vim postgresql.conf 添加如下代碼
   wal_level = hot_standby #啟動流復制
   max_wal_senders = 3  
6. 重啟master節點 准備開始數據同步
master節點執行sqlSELECT pg_start_backup('base', true)
宿主機執行 
rsync -ac /var/lib/docker/volumes/b2892403b622c733f771520eaff33055c77e1621f525dd038ea4610622454749/_data/ /var/lib/docker/volumes/6d0e60a38cc300793dccdf35df5bd6660849847aa4236166d5c09bccbdf26019/_data/ --exclude-from=/tmp/exclude.txt exclude.txt 主要是排除不用的同步的文件pg_hba.conf、pg_ident.conf、postgresql.conf、postmaster.pid 也可以使用 pg_basebackup 命令進行備份同步
7. 來到slave節點的實際目錄  由於PG12取消了recovery.conf 我們需要在slave節點建立recovery.signal或standby.signal 我們這里使用standby.signal
8. 然后配置postgresql.conf 新增
hot_standby = on
primary_conninfo      = 'host=172.17.0.2 port=5432 user=replication password=postgres application_name=172.17.0.3'
9. 啟動slave
10. master節點執行驗證
select * from pg_stat_replication;


免責聲明!

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



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