postgresql主从复制配置「建议收藏」

postgresql主从复制配置「建议收藏」postgresql主从复制是一种高可用解决方案,可以实现读写分离。postgresql主从复制是基于xlog来实现的,主库开启日志功能,从库根据主库xlog来完成数据的同步。主从复需要注意的地方:启动从库之前,不能执行初始化。 启动从库之前,需要通过base_backup从主服务器上同步配置与数据。 启动从库之前,需要对同步之后的配置文件进行修改。 启动从库之前,需要设置一个恢复的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

postgresql主从复制是一种高可用解决方案,可以实现读写分离。postgresql主从复制是基于xlog来实现的,主库开启日志功能,从库根据主库xlog来完成数据的同步。

主从复需要注意的地方:

  • 启动从库之前,不能执行初始化。
  • 启动从库之前,需要通过base_backup从主服务器上同步配置与数据。
  • 启动从库之前,需要对同步之后的配置文件进行修改。
  • 启动从库之前,需要设置一个恢复的配置文件。
  • 从库只能读,不能写。

下面介绍主从复制的实现,这里以两台虚拟机为例,主节点IP是192.168.56.201,从节点IP是192.168.56.202,这里两台机器都是通过源码编译安装的方式安装的postgresql,版本是11.4。编译安装指定的前缀是/usr/local,因此安装完成,可执行程序会在/usr/local/bin目录下。

postgresql主从复制配置「建议收藏」

首先需要在主库上初始化数据库,并启动数据库服务。  

启动的时候,不能以root用户来启动。

postgresql主从复制配置「建议收藏」

编译安装不会创建postgres用户,因此我们需要先创建postgres用户和用户组。 我们会将postgresql数据存储路径设置在/home/postgres/data下。

groupadd postgres
useradd -g postgres postgres

切换用户,然后初始化数据库。

postgresql主从复制配置「建议收藏」

初始化成功之后,会有个提示,如何启动数据库,按照提示命令,我们启动数据库。

/usr/local/bin/pg_ctl -D /home/postgres/data -l logfile start

postgresql主从复制配置「建议收藏」

这里启动数据库之后,我们登陆数据库,做两件事情:准备一些数据,将来从节点同步之后,用来做数据验证。创建一个admin/123456的用户,用来做主从复制。

postgresql主从复制配置「建议收藏」

这样在主库上的操作就完成了,接下来就是修改配置文件,然后重启主库。

修改pg_hba.conf,增加刚才创建的用户到文件末尾,method指定为md5,表示密码开启md5验证。

postgresql主从复制配置「建议收藏」

修改postgresql.conf,开启注释,并修改以下配置:

listen_addresses=”*”
wal_level=hot_standby
max_wal_senders=2
wal_keep_segments=64
max_connections=100 

重启主库,至此,完成主库的所有准备工作:

postgresql主从复制配置「建议收藏」

/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

下面就是配置和启动从库了,前面注意事项里面提到,不能初始化从库,因为我们需要首先从主库备份数据,备份之后,从库的/home/postgres/data里面的数据和配置信息就和主库一致了。

首先从库也需要postgres/postgres用户组和用户,先创建:

groupadd postgres
useradd -g postgres postgres
 

之后,切换到postgres用户,进行数据备份和启动操作。

首先是利用base_backup命令进行备份:

/usr/local/bin/pg_basebackup -h 192.168.56.201 -p 5432 -U admin -F p -P -D /home/postgres/data 

postgresql主从复制配置「建议收藏」

因为是从库访问,而且是用的admin用户,因此需要输入密码。这里显示备份成功。

因为配置postgresql.conf是从主库同步过来的,这里需要修改一些配置,改为从库的配置:

#wal_level=hot_standby                      #从库不需要这个配置
#max_wal_senders=2                         #同上
#wal_keep_segments=64                   #同上
hot_standby=on                                  #开启hot_standby模式
max_standby_streaming_delay=30s  #可选,流复制最大延迟
wal_receiver_status_interval=10s       #可选,向主库报告状态的最大间隔时间
hot_standby_feedback=on                  #可选,查询冲突时向主库反馈
max_connections=1000                      #最大连接数一般大于主库就行 

还需要准备一个恢复配置文件,这个文件在安装postgresql时,会生成到/usr/local/share/postgresql目录下,名字是recovery.conf.sample。我们复制并修改名称为recovery.conf并放置在/home/postgres/data目录下,修改配置:

recovery_target_timeline = ‘latest’
standby_mode = on
primary_conninfo = ‘host=192.168.56.201 port=5432 user=admin password=123456’ 

这三个配置很直观,recovery_target_timeline=’latest’表示恢复最新的数据,standby_mode表示从节点的角色是备选,primay_conninfo表示主库连接信息。

至此,从库的配置工作准备完成,接着就可以启动数据库了。

postgresql主从复制配置「建议收藏」

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

主从复制到此就配置完成了,接下来就是验证阶段:

1、从主从机器运行的进程验证:

postgresql主从复制配置「建议收藏」

主节点服务器会增加一个walsender进程

postgresql主从复制配置「建议收藏」

从节点服务器增加一个walreceiver进程 

 2、从数据上验证:

postgresql主从复制配置「建议收藏」

主库在首次启动的时候,没有做主从配置之前,就插入了4条记录在test数据库xx_user表中。如今再次插入一条数据,也显示成功,查询会显示5条记录。 

postgresql主从复制配置「建议收藏」

从库在首次启动之后,数据是从主库备份过来的,第一次进入查找就有4条记录。等主库插入一条记录之后,再次查看是5条记录,从库数据均同步成功,表示主从复制配置正确。

最后我们在从库中做插入操作,显示操作失败,因为从库是只读的,不能做增删改的写操作,只能查询。

3、这里可以从/usr/local/bin/pg_controldata /home/postgres/data命令的结果状态中可以验证,主从关系,主库的集群状态是in production,从库是in archive recovery,当我们的主库崩溃,我们可以切换从库为主库。这时候主库状态是shut down,而从库是in production。这里我们模拟停掉主库。

pg_ctl stop -m fast

马上在从库上切换从库为主库:

pg_ctl promote

这里显示了从库的状态由in archive recovery 变为in production的截图:

正常从库的状态:

postgresql主从复制配置「建议收藏」

主库shutdown,从库执行切换主库操作之后: 

postgresql主从复制配置「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170336.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intrllijidea 永久激活码_在线激活

    (intrllijidea 永久激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWN…

    2022年3月21日
    95
  • Zabbix3.0版报警设置

    Zabbix3.0版报警设置

    2022年4月3日
    45
  • linux将目录移动到指定目录下_shell获取文件所在路径

    linux将目录移动到指定目录下_shell获取文件所在路径摘要腾兴网为您分享:第七应用,flash29,信息来电闪光灯,优惠购,实况足球2018,汕大附一,同学聚会简单通知书,cajviewer,惠普deskjet1010,英魂之刃,运动世界,建行大学,爱奇艺会员,sketchup渲染器,电脑尺子,中俄边境游,山东政务服务网等知识经验教程,欢迎大家关注腾兴网。linux系统下,用户根据需求来进行各项操作,有小伙伴想移动文件,操作起来不大容易,linux…

    2022年10月5日
    0
  • offsetHeight,clientHeight,scrollHeight区别

    offsetHeight,clientHeight,scrollHeight区别介绍offsetHeight,clientHeight,scrollHeight的区别,offsetWidth,clientWidth,scrollWidth于此类似。offsetHeight:元素的高度+padding+scrollHeight+border。clientHeight:元素的视口高度,指元素的顶部内边框到底部内边框的距离(无滚动条)或顶部内边框到底部滚…

    2022年7月23日
    7
  • 删除链表倒数第n个节点_单向链表删除倒数第n节点

    删除链表倒数第n个节点_单向链表删除倒数第n节点原题链接给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= s

    2022年8月8日
    3
  • 3D电影的原理_3D电影制作

    3D电影的原理_3D电影制作在搞清楚3D立体原理之前我们先了解什么是“真3D”:我们肉眼所看到的景像是一种具有层次、深度的立体影像。一般我们所谓3D游戏或电影,实际上并非真正的3D;因为屏幕先天即是2D

    2022年8月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号