当前位置: 首页 > news >正文

postgresql16.4 配置 数据库主从

我用的版本是16.4   安装目录是 /usr/local/postgresql

原理:两台先单独安装,都安装成功之后,删除从库的data文件,在从库执行命令将主库的data文件同步过来。

一、前期准备

1、修改内核参数

sudo vim /etc/sysctl.conf

kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536      # 系统最大打开文件描述符数net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 1048576net.core.rmem_max = 1048576net.core.wmem_default = 262144net.core.wmem_max = 262144
sudo sysctl -p

 我用的是两台麒麟 163作为主 133从

cat >>/etc/hosts<<EOF
192.168.1.133 pgmaster
192.168.1.163 pgslave
EOF

在两台上都执行。

我用的是postgresql 16.4 安装

 下载地址 PostgreSQL: File Browser

wget https://ftp.postgresql.org/pub/source/v16.4/postgresql-16.4.tar.gz

下载并解压,我的目录是/opt

安装依赖

yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel      

 单独安装下

yum install libicu-devel  python3-devel -y

二、编译安装 (两台都执行,现在还不主从,单独的两台都安装好,再配置)

我的安装目录是 /usr/local/postgresql

useradd  postgresqlmkdir -p /usr/local/postgresql/datachown -R postgresql:postgresql /usr/local/postgresql
 ./configure --prefix=/usr/local/postgresql --with-python --with-libxml --with-libxslt
make && make install       多核的可以 make -j32 && make install -j32

三、 打开profile文件,添加环境变量

直接追加

tee -a /etc/profile << EOF 
export PGHOME=/usr/local/postgresql
export PGDATA=/usr/local/postgresql/data/
export PATH=/usr/local/postgresql/bin:\$PATH
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$PGHOME/lib/
export PATH=\$PGHOME/bin:\$PATH:\$HOME/bin
EOF

 重新加载环境变量  source /etc/profile 

再次确认目录所属组

chown -R postgresql:postgresql /usr/local/postgresql

四、数据初始化

切换成postgresql用户

 su postgresql 
./bin/initdb   或 /usr/local/postgresql/bin/initdb

 五、配置启动文件

添加启动文件:cp /opt/tool/postgresql-16.4/contrib/start-scripts/linux  /etc/init.d/postgresql

修改/etc/init.d/postgresql文件的

三个变量 路径和用户 postgresql

六、添加开机启动

chmod +x  /etc/init.d/postgresql
chkconfig --add postgresql

启动  /etc/init.d/postgresql start
 

查看 netstat -antp|grep 5432 或 ps -ef | grep postgres

进入data目录   vim postgresql.conf 配置文件

 vim postgresql.conf#修改允许访问的ip地址
listen_addresses = '*'
#端口
port = 5432
#内存大小。可以使用默认值
max_wal_size = 1GB
min_wal_size = 80MB

两个都配置完之后。

七、主pg上配置用户

进入主服务器配置需要同步的用户

进入的安装bin目录,切换到  su postgresql 

./psql postgres

CREATE USER repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD 'repuser';

 \du 查看用户, \l  查看数据库  \q 退出

 host    replication     repuser         pgslave                   md5

重启master主节点
6、验证主节点是否已完成  select pg_is_in_recovery();

 pg_is_in_recovery显示为f,代表着我们的主节点设置完毕了,下面我们开始进行从节点的设置。

八、从配置pg上配置 删除从库的data文件

1、在slave节点中备份master的数据目录

slave节点,需要删除$PGDATA目录的操作,让其重新根据master备份过来

rm -rf $PGDATA

pg_basebackup -Fp --progress -D /opt/data/ -R -h 192.168.1.133 -p5432 -U repuser --passwor

pg_basebackup被用于获得一个正在运行的PostgreSQL数据库集簇的基础备份。
-D directory
将输出写到哪个目录。如果必要,pg_basebackup将创建该目录及任何父目录。
-Fp
把输出写成平面文件,使用和当前数据目录和表空间相同的布局。
-X stream
在备份被创建时通过流复制传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。
-R
--write-recovery-conf
在输出目录中(或者当使用 tar 格式时在基础归档文件中)建立 standby.signal 并附加连接设置到postgresql.auto.conf 来简化设置一个后备服务器。postgresql.auto.conf文件将记录连接设置(如果有)以及pg_basebackup所使用的复制槽,这样流复制后面就会使用相同的设置。
-P
--progress
启用进度报告。
-v
--verbose
启用冗长模式,可以理解为输出备份过程数据。

 

 执行完会 查看postgresql.auto.conf配置文件,检查是否包含了以下配置信息:

刚才用的root同步的,查看权限,权限不队的话, 赋予权限

chown -R postgresql:postgresql ./

 重启 进入从库

主的查看 SELECT * FROM pg_stat_replication;

可以看到,已经有从库信息

http://www.dtcms.com/a/290716.html

相关文章:

  • PyTorch 实现 CIFAR-10 图像分类:从数据预处理到模型训练与评估
  • git bash命令不够完善,想整合msys2该怎么办?
  • 02-UE5蓝图初始的三个节点作用
  • 文娱投资的逆势突破:博派资本的文化旅游综合体战略
  • 阿里云宝塔Linux面板相关操作记录
  • 照片to谷歌地球/奥维地图新增功能:导出 GeoJSON 数据
  • 高级技术【Java】【反射】【注解】【动态代理】
  • c++:父类的析构函数定义为纯虚函数注意事项
  • “专属私有云”或“行业公有云(逻辑隔离的公共云专区)”两种主流部署模式到底有什么区别?政务云不就应该是专属的私有云么?政务云是不是不能混用?
  • 网络编程基础:从 OSI 模型到 TCP/IP 协议族的全面解析
  • 【AI高性能网络解析】第三期:数据快递,海量数据跨广域高效传输技术实践
  • 计算机网络:概述层---计算机网络的组成和功能
  • harbor镜像仓库由原来的v2.11.1版本升级到v2.13.1,数据不丢失
  • Taro 生命周期相关 API 详解
  • HTML整理
  • Lists的分批次操作
  • 安卓第一个项目
  • 信息学奥赛一本通 1576:【例 2】选课 | 洛谷 P2014 [CTSC1997] 选课
  • Netty中CompositeByteBuf的使用
  • 位标志法处理多选字段在数据库中的存储方式 查询效率与扩展性之间的权衡
  • https正向代理 GoProxy
  • 苹果最新系统iOS 17的调试和适配方法 - Xcode 14.3.1 真机调试指南
  • How does Misinformation Affect Large Language ModelBehaviors and Preferences?
  • Spring Boot 集成 RabbitMQ:普通队列、延迟队列与死信队列全解析
  • iOS WebView 调试实战 页面跳转失效与历史记录错乱的排查路径
  • 物流链上的智慧觉醒:Deepoc具身智能如何重塑搬运机器人的“空间思维”
  • 达梦数据库JSON_TABLE使用说明
  • grpc: debug: GRPC_TRACE
  • ESP32开发——基于idf框架使用NVS操作存储设备读写
  • 家庭服务具身智能机器人体系架构