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.mzph.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…