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主从复制配置「建议收藏」

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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