postgresql13主从搭建Ubuntu

 更新时间:2022年11月23日 16:55:37   作者:HttpsWalker  
这篇文章主要为大家介绍了postgresql13主从搭建Ubuntu实现过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

数据库安装基本设置

先安装完数据库以后,安装路径如下:

数据库安装完毕以后,

服务的安装路径为:/usr/lib/postgresql/13/bin/

数据路径为:/var/lib/postgresql/13/main/

配置文件路径为:/etc/postgresql/13/main/

pg_hba.config路径为:/etc/postgresql/13/main/postgresql.conf
# postgres用户密码修改
#修改postgres密码为123456
passwd postgres
#在输入密码的位置输入密码123456
#切换到postgres用户
su - postgres
#修改数据库账号postgres的密码为123456
psql -c "alter user postgres with password '123456';"
exit

设置环境变量

vi /etc/profile
在最后增加
export PGDATA=/var/lib/postgresql/13/main/
export PATH=$PATH:$HOME/bin:$PGDATA:/usr/lib/postgresql/13/bin
保存后,使环境变量立即生效
source /etc/profile

#设置允许远程连接
#编辑postgresql.conf配置文件
vi /etc/postgresql/13/main/postgresql.conf
#增加允许任何用户连接,新增 listen_addresses = '*'
#设置从库复制槽名称为pgstandby1,设置了复制槽名称以后,复制流将由异步变为同步
synchronous_standby_names = 'pgstandby1'
#保存修改
Esc
:wq

#修改配置文件pg_hba.conf,设置访问规则
#编辑pg_hba.conf配置文件
vi /etc/postgresql/13/main/pg_hba.conf
#新增 host all all 0.0.0.0/0 md5 访问规则,并修改加密方式为md5(设置允许任何客户端远程连接)
#新增 host    replication     replica         192.168.31.130/32       trust(设置允许replica用户由主库复制到从库,其中ip为从库的ip)
#保存修改
Esc
:wq

主库创建流复制的用户

su - postgres
psql -c "CREATE ROLE replica login replication encrypted password 'replica'";
exit;
systemctl restart postgresql

至此,主库设置就完成了,介于将来主库、从库会进行提级和降级操作或者主从互换操作,所以建议对从库也进行相同的主库设置

从库设置+从主库进行数据流复制

pg_basebackup -h 192.168.31.129 -D $PGDATA -U replica -P -X stream -R -C -S pgstandby1

其中: 

-h指向主库的ip,

-D指数据从主库复制到从库的路径

-U指用户名,即从库以replica的用户进行流复制

-P表示显示流复制的过程

-X表示复制方式,stream表示以流的方式进行

-R表示创建一个standby.signal文件,该文件作为一个从库的标识文件,存在此文件,则表示从库

-C指定在启动备份之前应创建由--slot选项命名的复制插槽。如果插槽已存在,则会引发错误。即pgstandby1表示插槽的名称。主库、备库指定插槽名称后,流复制为同步复制,否则为异步复制。

从库进行数据流复制之后,重启从库,主从模式正式工作

systemctl restart postgresql

注:Ubuntu上使用仓库安装的postgresql从库启动,必须要使用systemctl重启,无法通过pg_ctl进行。

这时,就可以看到备库服务器上自动生成了standby.signal文件。同时,也看到在$PGDATA路径下,数据库自动帮我们配置了关于流复制的主库的信息:

$ cat $PGDATA/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
#primary_conninfo = 'user=replica passfile=''/var/lib/postgresql/.pgpass'' channel_binding=prefer host=192.168.31.129 port=5432 sslmode=prefer sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
primary_conninfo = 'user=replica host=192.168.31.129 port=5432 application_name=pgstandby1'
primary_slot_name = 'pgstandby1'

查看主从运行状态

主从搭建后,主库运行状态为: ps -ef|grep postgres

可以看到有一个walsender在向从库发送

从库运行状态为:

可以看到有一个walreceiver在接收数据,startup recovering 000000030000000000000030也是从库的标识

通过SQL语句查看主从信息:

select * from pg_stat_replication;
select application_name, client_addr, sync_state from pg_stat_replication;
//查询复制插槽名称
SELECT * FROM pg_replication_slots
//下面这句话是删除pgstandby1复制插槽的语句
select pg_drop_replication_slot('pgstandby1');

主备切换

备->主

#在备库下执行命令
pg_ctl promote

主->备

# 在数据库的数据路径下$PGDATA,新增一个standby.signal文件
touch standby.signal
同时,也看到在$PGDATA路径下,编辑postgresql.auto.conf的主库的信息:
$ vi $PGDATA/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=replica host=192.168.31.130 port=5432 application_name=pgstandby1'
primary_slot_name = 'pgstandby1'
wq
#重启新备库启动
systemctl restart postgresql

以上就是postgresql13主从搭建Ubuntu的详细内容,更多关于postgresql13 主从搭建的资料请关注脚本之家其它相关文章!

相关文章

  • postgresql数据库设置id自增的基本方法举例例子解析

    postgresql数据库设置id自增的基本方法举例例子解析

    这篇文章主要给大家介绍了关于postgresql数据库设置id自增的基本方法举例,文章介绍了在PostgreSQL中实现自增ID的两种方法,分别是使用序列和触发器,序列方法简单直接,而触发器和函数方法则提供了更大的灵活性,需要的朋友可以参考下
    2024-11-11
  • postgresql 12版本搭建及主备部署操作

    postgresql 12版本搭建及主备部署操作

    这篇文章主要介绍了postgresql 12版本搭建及主备部署操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Postgresql限制用户登录错误次数的实例代码

    Postgresql限制用户登录错误次数的实例代码

    这篇文章主要介绍了Postgresql限制用户登录错误次数的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • PostgreSQL教程(十七):客户端命令(1)

    PostgreSQL教程(十七):客户端命令(1)

    这篇文章主要介绍了PostgreSQL教程(十七):客户端命令(1),本文讲解了createdb、dropdb、reindexdb、vacuumdb、createuser、dropuser等命令,需要的朋友可以参考下
    2015-05-05
  • PostgreSQL中Slony-I同步复制部署教程

    PostgreSQL中Slony-I同步复制部署教程

    这篇文章主要给大家介绍了关于PostgreSQL中Slony-I同步复制部署的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PostgreSQL具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • navicat连接postgresql、人大金仓等数据库报错解决办法

    navicat连接postgresql、人大金仓等数据库报错解决办法

    在使用Navicat操作数据库时,遇到数据报错是一个常见的问题,这类问题可能涉及多个方面,下面这篇文章主要给大家介绍了关于navicat连接postgresql、人大金仓等数据库报错的解决办法,需要的朋友可以参考下
    2024-08-08
  • postgresql数据库连接数和状态查询操作

    postgresql数据库连接数和状态查询操作

    这篇文章主要介绍了postgresql数据库连接数和状态查询操作,具有很好的参考价值,对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL 默认隔离级别的设置

    PostgreSQL 默认隔离级别的设置

    PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • postgresql 实现字符串分割字段转列表查询

    postgresql 实现字符串分割字段转列表查询

    这篇文章主要介绍了postgresql 实现字符串分割字段转列表查询,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL数据库配置SSL操作的实现方法

    PostgreSQL数据库配置SSL操作的实现方法

    本文主要介绍了PostgreSQL数据库配置SSL操作,通过开启SSL证书认证的方式加强防护,配合使用防火墙策略白名单方式、增加密码复杂度,感兴趣的可以了解一下
    2025-07-07

最新评论