postgresql 主從配置_Postgresql主從配置

一、簡介

PostgreSql在9.0之后引入了主從的流復制機制,所謂流復制,就是從服務器通過tcp流從主服務器中同步相應的數據。這樣當主服務器數據丟失時從服務器中仍有備份。

與基于文件日志傳送相比,流復制允許保持從服務器更新。 從服務器連接主服務器,其產生的流WAL記錄到從服務器, 而不需要等待主服務器寫完WAL文件(關于Wal可以看看官方的說法https://www.postgresql.org/docs/10/static/different-replication-solutions.html)。

PostgreSQL流復制默認是異步的。在主服務器上提交事務和從服務器上變化可見之間有一個小的延遲,這個延遲遠小于基于文件日志傳送,通常1秒能完成。如果主服務器突然崩潰,可能會有少量數據丟失。

同步復制必須等主服務器和從服務器都寫完WAL后才能提交事務。這樣在一定程度上會增加事務的響應時間。

配置同步復制僅需要一個額外的配置步驟: synchronous_standby_names必須設置為一個非空值。synchronous_commit也必須設置為on。

注: 主從服務器所在節點的系統、環境等最好一致。PostgreSQL版本也最好一致,否則可能會有問題。

二、安裝部署(使用Ubuntu的普通用戶安裝部署)

角色

IP地址

系統版本

數據庫版本

主服務器

192.168.100.71

Ubuntu18.04? amd64

PostgreSQL10

從服務器

192.168.100.70

Ubuntu18.04? amd64

PostgreSQL10

注:18.04版本默認的PostgreSQL版本是10,要安裝其他版本可以采用編譯的方式或者apt-get 指定版本號安裝

1、兩臺服務器都要安裝PostgreSQL

sudo apt-get updatel

sudo apt-get install postgresql

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加或者找到該行,將peer改為trust

local all all trust

重啟PostgreSQL服務

sudo service postgresql restartt

這樣PostgreSQL就安裝完畢

2、配置主服務器

切換成postgres用戶

sudo su – postgres

進入數據庫,創建一個普通的數據庫用戶用戶進行主從同步(只需賦予登錄和復制的權限即可)

postgres=# create role guoxm login replication encrypted password 'guoxm'

然后退出

postgres=# \q

在exit退出到原用戶

然后,修改postgresql的pg_hba.conf,配置運行剛剛創建的guoxm用戶可以進行連接

sudo vi /etc/postgresql/10/main/pg_hba.conf

在文件尾添加如下兩行

host all all 192.168.100.70/32 trust #運行70服務器連接到本機

host replication guoxm 192.168.100.70/32 md5 #運行guoxm用戶在70上復制本機數據

注:第二個的角色必須是replication

最后,再次配置postgresql.conf

sudo vi /etc/postgresql/10/main/ postgresql.conf

這次需要配置的是主機的角色

listen_addresses = ‘*’ #監聽所有ip

archive_mode = on #開啟歸檔模式

archive_command = ‘cp %p /var/lib/postgresql/10/main/%f’ #歸檔命令

wal_level = hot_standby #熱備模式

max_wal_senders = 1 #最多有1個流復制連接

wal_sender_timeout = 60s #流復制超時時間

max_connections = 100 #最大連接時間,必須要小于從庫的配置

保存退出后,重啟數據庫服務

sudo service postgresql restartt

3、配置從服務器

首先,先測試一下是否能連接主服務器

psql -h 192.168.100.70? -U ?postgres

如果可以,說明主機配置正常,否則檢查一下主機的pg_hba.conf配置

進入到postgres用戶

sudo su - postgres

先清空main目錄下的數據(main文件夾就是PostgreSQL數據的存儲文件夾)

rm -rf 10/main/*

或者

rm -rf /var/lib/postgresql/10/main/*

因為PostgreSQL的home目錄就在/var/lib/postgresql中

所以上面兩條命令到達的效果是一樣的

然后,開始從主服務器上copy數據到本機上,這一步叫做“基礎備份”

pg_basebackup -h 192.168.100.71 -U guoxm –D 10/main/ -X stream –P

或者

pg_basebackup -F p --progress -D 10/main/ -h 192.168.100.71 -p 5432 -U?guoxm --password

pg_basebackup是PostgreSQL自帶的基礎備份工具

這樣,基礎備份就完成了

然后,創建recovery.conf用于從庫恢復從主庫獲取的數據

vi recovery.conf

然后編輯如下配置

standby_mode = on #表示該節點是從庫

primary_conninfo = ‘host=192.168.100.71 post=5432 user=guoxm password=guoxm’#從機信息和連接用戶

recovery_target_timelint = ‘latest’ #說明恢復到最新狀態

保持并退出后,

復制或在移動到main文件夾中

cp recovery.conf?? 10/main/

或者

mv recovery.conf?? 10/main/

然后,exit退出到原用戶

最后,配置從機的postgresql.conf文件

sudo vi /etc/postgresql/10/main/postgresql.conf

在文件末尾添加如下配置

wal_level = hot_standby #熱備模式

max_connections = 300 #最大連接時間,必須要小于從庫的配置

hot_standby = on #說明這臺機器不僅用于數據歸檔,還可以用于數據查詢

max_standby_streaming_delay = 30s #流備份的最大延遲時間

wal_receiver_status_interval = 10s #向主機匯報本機狀態的間隔時間

hot_standby_feedback = on #r出現錯誤復制,向主機反饋

保存并退出

到這里,從機配置完成

重啟數據庫服務

sudo service postgresql restart

4、驗證主從配置是否成功

在主機上,切換到postgres用戶

sudo su – postgres

進入數據庫

執行如下查詢

select client_addr,sync_state from pg_stat_replication;

如果看到如下查詢結果

說明192.168.100.70是從服務器,在接收流,而且是異步流復制。說明主從配置成功

注:必須切換到postgres用戶下進行查詢

此外,還可以查看相關進程來驗證是否配置成功

在主機、從機上分別執行

ps aux | grep postgres

主機上可以看到正在向從機發送數據流

從機上可以看到正在接收數據流

到此,主從配置完成;

參考鏈接:

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

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

相關文章

FFmpeg源代碼簡單分析-編碼-av_write_trailer()

參考鏈接: FFmpeg源代碼簡單分析:av_write_trailer()_雷霄驊的博客-CSDN博客_av_malloc av_write_trailer() av_write_trailer()用于輸出文件尾,它的聲明位于libavformat\avformat.h,如下所示 /*** Write the stream trailer to…

科沃斯掃地機器人風扇模塊_掃地機器人不能開機,不能關機,風扇不轉

家庭的重要性自不必再細說,而小編今天要說的則是家庭環境的重要性。一般家庭最少居住三口人,兩個大人加一個孩子,每天回到家,看到家里整潔舒適的環境,心情該是多么地愜意。要是我們每天下班回到家中,看到滿…

MySQL關鍵字EXPLAIN的用法及其案例

文章目錄概述EXPLAIN輸出的列的解釋實例說明select_type的說明UNIONDEPENDENT UNION與DEPENDENT SUBQUERYSUBQUERYDERIVEDtype的說明system,consteq_refrefref_or_nullindex_mergeunique_subqueryindex_subqueryrangeindexALLextra的說明DistinctNot existsRange ch…

FFmpeg源代碼簡單分析-其他-日志輸出系統(av_log()等)

參考鏈接 FFmpeg源代碼簡單分析:日志輸出系統(av_log()等)_雷霄驊的博客-CSDN博客_ffmpeg源碼分析 日志輸出系統(av_log()等) 本文分析一下FFmpeg的日志(Log)輸出系統的源代碼。日志輸出部分的…

FFmpeg源代碼簡單分析-其他-AVClass和AVoption

參考鏈接 FFmpeg源代碼簡單分析:結構體成員管理系統-AVClass_雷霄驊的博客-CSDN博客FFmpeg源代碼簡單分析:結構體成員管理系統-AVOption_雷霄驊的博客-CSDN博客 概述 AVOption用于在FFmpeg中描述結構體中的成員變量。它最主要的作用可以概括為兩個字&a…

oracle手工收集awr報告_oracle手工生成AWR報告方法記錄-阿里云開發者社區

AWR(Automatic Workload Repository)報告是我們進行日常數據庫性能評定、問題SQL發現的重要手段。熟練掌握AWR報告,是做好開發、運維DBA工作的重要基本功。AWR報告的原理是基于Oracle數據庫的定時鏡像功能。默認情況下,Oracle數據庫后臺進程會以一定間隔…

IntelliJ IDEA 默認快捷鍵大全

文章目錄Remember these ShortcutsGeneralDebuggingSearch / ReplaceEditingRefactoringNavigationCompile and RunUsage SearchVCS / Local HistoryLive Templates參考資料Remember these Shortcuts 常用功能快捷鍵備注●Smart code completionCtrl Shift Space-●Search e…

python爬蟲的數據如何解決亂碼_寫爬蟲時如何解決網頁亂碼問題

實戰講解,文章較長,對爬蟲比較熟悉的瀏覽翻看章節 2.3 獲取新聞文本內容。寫爬蟲時經常對網址發起請求,結果返回的html數據除了標簽能看懂,其他的全部是亂碼。大家如果對爬蟲感興趣,請耐心閱讀本文,我們就以…

FFmpeg源代碼簡單分析-其他-libswscale的sws_getContext()

參考鏈接 FFmpeg源代碼簡單分析:libswscale的sws_getContext()_雷霄驊的博客-CSDN博客 libswscale的sws_getContext() FFmpeg中類庫libswsscale用于圖像處理(縮放,YUV/RGB格式轉換)libswscale是一個主要用于處理圖片像素數據的類…

IntelliJ IDEA 學習筆記

IDEA教學視頻 文章目錄1.IntelliJ IDEA的介紹和優勢IDEA 的主要優勢2.版本介紹與安裝前的準備3.IDEA的卸載4.IDEA的安裝5.安裝目錄和設置目錄結構的說明安裝目錄設置目錄6.啟動IDEA并執行HelloWorld7.Module的使用8.IDEA的常用設置9.快捷鍵的設置10.常用的快捷鍵的使用111.常用…

機器學習頂刊文獻_人工智能頂刊TPAMI2019最新《多模態機器學習綜述》

原標題:人工智能頂刊TPAMI2019最新《多模態機器學習綜述》來源:專知摘要:”當研究問題或數據集包括多個這樣的模態時,其特征在于多模態。【導讀】人工智能領域最頂級國際期刊IEEE Transactions on Pattern Analysis and Machine I…

Windows上同時運行兩個Tomcat

步驟 1.獲得免安裝包 從Tomcat官網下載免安裝包。 2.解壓復制 解壓并創建兩個副本tomcat1和tomcat2,它們的路徑分別為: tomcat1:C:\tomcat\double\apache-tomcat-7.0.90-8081tomcat2:C:\tomcat\double\apache-tomcat-7.0.90-…

FFmpeg源代碼簡單分析-其他-libswscale的sws_scale()

參考鏈接 FFmpeg源代碼簡單分析:libswscale的sws_scale()_雷霄驊的博客-CSDN博客_bad dst image pointers libswscale的sws_scale() FFmpeg的圖像處理(縮放,YUV/RGB格式轉換)類庫libswsscale中的sws_scale()函數。libswscale是一…

布朗橋python_MATLAB 里面有哪些加快程序運行速度的方法呢,求分享?

挖墳了…睡不著覺當個備忘錄記一下用過的方法吧1. 循環向量化2. 利用函數的矩陣輸入功能批量處理3. 必須用for且費時的地方改成單層parfor,要是循環次數比cpu核數還少反而會拖慢程序4. 非常大的矩陣的運算可以用gpuArray(這個在matlab 深度學習工具箱中深有體會)5. …

FFmpeg源代碼簡單分析-其他-libavdevice的avdevice_register_all()

參考鏈接 FFmpeg源代碼簡單分析:libavdevice的avdevice_register_all()_雷霄驊的博客-CSDN博客 libavdevice的avdevice_register_all() FFmpeg中libavdevice注冊設備的函數avdevice_register_all()。avdevice_register_all()在編程中的使用示例可以參考文章&#…

Tomcat無需輸入項目名,直接用域名訪問項目

問題 在Tomcat上開發Web應用,通常是將應用放置Tomcat主目錄下webapps,然后在瀏覽器地址欄輸入域名應用名(如http://localhost:8080/app)對應用進行訪問。 為了方便開發,打算直接用域名訪問項目。例如,在瀏…

藍牙該串口設備不存在或已被占用_電腦識別不了串口設備如何解決_電腦檢測不到串口怎么辦...

2015-09-07 10:46:45win8.1系統USB轉串口不能識別設備出現錯誤代碼10的解決方法分享給大家,win8.1系統插入USB設備提示“指定不存在的設備”,左下角有小黃色感嘆號,導致設備無法識別不能識別...2016-12-02 10:52:57一般情況下,win…

FFmpeg源代碼簡單分析-其他-libavdevice的gdigrab

參考鏈接 FFmpeg源代碼簡單分析:libavdevice的gdigrab_雷霄驊的博客-CSDN博客_gdigrab libavdevice的gdigrab GDIGrab用于在Windows下屏幕錄像(抓屏)gdigrab的源代碼位于libavdevice\gdigrab.c。關鍵函數的調用關系圖如下圖所示。圖中綠色背…

分區和分片的區別_PHP: 分區和分片 - Manual

分區和分片數據庫群組是由于各種各樣的原因建立的,他可以提升處理能力、容忍錯誤,并且提升大量服務器同時工作的的性能。群組有時會組合分區和共享功能,來將大量復雜的任務分拆成更加簡單的任務,更加可控的單元。插件可以支持各種…

Ubuntu安裝GmSSL庫適用于ubuntu18和ubuntu20版本

參考鏈接 編譯與安裝【GmSSL】GmSSL 與 OpenSSL 共存的安裝方法_阿卡基YUAN的博客-CSDN博客_openssl和gmssl在Linux下安裝GmSSL_百里楊的博客-CSDN博客_安裝gmssl ubuntu18操作 需要超級管理員權限本人將下載的安裝包master.zip和安裝的位置都設定在/usr/local下創建文件夾/u…