1. 程式人生 > >Docker + PostgreSQL 主從環境搭建

Docker + PostgreSQL 主從環境搭建

環境說明

  • Docker
  • Ubuntu/CentOS
  • PostgreSQL v10.1

1. 執行PostgreSQL

1.1 主庫

    docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v $(pwd)/pgsmaster:/var/lib/postgresql/data -d postgres

1.2 從庫

    docker run --name pgsslave -p 5501:5432 -e POSTGRES_PASSWORD=pgsslave -v $(pwd)/pgsslave:/var/lib/postgresql/data -d postgres

  進入以上主、從庫對應的實際掛載目錄執行下面的操作

2. 配置master(主庫)

2.1 編輯pg_hba.conf,在最下面新增如下:

    // replication_username: 複製賬號; slave_ip: 從庫所在的伺服器ip
    host    replication     <replication_username>      <slave_ip>/32          md5

2.2 編輯postgresql.conf(親測,非必須),更改如下:

    synchronous_standby_names = '*'

2.3 進入容器,登入PostgreSQL,建立複製賬號並驗證:

# 1.進入容器
        docker exec -it pgsmaster bash
# 2.連線PostgreSQL
        psql -U postgres
# 3.建立使用者
        set synchronous_commit =off;
        // replication_username: 對應上面設定的複製賬號; replication_username_password: 認證密碼
        create role <replication_username> login replication encrypted password '<replication_username_password>';  
# 4.驗證使用者
        \du

3. 配置Slave(從庫)

3.1 編輯postgresql.conf(親測,非必須),更改如下:

    hot_standby_feedback = on

3.2 新建recovery.conf,新增如下內容:

    standby_mode = 'on'
    // replication_username: 複製賬號(同主庫); master_ip: 主庫所在的伺服器ip; master_port: 主庫埠; replication_username_password: 認證密碼
    primary_conninfo = 'host=<master_ip> port=<master_port> user=<replication_username> password=<replication_username_password>'

4. 同步主從庫資料及測試

4.1 停止PostgreSQL

    docker stop pgsmaster 
    docker stop pgsslave

4.2 同步主從庫資料(必須)

  • 方法1:rsync
    // 1.1 已ssh認證,請將$(pwd)更改為實際的路徑
    rsync -cva --inplace --exclude=*pg_xlog* $(pwd)/pgsmaster/ <slave_ip>:$(pwd)/pgsslave/
    // 1.2 無ssh認證,請將$(pwd)更改為實際的路徑
    rsync -cva --inplace --exclude=*pg_xlog* $(pwd)/pgsmaster/ ssh [email protected]<slave_ip>:$(pwd)/pgsslave/
  • 方法2:pg_basebackup(自行谷歌)

4.3 先後啟動主庫、從庫服務

    docker start pgsmaster 
    docker start pgsslave

4.4 連線測試

    // 進入主庫容器
    docker exec -it pgsmaster bash
    // 檢視複製狀態
    psql -U postgres -x -c "select * from pg_stat_replication;"

9709135-3b4826d40b7407db.png

檢視複製狀態

相關推薦

Docker + PostgreSQL 主從環境搭建

環境說明 Docker Ubuntu/CentOS PostgreSQL v10.1 1. 執行PostgreSQL 1.1 主庫 docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=p

Mariadb 10.2.8版本GTID主從環境搭建以及切換

mas 從庫 ica ack relay_log mys repo oba 數據庫 1.首先搭建主從 主環境:192.168.1.117 從環境:192.168.1.123 a.首先以二進制包的形式安裝好MariaDB (忽略不計) b.配置環境的變量 通配 [mysqld

EOS Dapp開發(1)-基於Docker的開發環境搭建

rbo err 通過命令 plugin cat cti nec docker 反饋 隨著EOS主網的上線,相信基於EOS的Dapp開發會越來越多,查閱了很多資料相關的開發資料都不是很多,只能自己摸索,按照網上僅有的幾篇教程,先git clonehttps://github.

MYSQL主從環境搭建

關閉 eat gin sed 服務器 pda webkit fan x86 服務器:192.168.11.131 master192.168.11.132 slave服務器系統# cat /etc/redhat-release CentOS Linux release 7.

生產環境postgresql主從環境配置

red ase rim source eba 開機啟動 receive delay nco 主從服務器IP:192.168.11.131 postgreSQL master192.168.11.132 postgreSQL slave服務器系統版本:# cat /etc/r

基於Docker的Spark環境搭建理論部分

1.映象製作方案 我們要使用Docker來搭建hadoop,spark,hive及mysql叢集,首先使用Dockerfile製作映象,把相關的軟體拷貝到約定好的目錄下,把配置檔案在外面先配置好,再使用docker and / docker run,拷貝移動到hadoop,spark

docker入門-Javaweb環境搭建--centos7

一. 安裝docker 命令:yum install -y docker 安裝完成後docker version 可以檢視版本資訊, 驗證是否成功安裝 二. helloworld 映象跟ios映象檔案一個意思,docker 就是一個容器,虛擬機器。

基於docker的caffe環境搭建與使用示例

0. 引言Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。因此,Docker給應用提供了一個從開發到上線均一致的程式碼環境,讓程式碼的流水線變得簡單不少。以下是基於docker的caf

基於docker的caffe環境搭建與使用示例(根據自己的情況稍作修改)

0. 引言 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上。因此,Docker給應用提供了一個從開發到上線均一致的程式碼環境,讓程式碼的流水線變得簡單不少。 以下是基於dock

centos7下mariadb主從環境搭建詳細步驟

一、主從複製原理      主伺服器開啟二進位制日誌功能後,主伺服器的的變更就會記錄到二進位制日誌中。從伺服器把主伺服器的二進位制日誌讀到本地的中繼日誌,然後利用中繼日誌重做變更,以此保證主從兩個環境變更一致。二、搭建環境       vmware虛擬機器,centos7,m

Docker Swarm 叢集環境搭建及彈性服務部署

  上一篇文章《Docker Swarm 叢集管理利器核心概念掃盲》中我們把 Swarm 重要的概念性知識給大家講解了一波,理論完事就該實戰了,這篇文章帶大家從零開始,搭建 Docker Swarm 叢集環境,並通過 Swarm 實現服務的彈性部署,滾動更新服務及回滾服務等功能。    ## 叢集搭建

docker搭建MySQL主從環境

從docker hub上下載最新的MySQL映象,遵循如下步驟,即可利用docker構建MySQL主從環境。 1.執行主庫容器 docker run --name mysql -p 33061:3306 -e MYSQL_ROOT_PASSWORD=root -v /U

MySQL master-slave主從復制環境搭建初試

entos lob 根據 server-id 情況 href mysql- test tab 原文:MySQL master-slave主從復制環境搭建初試 環境為centos 7.2+mysql 5.7,網上教程很多,原理也不復雜(深知自己踩的坑還不夠) 正常情

docker python3環境搭建

文件 python 環境 dao 鏡像 host doc name docker 1、使用鏡像為daocloud的python鏡像 docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp

docker環境搭建centos+jdk+tomcat_CENTOS篇

運行時 pre term admin epo 命令 什麽 home down 前言 (1)寫在前面的話,鑒於在linux或類unix系統中安裝jdk+tomcat等環境,沒有什麽經驗,所以選擇在docker容器中安裝之,以防止安裝失敗無法恢復系統 (2)需要下載對應的系統

Docker 基於centos7 的LAMP環境搭建 (實驗一)

docker mysql docke docker centos7 前言 為方便其他開源軟件的配置實驗,利用docker技術基於centos7 系統搭建了lamp 環境,其中將部署mysql 、apache、php5.6。提供基礎的數據存儲,還將部署phpmyadmin 、memadmi

Docker 環境搭建(RedHat 7)

wal img centos docke disable firewalld alt x86 sta Docker 環境搭建(RedHat 7): CentOS7 下載 http://mirrors.sohu.com/centos/7/isos/x86_64/

Docker tomcat 多版本環境搭建

Docker tomcat 前言 在日常部署java 環境時經常會出現tomcat 版本不同或者java 項目不適用tomcat 作為web容器的情況,為方便使用,制作了一個通用的tomcat Docker 容器,用外部參數靈活判斷具體的環境。 環境安裝 docker pull centos dock

docker環境搭建

pool sta root pro href 3.2 自動啟動 repo ger docker安裝(centos) 添加代理 [root@localhost ~]# export https_proxy=http://192.168.102.10:8118 [root@l

docker+mysql+zabix-server環境搭建

str reg mirrors RR yun 保存 ble cte roo 本次使用docker搭建zabbix的組合是mysql+docker+zabix-server,使用zabbix容器連接mysql容器,mysql容器的數據庫文件保存在物理主機/opt/mysql_