PostgreSQL Windows 數據庫主從模式 熱同步

1.操作主服務器

1.1修改pg_hba.conf

// 這邊就設置所有用戶,所有ip都可以交互
host    replication     all             0.0.0.0/0               md5

2.2 創建流復制用戶

// 創建流復制用戶replicator
CREATE USER replica REPLICATION LOGIN  PASSWORD 'replica';

2.3 修改postgresql.conf配置文件

// 覆蓋postgresql.conf
# basic
listen_addresses = '*'                	# 監聽所有ip
port = 5432                           	# 端口
max_connections = 1000                	# 最大連接數
superuser_reserved_connections = 10   	# 給超級用戶預留的連接數
shared_buffers = 1GB                  	# 共享內存,一般設置為內存的1/4
wal_buffers = 16MB						# 用于還未寫入磁盤的 WAL 數據的共享內存,一般設置為內存的1/128
work_mem = 16MB                       	# 設置在寫入臨時磁盤文件之前查詢操作(例如排序或哈希表)可使用的最大內存容量
maintenance_work_mem = 256MB          	# 在維護性操作(例如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY)中使用的 最大的內存量
timezone = 'Asia/Shanghai'            	# 系統時區
hot_standby = on                      	# 打開熱備# optimizer
default_statistics_target = 500       	# 默認100,ANALYZE在pg_statistic中存儲的信息量,增大該值,會增加ANALYZE的時間,但會讓解釋計劃更精準# wal
max_wal_size = 1GB                    	# 建議與shared_buffers保持一致
min_wal_size = 80MB                   	# 建議max_wal_size/12.5
wal_keep_size = 10240					# 用于指定pg_wal目錄中保存的過去的wal文件(wal 段)的最小數量,以防備用服務器在進行流復制時需要
wal_log_hints = on                    	# 控制WAL日志記錄的方式,建議打開
wal_level = replica                   	# wal日志寫入級別,要使用流復制,必須使用replica或更高級別
wal_sender_timeout = 60s              	# 設置WAL發送者在發送WAL數據時等待主服務器響應的超時時間# archive
archive_mode = on                     	# 
archive_command = 'copy "%p" D:\\PostgreSQL\\"%f"'   # 歸檔存儲位置,自行修改# log 近7天輪詢
log_destination = 'csvlog'            	# 日志格式
logging_collector = on                	# 日志收集器
log_directory = 'pg_log'              	# 日志目錄 $PGDATA/pg_log
log_filename = 'postgresql.%a'        	# 7天日志輪詢
log_file_mode = 0600                  	# 日志文件的權限
log_rotation_size = 0                 	# 日志的最大尺寸,設置為零時將禁用基于大小創建新的日志文件
log_truncate_on_rotation = on         	# 這個參數將導致PostgreSQL截斷(覆蓋而不是追加)任何已有的同名日志文件
log_min_duration_statement = 0        	# 如果語句運行至少指定的時間量,將導致記錄每一個這種完成的語句的持續時間
log_duration = on                     	# 每一個完成的語句的持續時間被記錄
log_lock_waits = on                   	# 控制當一個會話為獲得一個鎖等到超過deadlock_timeout時,是否要產生一個日志消息
log_statement = 'mod'                 	# 控制哪些 SQL 語句被記錄。有效值是 none (off)、ddl、mod和 all(所有語句)。ddl記錄所有數據定義語句,例如CREATE、ALTER和 DROP語句。mod記錄所有ddl語句,外加數據修改語句例如INSERT, UPDATE、DELETE、TRUNCATE, 和COPY FROM
log_timezone = 'Asia/Shanghai'        	# 設置在服務器日志中寫入的時間戳的時區# sql
statement_timeout = 300000            	# 語句執行超時時間 5分鐘
idle_in_transaction_session_timeout = 300000   # 事務空閑超時時間 5分鐘
idle_session_timeout = 1800000        	# 會話空閑超時時間 30分鐘
lock_timeout = 60000                  	# 等鎖超時時間 1分鐘# 參考
dynamic_shared_memory_type = windows  	# 服務器使用的內存管理方式。可能的值是posix(用于使用 shm_open分配的 POSIX 共享內存)、sysv (用于通過shmget分配的 System V 共享內存)、 windows(用于 Windows 共享內存)、和mmap (使用存儲在數據目錄中的內存映射文件模擬共享內存)。
max_worker_processes = 32			  	# 系統能夠支持的后臺進程的最大數量,默認值為 8。在更改這個值時,考慮也對 max_parallel_workers、max_parallel_maintenance_workers、max_parallel_workers_per_gather 進行調整。
max_parallel_workers_per_gather = 16  	# 設置允許的最大并行查詢數,并行查詢可能消耗比非并行查詢更多的資源,把這個值設置為0將會禁用并行查詢執行,默認值是2。
max_parallel_maintenance_workers = 4  	# 單一工具性命令能夠啟動的最大并行數。當前支持使用并行工作者的工具性命令是 CREATE INDEX,并且只有在構建B-樹索引時才能并行,并且 VACUUM 沒有 FULL選項。并行工作者從由 max_worker_processes 創建的進程池中取出,數量由max_parallel_workers控制,默認值為2。
max_parallel_workers = 32			  	# 設置系統支持的最大并行數量,默認值為8,要注意將這個值設置得大于 max_worker_processes 將不會產生效果,因為并行工作者進程都是從 max_worker_processes 所建立的工作者進程池中取出來的。
max_wal_senders = 6						# 啟動復制進程數量限制,必須大于0
effective_cache_size = 32GB   			# 推薦操作系統物理內存的1/2
default_text_search_config = 'pg_catalog.simple'	# 選擇被那些沒有顯式參數指定配置的文本搜索函數變體使用的文本搜索配置,內建默認值是pg_catalog.simple,但是如果能夠標識一個匹配區域的配置,initdb將用對應于選中的lc_ctype區域的設置初始化配置文件
datestyle = 'iso, ymd'					# 設置日期和時間值的顯示格式,以及解釋有歧義的日期輸入值的規則。由于歷史原因, 這個變量包含兩個獨立的部分:輸出格式聲明(ISO、Postgres、SQL或German)、 輸入/輸出的年/月/日順序(DMY、MDY或YMD)。這些可以被獨立設置或者一起設置。關鍵字Euro和European是DMY的同義詞;關鍵字US、NonEuro和NonEuropean是MDY的同義詞。內建默認值是ISO, MDY,但是initdb將用對應于選中的lc_time區域行為的設置初始化配置文件
random_page_cost = 1.1					# 隨機掃描磁盤的代價,默認是4;SSD等高性能磁盤可以設置小點。
lc_messages = 'Chinese (Simplified)_China.936'		# 設置消息顯示的語言。可接受的值是系統相關的,如果這個變量被設置為空字符串(默認),那么該值將以一種系統相關的方式從服務器的執行環境中繼承。
lc_monetary = 'Chinese (Simplified)_China.936'		# 設置用于格式化貨幣量的區域,例如用to_char函數族。可接受的值是系統相關的,如果這個變量被設置為空字符串(默認),那么該值將以一種系統相關的方式從服務器的執行環境中繼承。
lc_numeric = 'Chinese (Simplified)_China.936'		# 設置用于格式化數字的區域,例如用to_char函數族。可接受的值是系統相關的,如果這個變量被設置為空字符串(默認),那么該值將以一種系統相關的方式從服務器的執行環境中繼承。
lc_time = 'Chinese (Simplified)_China.936'			# 設置用于格式化日期和時間的區域,例如用to_char函數族。可接受的值是系統相關的,如果這個變量被設置為空字符串(默認),那么該值將以一種系統相關的方式從服務器的執行環境中繼承。

2.4 創建歸檔存儲位置

根據上方archive_command參數,創建歸檔存儲文件夾

2.5 重啟Pg15服務

3 操作從服務器

3.1 復制data文件夾,備份

3.2 刪除data文件夾

3.2 運行命令獲取主庫的data

// 運行命令 ip為主庫ip -D 復制的位置, 運行命令,輸入之前創建用戶的密碼
pg_basebackup -h 192.168.1.1 -p 5432 -U replica -D "D:\PostgreSQL\data" -p 5432 --wal-method=stream

3.3 修改postgresql.conf

由于之前從主服務器復制過來了配置文件,所以不需要修改很多

// 添加命令 主庫的連接用戶
primary_conninfo = 'host=192.168.1.1 port=5432 user=replica password=replica' #主庫信息

3.4 data文件夾創建文件standby.signal

// 添加命令 主庫的連接用戶
standby_mode = on #on為從庫
primary_conninfo = 'host=192.168.1.1 port=5432 user=replica password=replica' #主庫信息
recovery_target_timeline = 'latest' #流復制同步最新數據

3.5 重啟從庫

4 測試是否成功

主從庫查詢:主庫是f代表false ;備庫是t,代表trueselect pg_is_in_recovery();
主庫查詢復制狀態:select * from pg_stat_replication;
從庫查詢wal日志接收狀態:select * from pg_stat_wal_receiver;
從庫是否同步select client_addr,sync_state from pg_stat_replication;

5 主備切換

原主庫操作
1 停止主庫
2 添加standby.signal文件,并根據3.3,3.4配置參數
3 重啟
原備庫操作
1 停止備庫
2 刪除standby.signal,刪除postgresql.conf文件中的3.3操作
3 重啟

PS: 如果啟動失敗則用 pg_ctl 啟動從庫(cmd 切到 pgsql/bin 目錄下) 然后去看log報錯原因
	-D pg_basebackup 執行的復制位置pg_ctl -D "D:\PostgreSQL\data" start		

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

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

相關文章

邏輯回歸(頭歌)

第1關:邏輯回歸算法大體思想 #encodingutf8import numpy as np#sigmoid函數 def sigmoid(t):#輸入:負無窮到正無窮的實數#輸出:轉換后的概率值#********** Begin **********#result 1.0 / (1 np.exp(-t))#********** End **********#retur…

43、Flink 的 Window Join 詳解

1.Window Join a)概述 Window join 作用在兩個流中有相同 key 且處于相同窗口的元素上,窗口可以通過 window assigner 定義,并且兩個流中的元素都會被用于計算窗口的結果。 兩個流中的元素在組合之后,會被傳遞給用戶定義的 Joi…

外匯天眼:野村證券和Laser Digital與GMO互聯網集團合作發行日元和美元穩定幣

野村控股和Laser Digital將與GMO互聯網集團合作,在日本探索發行日元和美元穩定幣。GMO互聯網集團的美國子公司GMO-Z.com Trust Company, Inc. 在紐約州金融服務部的監管框架下,在以太坊、恒星幣和Solana等主要區塊鏈上發行穩定幣。GMO-Z.com Trust Compa…

MySQL增刪查改進階

數據庫約束表的關系增刪查改 目錄 一.數據庫約束類型 NOT NULL約束類型 UNIQUE 唯一約束 DEFAULT 默認值約束 PRIMARY KEY:主鍵約束 FOREIGN KEY :W外鍵約束 二,查詢 count()兩種用法 sum,avg,max…

Vue3_創建項目

目錄 一、創建vue項目 1.下載vue 2.進入剛才創建的項目 3.安裝依賴 4.運行項目 ?5.打包項目放入生產環境 二、vue項目組成 1.項目文件結構 2.項目重要文件 Vue (發音為 /vju?/,類似 view) 是一款用于構建用戶界面的 JavaScript 框架。它基于標準 HTML、C…

Go語言中實現RSA加解密、簽名驗證算法

隨著互聯網的高速發展,人們對安全的要求也越來越高。密碼學中兩大經典算法,一個是對稱加解密,另一個是非對稱加解密,這里就來分享一下非對稱加密算法的代表:RSA加解密。 在Go語言中實現RSA加解密還是比較簡單的&#…

【安全產品】基于HFish的MySQL蜜罐溯源實驗記錄

MySQL蜜罐對攻擊者機器任意文件讀取 用HFish在3306端口部署MySQL蜜罐 配置讀取文件路徑 攻擊者的mysql客戶端版本為5.7(要求低于8.0) 之后用命令行直連 mysql -h 124.222.136.33 -P 3306 -u root -p 可以看到成功連上蜜罐的3306服務,但進行查詢后會直接lost con…

ai機器人電銷資源有哪些?真的能幫到我們提高效率嗎ai智能語音機器人部署

隨著互聯網科技的發展,各種各樣的科技產物都應用于電銷企業,ai機器人電銷就是其中一個。那么ai機器人電銷可靠嗎?ai機器人電銷資源有哪些?我們一起來看看。 AI機器人在電銷資源方面有以下一些用途和功能: 自動識別潛在…

for循環綁定id,更新html頁面的文字內容

需求&#xff1a;將方法中內容對齊 實現方式 給for循環中每個方法添加一個動態的id在DOM結果渲染完后&#xff0c;更新頁面數據&#xff0c;否則會報錯&#xff0c;找不到對應節點或對應節點為空 <view v-for"(item, index) in itemList" :key"index"…

OWASP十大API漏洞解析:如何抵御Bot攻擊?

新型數字經濟中&#xff0c;API是物聯網設備、Web和移動應用以及業務合作伙伴流程的入口點。然而&#xff0c;API也是犯罪分子的前門&#xff0c;許多人依靠Bot來發動攻擊。對于安全團隊來說&#xff0c;保護API并緩解Bot攻擊至關重要。那么Bot在API攻擊中處于怎樣的地位&#…

香橙派Kunpeng Pro測評

目錄 香橙派Kunpeng Pro開發板試用體驗 觀察理解與適用場景 體驗步驟 試用感受

【ARM+Codesys案例】T3/RK3568/樹莓派+Codesys枕式包裝機運動控制器

枕式包裝機是一種包裝能力非常強&#xff0c;且能適合多種規格用于食品和非食品包裝的連續式包裝機。它不但能用于無商標包裝材料的包裝&#xff0c;而且能夠使用預先印有商標圖案的卷筒材料進行高速包裝。同時&#xff0c;具有穩定性高、生產效率高&#xff0c;適合連續包裝、…

C語言 數組—— 一維數組下標越界問題分析

目錄 數組元素的訪問 一維數組元素的越界訪問 二維數組元素的越界訪問 小結 數組元素的訪問 訪問數組元素時&#xff0c; 下標越界 是大忌&#xff01; ? 編譯器通常不檢查下標越界&#xff0c;導致程序運行時錯誤 ? 下標越界&#xff0c;將訪問數組以外的空間 ? …

pyqt窗體水印

pyqt窗體水印 介紹效果代碼 介紹 給窗體加上水印 效果 代碼 import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtGui import QPainter, QColor, QFont,QPen from PyQt5.QtCore import Qtclass WatermarkedWindow(QMainWindow):def __init__(se…

鴻蒙4.2小版本推出,鴻蒙5.0已經不遠了

上個月&#xff0c;市場上迎來了華為鴻蒙系統4字開頭的小升級&#xff0c;版本來到了4.2版本。 我們先來看看4.2版本都給用戶帶來哪些特色&#xff1a; 界面切換更流暢&#xff1a;無論是響應速度還是操作手感&#xff0c;用戶都將感受到更加迅速和順滑的體驗 搜星速度的顯著…

工具:Visual Studio Code

一、VSCode生成exe 二、在vs中斷點調試 如果沒效果需要安裝如下與unity相連接的插件 三、注釋 1、代碼注釋 注釋和取消都是都是同一個命令&#xff1a;選中代碼&#xff0c;然后按住CtrlShift/ 2、方法或類注釋 /// 四、導航 五、將變量注釋展示到解釋面板 1、直接顯示 [Too…

Git提交時出現Merge branch ‘master‘ of ...之解決方法

最近遇到了一個問題 我是用git提交代碼的時候 分支上 顯示的是merge 意思是 合并代碼了 每次都會 創建一個分支 因為我和另一個小伙伴共同 開發一個項目 所以 小伙伴告訴我 總是創建新的分支 我細細看了一下 測試了一下 我們兩個人 修改不同的文件 同時修改 他提交了 我再提…

pip安裝軟件包提示“沒有那個文件或目錄”問題的處理

文章目錄 一、Python.h&#xff1a;沒有那個文件或目錄二、lber.h&#xff1a;沒有那個文件或目錄 一、Python.h&#xff1a;沒有那個文件或目錄 pip install -I python-ldap3.0.0b1 #異常提示In file included from Modules/LDAPObject.c:3:0:Modules/common.h:9:20: 致命錯…

React hooks - useLayoutEffect

useLayoutEffect 用法區別 用法 useLayoutEffect 和 useEffect 的使用方式很相似&#xff1a; useLayoutEffect 接收一個函數和一個依賴項數組作為參數只有在數組中的依賴項發生改變時才會再次執行副作用函數useLayoutEffect 也可以返回一個清理函數 useEffect(()>{retur…

【NVM】持久內存的架構

1 內存數據持久化 1.1 數據持久化 持久內存系統包含如下關鍵組件&#xff1a;微處理器、連接微處理器內存總線上的持久內存模組&#xff08;Persistent MemoryModule&#xff0c;PMM&#xff09;及持久內存上的非易失性存儲介質。 使用持久內存來實現數據的持久化&#xff0c…