最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Docker部署PostgreSQL 12.4主從方式

 更新時(shí)間:2023年12月16日 09:48:12   作者:Expect-樂(lè)  
這篇文章主要介紹了利用Docker部署PostgreSQL 12.4主從方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

通過(guò)Docker部署PG主從

主要用于測(cè)試,通過(guò) Docker 快速部署 PG 主從。

環(huán)境架構(gòu)

基于PG 12.4 版本安裝

IP角色
172.18.12.100
172.18.12.101

部署

下載鏡像,運(yùn)行容器,配置主從。

步驟1:下載鏡像

[root@lei ~]# docker pull postgres:12.4-alpine

官方鏡像地址:https://hub.docker.com/_/postgres?tab=description

可根據(jù)自己需要下載其他版本的 PG。

步驟2:配置網(wǎng)絡(luò)

在開(kāi)始之前需要為每個(gè)容器指定一個(gè)IP,雖然不指定也可以,當(dāng)時(shí)IP可能 會(huì)隨時(shí)變動(dòng)導(dǎo)致 PG 主從復(fù)制失敗。

所以最好手動(dòng)為每個(gè)容器指定一個(gè)IP地址。

創(chuàng)建網(wǎng)絡(luò)

docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.12.1 mynet

查看當(dāng)前網(wǎng)絡(luò)配置

[root@lei ~]# docker inspect mynet
[
    {
        "Name": "mynet",
        "Id": "9bcbf9f08168af8ee61f766014629bce6adbe11e00842f53ab2bc84615ddc2e2",
        "Created": "2020-11-09T16:01:03.276711818+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.12.0/16",
                    "Gateway": "172.18.12.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

注意:指定IP地址,只能自定義網(wǎng)絡(luò)。

步驟3:運(yùn)行容器

通過(guò)指定端口映射,目錄映射,容器名,IP地址運(yùn)行容器。

[root@lei ~]# mkdir -p  /home/pg_p/data

[root@lei ~]# docker run --name pg_p --restart=always --network=mynet --ip 172.18.12.100 -v /home/pg_p/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:12.4-alpine
[root@lei ~]# mkdir -p  /home/pg_s/data

[root@lei ~]# docker run --name pg_s --restart=always --network=mynet --ip 172.18.12.101 -v /home/pg_s/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5433:5432 -d postgres:12.4-alpine

參數(shù)說(shuō)明:

  • –name:指定容器名,隨便寫
  • –restart=always:表示容器隨著docker進(jìn)程自動(dòng)啟動(dòng)
  • –network,–ip:容器指定IP
  • -v :將容器內(nèi)的目錄映射(/var/lib/postgresql/data)到本機(jī)目錄(/home/pg_s/data)
  • -e:其他參數(shù)
  • -p:端口映射,將容器內(nèi)的端口映射到本機(jī)端口,前面是本機(jī)端口,后面是容器端口。
  • -d:鏡像名稱

步驟4:正常配置主從相關(guān)參數(shù)

進(jìn)入容器命令:

[root@lei ~]# docker exec -it pg_p /bin/bash
bash-5.0# su - postgres
bff818d570c9:~$ psql
psql (12.4)
Type "help" for help.

postgres=#

主庫(kù)

1.創(chuàng)建復(fù)制用戶

CREATE ROLE replica login replication encrypted password 'replica';

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 replica   | Replication                                                | {}

2.修改 pg_hba.conf

修改pg_hba.conf,允許 replica用戶從 172.18.12.101 從庫(kù)上連接主庫(kù)。

配置文件在本地:/home/pg_p/data目錄下,如:

host   replication      replica       172.18.12.101/32          trust   #允許172.18.12.101使用 replica 用戶來(lái)復(fù)制

我這里改為0.0.0.0/0,表示所有IP都可以連接主庫(kù),生產(chǎn)環(huán)境不要這么設(shè)置。

3.修改postgresql.conf

必須修改的配置是前面三個(gè),后面幾個(gè)看情況修改。

listen_addresses = '*'        # 監(jiān)聽(tīng)所有IP
archive_mode = on             # 允許歸檔
wal_level = replica           # 開(kāi)啟熱備
archive_command = '/bin/date' # 用該命令來(lái)歸檔logfile segment,這里取消歸檔。
max_wal_senders = 32          # 這個(gè)設(shè)置了可以最多有幾個(gè)流復(fù)制連接,差不多有幾個(gè)從,就設(shè)置幾個(gè)
wal_keep_segments = 64        # 設(shè)置流復(fù)制保留的最多的xlog數(shù)目,一份是 16M,注意機(jī)器磁盤 16M*64 = 1G
wal_sender_timeout = 60s      # 設(shè)置流復(fù)制主機(jī)發(fā)送數(shù)據(jù)的超時(shí)時(shí)間
max_connections = 200         # 這個(gè)設(shè)置要注意下,從庫(kù)的max_connections必須要大于主庫(kù)的

4.最后重啟容器,使配置生效。

docker restart pg_p

5.驗(yàn)證配置是否生效

postgres=# show archive_mode; archive_mode-------------- on(1 row)

從庫(kù)

修改從庫(kù)相關(guān)配置,以及從主庫(kù)初始化數(shù)據(jù)過(guò)來(lái)。

1.初始化數(shù)據(jù)

進(jìn)入容器刪除原始數(shù)據(jù)文件,利用pg_basebackup從主庫(kù)初始化數(shù)據(jù)。

[root@lei ~]# docker exec -it pg_s /bin/bash
bash-5.0# su - postgres
# 刪除原有數(shù)據(jù)文件
cedd81ee4e30:~$ rm -rf /var/lib/postgresql/data/*
# 備份恢復(fù)
cedd81ee4e30:~$ pg_basebackup -h 172.18.12.100 -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/postgresql/data
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/2000028 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_43"
24636/24636 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log end point: 0/2000138
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk ...
pg_basebackup: base backup completed

2.新增并配置standby.signal文件

standby_mode = 'on'

3.修改 postgresql.conf

wal_level = replica   # WAL 日志級(jí)別為 replica
primary_conninfo = 'host=172.18.12.100 port=5432 user=replica password=replica'   # 主庫(kù)連接信息	
hot_standby = on                     # 恢復(fù)期間,允許查詢
recovery_target_timeline = latest    # 默認(rèn)
max_connections = 120                # 大于等于主節(jié)點(diǎn),正式環(huán)境應(yīng)當(dāng)重新考慮此值的大小

4.重啟容器

[root@lei ~]# docker restart pg_s

步驟5:驗(yàn)證主從是否正常

**方法1:**主庫(kù)上執(zhí)行以下命令,可以看到從庫(kù)信息

postgres=# select client_addr,sync_state from pg_stat_replication;
  client_addr  | sync_state
---------------+------------
 172.18.12.101 | async
(1 row)

**方法2:**主庫(kù)上新建數(shù)據(jù)庫(kù)

  • 主庫(kù)
CREATE DATABASE
postgres=#
postgres=# \c lei
You are now connected to database "lei" as user "postgres".
lei=# create table test(name varchar(50));
CREATE TABLE
lei=# insert into test values('tom');
INSERT 0 1

  • 從庫(kù)
postgres-# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 lei       | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(4 rows)

postgres-# \c lei
You are now connected to database "lei" as user "postgres".
lei=# select * from test;
 name
------
 tom
(1 row)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 容器Docker入門詳解

    容器Docker入門詳解

    這篇文章主要介紹了容器Docker入門詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署

    Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署

    這篇文章主要介紹了Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • docker掛載NVIDIA顯卡運(yùn)行pytorch的方法

    docker掛載NVIDIA顯卡運(yùn)行pytorch的方法

    這篇文章主要介紹了docker掛載NVIDIA顯卡運(yùn)行pytorch的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 詳解使用Docker進(jìn)行Redis主從復(fù)制實(shí)踐

    詳解使用Docker進(jìn)行Redis主從復(fù)制實(shí)踐

    這篇文章主要介紹了詳解使用Docker進(jìn)行Redis主從復(fù)制實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 推送docker鏡像到harbor的實(shí)現(xiàn)方式

    推送docker鏡像到harbor的實(shí)現(xiàn)方式

    這篇文章主要介紹了推送docker鏡像到harbor的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Docker部署java項(xiàng)目,關(guān)于Dockerfile文件構(gòu)建鏡像方式

    Docker部署java項(xiàng)目,關(guān)于Dockerfile文件構(gòu)建鏡像方式

    文章指導(dǎo)如何使用Docker部署Java應(yīng)用:先檢查Docker版本,拉取openjdk:8基礎(chǔ)鏡像并創(chuàng)建Dockerfile(注意名稱與jar包路徑一致),構(gòu)建鏡像后運(yùn)行容器(指定端口、日志目錄及JVM參數(shù)),最后進(jìn)入容器獲取Java進(jìn)程日志并映射到宿主機(jī)
    2025-07-07
  • Docker在CentOS7下不能下載鏡像timeout的解決辦法(圖解)

    Docker在CentOS7下不能下載鏡像timeout的解決辦法(圖解)

    本文給大家記錄下Docker在CentOS7下不能下載鏡像timeout問(wèn)題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-11-11
  • docker?創(chuàng)建容器時(shí)指定容器ip的實(shí)現(xiàn)示例

    docker?創(chuàng)建容器時(shí)指定容器ip的實(shí)現(xiàn)示例

    在實(shí)際部署中,我們需要指定容器ip,本文主要介紹了docker?創(chuàng)建容器時(shí)指定容器ip,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Docker安裝OpenWrt的實(shí)現(xiàn)步驟

    Docker安裝OpenWrt的實(shí)現(xiàn)步驟

    OpenWrt是一種可以運(yùn)行在路由器上的嵌入式操作系統(tǒng),提供了許多網(wǎng)絡(luò)服務(wù)和功能,本文主要介紹了Docker安裝OpenWrt的實(shí)現(xiàn)步驟,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • docker鏡像導(dǎo)入的實(shí)現(xiàn)方法

    docker鏡像導(dǎo)入的實(shí)現(xiàn)方法

    如果服務(wù)器網(wǎng)絡(luò)不好或者pull不下來(lái)鏡像,只能進(jìn)行導(dǎo)入,本文主要介紹了docker鏡像導(dǎo)入的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

禹州市| 洮南市| 普宁市| 平乐县| 山东省| 常山县| 宾川县| 盖州市| 台州市| 彰武县| 阳泉市| 泸西县| 平遥县| 电白县| 石景山区| 富裕县| 九龙城区| 北川| 灌云县| 旌德县| 双鸭山市| 六安市| 德清县| 安乡县| 宜兴市| 乌拉特中旗| 涿州市| 靖远县| 通河县| 铜鼓县| 宁明县| 芮城县| 南漳县| 庄浪县| 繁峙县| 遵义县| 岗巴县| 易门县| 南部县| 如皋市| 江陵县|