docker 下postgresql12的集群搭建


已經測試通過

文檔https://hub.docker.com/r/bitnami/postgresql

一 創建主節點

 docker run --name postgresql-master  -e POSTGRESQL_REPLICATION_MODE=master  -e POSTGRESQL_USERNAME=my_user  -e POSTGRESQL_PASSWORD=password123  -e POSTGRESQL_DATABASE=my_database  -e POSTGRESQL_REPLICATION_USER=my_repl_user  -e POSTGRESQL_REPLICATION_PASSWORD=my_repl_password -p 8932:5432 bitnami/postgresql:latest

postgresql-master 容器名
POSTGRESQL_REPLICATION_MODE 表示是主節點
POSTGRESQL_USERNAME 數據庫用戶名
POSTGRESQL_PASSWORD 數據庫密碼
POSTGRESQL_DATABASE 數據庫名
POSTGRESQL_REPLICATION_USER 用於主從復制的用戶名
POSTGRESQL_REPLICATION_PASSWORD 用於主從復制的密碼
-p 8932:5432 端口映射 因為我是在同一主機上的兩個docker
bitnami/postgresql:latest 鏡像

二 創建從節點

docker run --name postgresql-slave  --link postgresql-master:master   -e POSTGRESQL_REPLICATION_MODE=slave  -e POSTGRESQL_USERNAME=my_user -e POSTGRESQL_PASSWORD=password123  -e POSTGRESQL_MASTER_HOST=192.168.26.22   -e POSTGRESQL_MASTER_PORT_NUMBER=8932   -e POSTGRESQL_REPLICATION_USER=my_repl_user   -e POSTGRESQL_REPLICATION_PASSWORD=my_repl_password  bitnami/postgresql:latest

postgresql-slave 容器名
postgresql-master:master 鏈接到網絡 直接用ip訪問就不需要了
POSTGRESQL_REPLICATION_MODE 表示是從節點
POSTGRESQL_USERNAME 數據庫用戶名
POSTGRESQL_PASSWORD 數據庫密碼
POSTGRESQL_MASTER_HOST 主節點的ip地址
POSTGRESQL_MASTER_PORT_NUMBER 主節點的端口
POSTGRESQL_REPLICATION_USER 用於主從復制的用戶名
POSTGRESQL_REPLICATION_PASSWORD 用於主從復制的密碼
-p 8932:5432 端口映射 因為我是在同一主機上的兩個docker
bitnami/postgresql:latest 鏡像

另一個鏡像使用方法 沒試

參考 https://github.com/sameersbn/docker-postgresql

一 創建主節點

docker run --name postgresql-master -itd --restart always 
  --env DB_USER=dbuser --env DB_PASS=dbuserpass --env DB_NAME=dbname 
  --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
  sameersbn/postgresql:12-20200524

二 創建從節點

docker run --name postgresql-slave01 -itd --restart always  --link postgresql-master:master 
  --env REPLICATION_MODE=slave --env REPLICATION_SSLMODE=prefer
  --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
  --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass
  sameersbn/postgresql:12-20200524

三 創建快照節點

docker run --name postgresql-snapshot -itd --restart always 
  --link postgresql-master:master 
  --env REPLICATION_MODE=snapshot --env REPLICATION_SSLMODE=prefer 
  --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
  --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
  sameersbn/postgresql:12-20200524

四 創建恢復備份
默認備份文件到/srv/docker/backups/postgresql.XXXXXXXXXXXX ,然后容器會關閉。如果需要恢復 ,重啟容器就行了。

docker run --name postgresql-backup -it --rm 
  --link postgresql-master:master 
  --env REPLICATION_MODE=backup --env REPLICATION_SSLMODE=prefer
  --env REPLICATION_HOST=master --env REPLICATION_PORT=5432  
  --env REPLICATION_USER=repluser --env REPLICATION_PASS=repluserpass 
  --volume /srv/docker/backups/postgresql.$(date +%Y%m%d%H%M%S):/var/lib/postgresql 
  sameersbn/postgresql:12-20200524

五 保存日志到文件

docker run --name postgresql -itd --restart always 
  sameersbn/postgresql:12-20200524 -c logging_collector=on

六管理工具


docker run -d -p 5433:80 --name pgadmin4 -e PGADMIN_DEFAULT_EMAIL=test@123.com -e PGADMIN_DEFAULT_PASSWORD=123456 dpage/pgadmin4
#查看當前備庫狀態:
#t :true,意味着處於recovery狀態
#f :false,意味着處於正常服務狀態
select pg_is_in_recovery();  

select * from pg_stat_replication; #查詢當前主庫用幾個備庫


免責聲明!

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



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