在docker上部署postgresSQL主從

文章目錄

  • 一、主從規劃
  • 二、創建PostgresSQL的Docker鏡像
  • 三、主庫部署
    • 1、建立pgsql主庫的data地址
    • 2、啟動docker鏡像
    • 3、docker內操作
    • 4、修改配置文件
  • 四、部署從數據庫
    • 1、建立psql備庫的data地址
    • 2、啟動docker鏡像
    • 3、備庫從主庫同步
    • 4、檢查是否同步
  • 五、測試主從數據庫

一、主從規劃

因為就一臺服務器,所以兩臺服務器的ip是一樣的,我采用了不同的端口

IP地址名稱備注
x.x.x.x:1922mymaster主庫
x.x.x.x:1921mystl備庫

需要提前配置好Docker容器

二、創建PostgresSQL的Docker鏡像

docker pull postgres:14

在這里插入圖片描述
查看鏡像是否創建成功

docker images

在這里插入圖片描述

三、主庫部署

1、建立pgsql主庫的data地址

以root用戶創建目錄

mkdir -p /usr/local/datamaster

2、啟動docker鏡像

# 一些參數的說明
# docker run 
#     --name <docker_nname>    # 啟動后容器的名稱 
#     --restart=always 					# docker的自動重啟
#     -v <data_address>:/var/lib/postgresql/data		# 數據卷掛載,前面的地址即為第一步創建的地址
#     -e POSTGRES_PASSWORD=<password>	# pgsql的密碼
#     -p <port>:5432				# 端口映射,
#     -d  <image_id>				# 鏡像名或IDdocker run --name mymaster -e POSTGRES_PASSWORD=這里是你的密碼 -p 1922:5432 -v /usr/local/datamaster/postgres:/var/lib/postgresql/data -d postgres:14

在這里插入圖片描述
查看數據庫是否創建成功

docker ps

在這里插入圖片描述
記住名稱,后邊要用

3、docker內操作

# 進入docker容器,這里這個mymaster就是上邊記住的名稱
docker exec -it mymaster bash
# 進入pgsql
su postgres
psql

在這里插入圖片描述

# 創建復制用戶
CREATE ROLE replica login replication encrypted password '這里是你的密碼!';
# 查看是否創建成功
\du
# 退出
exit
exit

在這里插入圖片描述

4、修改配置文件

退出容器
進入該數據庫創建容器時初配置的數據文件位置
在這里插入圖片描述
/usr/local/datamaster/postgres/arc 必須存在,如果不存在,則也需要mkdir一次

mkdir -p /usr/local/datamaster/postgres/arc
chmod 777 /usr/local/datamaster/postgres/arc
# 修改<data_address>/postgresql.conf
vim postgresql.confarchive_mode = on
archive_command = 'test ! -f /usr/local/datamaster/postgres/arc/%f'
wal_level = replica
max_wal_senders = 32
wal_keep_size = 16
wal_sender_timeout = 60s
# 以下兩個檢查一下,我的docker啟動后,自動就配置好了,如果被注釋了,也需要修改
listen_addresses = '*'
max_connections = 100

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

# 修改<data_address>/pg_hba.conf
vim pg_hba.conf
# 在最后新增一行
host    replication     replica         172.0.0.0/8            md5

在這里插入圖片描述

因為加載了數據卷,第三四步對配置文件的修改,和對不用Linux啟動的pgsql本質上沒有太大的差別,甚至可以認為是相同的操作

# 因為配置了自動重啟<--restart=always>,所以無需手動重啟docker,不過也可以手動重啟
# 重啟docker
docker restart mymaster

在這里插入圖片描述

四、部署從數據庫

1、建立psql備庫的data地址

以root用戶創建目錄

mkdir -p /usr/local/data

2、啟動docker鏡像

# 一些參數的說明
# docker run 
#     --name <docker_nname>    # 啟動后容器的名稱 
#     --restart=always 					# docker的自動重啟
#     -v <data_address>:/var/lib/postgresql/data		# 數據卷掛載,前面的地址即為第一步創建的地址
#     -e POSTGRES_PASSWORD=<password>	# pgsql的密碼
#     -p <port>:5432				# 端口映射,
#     -d  <image_id>				# 鏡像名或IDdocker run --name mystl -e POSTGRES_PASSWORD=這里是你的密碼 -p 1921:5432 -v /usr/local/data/postgres:/var/lib/postgresql/data -d postgres:14

3、備庫從主庫同步

進入容器

docker exec -it mystl bash
# 刪除原數據
# 注:因為啟動了docker自啟動,刪除文件目錄,會導致容器退出,甚至報錯無法再次進入
# 所以以下兩步【刪除數據,遷移數據】最好快速連續執行
# 也可以直接執行遷移數據的操作,確認報錯是【文件已存在,無法遷移】后,再【刪除】后【遷移】
rm -rf /var/lib/postgresql/data/*
# 遷移主庫數據
pg_basebackup -R -D /var/lib/postgresql/data -P -h 你的主機IP -p 1922 -U replica
# 提示輸入密碼
這一步要快# 出現以下代表數據遷移
26288/26288 kB (100%), 1/1 tablespace
# 退出docker
exit
exit
# 重啟docker容器
docker restart mystl

在這里插入圖片描述
tip:如果刪除之后備庫崩了,可以退出備庫,docker restart mystl重啟docker然后在進入備庫

4、檢查是否同步

# 在從庫的</url/local/data/>存在postgresql.auto.conf文件,自動出現以下內容代表數據創建成功
cat postgresql.auto.confprimary_conninfo = 'user=replica password=123456 channel_binding=prefer host=172.16.23.77 port=10031 sslmode=prefer sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'

在這里插入圖片描述

五、測試主從數據庫

主庫:
在這里插入圖片描述
備庫:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14457.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

#2495. 滑動窗口 /【模板】單調隊列

題目描述 有一個長為 ( n ) 的序列 ( a )&#xff0c;以及一個大小為 ( k ) 的窗口。現在這個窗口從左邊開始向右滑動&#xff0c;每次滑動一個單位&#xff0c;求出每次滑動后窗口中的最大值和最小值。例如&#xff1a; 數組是 ([1, 3, -1, -3, 5, 3, 6, 7])&#xff0c; ( …

【深度強化學習】關于同一設備上cuda和gpu計算結果不一致問題

文章目錄 問題描述關于seed: 跟原文一致補充:萬能seed 問題結論cpu和gpu差異來源分析浮點數精度的差異補充報錯&#xff1a;Expected all tensors to be on the same device&#xff01;常見運算上的差異累加運算的差異exp運算的差異matmul運算的差異 forward上的差異&#xff…

【LeetCode 隨筆】面試經典 150 題【中等+困難】持續更新中。。。

文章目錄 189. 輪轉數組122. 買賣股票的最佳時機 II55. 跳躍游戲45. 跳躍游戲 II274. H 指數 &#x1f308;你好呀&#xff01;我是 山頂風景獨好 &#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01; &#x1f49d;希望您在這里可以感受到一份輕松…

機器學習云環境搭建

在 https://support.huaweicloud.com/browsertg-obs/obs_03_1003.html 下載對應版本的 OBS Broswer 軟件&#xff0c;如圖&#xff0c;紅框內的為安裝文件&#xff0c;藍色框內的為對應安裝文件的校驗文件&#xff08;無需下載&#xff09; 以 64 位機為例&#xff0c;下載完…

景源暢信電商:抖店需要的成本高嗎?

在數字化時代的浪潮中&#xff0c;短視頻平臺迅速崛起&#xff0c;成為連接用戶與商家的新橋梁。抖音作為其中的佼佼者&#xff0c;不僅改變了人們的娛樂方式&#xff0c;也催生了新型的電商模式——抖店。許多人好奇&#xff0c;入駐這樣一個充滿活力的平臺&#xff0c;需要承…

618知識狂歡,挑本好書,點亮智慧生活!

618精選編程書單&#xff1a;提升你的代碼力 一年一度的618又到啦&#xff01;今年的618就不要亂買啦&#xff0c;衣服買多了會被淘汰&#xff0c;電子產品買多了會過時&#xff0c;零食買多了會增肥&#xff0c;最后怎么看都不劃算。可是如果你購買知識&#xff0c;堅持閱讀&a…

第N2周:Embeddingbag與Embedding詳解

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 | 接輔導、項目定制&#x1f680; 文章來源&#xff1a;K同學的學習圈子 目錄 什么是詞嵌入&#xff1f; Embedding與EmbeddingBag詳解 Embedding Embeddi…

代碼隨想錄算法訓練營第十七天|LeetCode110 平衡二叉樹、LeetCode257 二叉樹的所有路徑

題1&#xff1a; 指路&#xff1a;LeetCode110 平衡二叉樹 思路與代碼&#xff1a; 左右子樹的高度差小于等于1。對于這個題&#xff0c;遞歸比迭代方便太多&#xff0c;我也想過迭代&#xff0c;但是我沒有寫出來&#xff0c;大家可以自己試一下。遞歸代碼如下&#xff1a;…

如何為ChatGPT編寫有效的提示詞:軟件開發者的指南

作為一名軟件開發者&#xff0c;特別是使用Vue進行開發的開發者&#xff0c;與ChatGPT等AI助手高效互動&#xff0c;可以極大地提升你的開發效率。本文將深入探討如何編寫有效的提示詞&#xff0c;以便從ChatGPT中獲取有用的信息和幫助。 1. 明確目標 在編寫提示詞之前&#…

后端之路第二站(正片)——SprintBoot之:分層解耦

很抽象&#xff0c;我自己也不好理解&#xff0c;僅作為一個前端轉后端的個人理解 一、先解釋一個案例&#xff0c;以這個案例來分析“三層架構” 這里我先解釋一下黑馬程序員里的這個案例&#xff0c;兄弟們看視頻的可以跳過這節課&#xff1a;Day05-08. 請求響應-響應-案例_…

【webrtc】m98:Call的創建及Call對音頻接收處理

call中多個流共享相同的輔助組件 這幾個是與外部共用的 線程傳輸send控制module 線程任務隊列工廠call的輔助組件中各種統計以及接收測的cc是自己創建的 call自己的多個輔助組件是外部傳遞來的 call 創建多個接收流 這里用一個set 來保存所有指針,并沒有要map的意思:

【因果推斷從入門到精通二】隨機實驗3

目錄 檢驗無因果效應假說 硬幣投擲的特殊性何在&#xff1f; 檢驗無因果效應假說 無因果效應假說認為&#xff0c;有些人存活&#xff0c;有些人死亡&#xff0c;但接受mAb114治療而不是ZMapp與此無關。在174例接受mAb14治療的患者中&#xff0c;113/17464.9%存活了28天&…

【MySQL精通之路】InnoDB(6)-磁盤結構

主要博客&#xff1a; 【MySQL精通之路】InnoDB存儲引擎-CSDN博客 1 表 2 索引 【MySQL精通之路】InnoDB(6)-磁盤結構(2)-索引-CSDN博客 3 表空間 【MySQL精通之路】InnoDB(6)-磁盤結構(3)-表空間-CSDN博客 4 雙寫緩沖區 【MySQL精通之路】InnoDB(6)-磁盤結構(4)-雙寫緩沖…

修改MySQL root用戶密碼

ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘new_password’; ALTER USER ‘root’‘%’ IDENTIFIED BY ‘new_password’; 》 SET GLOBAL read_only OFF; select * from mysql.user;

Java入門基礎學習筆記47——ArrayList

什么是集合呢&#xff1f; 集合是一種容器&#xff0c;用來裝數據的&#xff0c;類似數組。 有數組&#xff0c;為什么還要學習集合呢&#xff1f; 數組定義完成并啟動后&#xff0c;長度就固定了。 而集合是大小可變&#xff0c;開發中用的最多的。 集合的特點&#xff1a;大…

匯聚榮科技有限公司優點有哪些?

在當今快速發展的科技時代&#xff0c;企業之間的競爭愈發激烈。作為一家專注于科技創新與研發的公司&#xff0c;匯聚榮科技有限公司憑借其卓越的技術實力和創新能力&#xff0c;在業界樹立了良好的口碑。那么&#xff0c;匯聚榮科技有限公司究竟有哪些優點呢?接下來&#xf…

C++利用TinyXML讀取XML文件

TinyXML是什么&#xff1f; TinyXML是一個輕量級的C XML解析器&#xff0c;它提供了一種簡單的方法來解析和操作XML文檔。TinyXML被設計為易于使用和集成到C項目中&#xff0c;并且非常適合處理小型XML文件。 以下是TinyXML的一些主要特點和優點&#xff1a; 輕量級: T…

OSPF問題

.ospf 選路 域內 --- 1類&#xff0c;2類LSA 域間 --- 3類LSA 域外 --- 5類&#xff0c;7類LSA --- 根據開銷值的計算規則不同&#xff0c;還分為類型1和類型2 ospf 防環機制 區域內防環&#xff1a;在同一OSPF區域內&#xff0c;所有路由器通過交換鏈路狀態通告&#xff…

VUE面試題(3)--vue常見面試題

1.vue優點 低耦合。視圖(View)可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的"View"上,當View變化的時候Model可以不變,當Model變化的時候View也可以不變。 可重用性。你可以把一些視圖邏輯放在一個ViewModel里面,讓很多view重用這段視圖邏輯。 …