Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PostgresSQL 主从搭建步骤

PostgresSQL 主从搭建步骤

作者头像
星哥玩云
发布于 2022-08-13 09:58:59
发布于 2022-08-13 09:58:59
2.6K0
举报
文章被收录于专栏:开源部署开源部署

由于工作需要,最近开始接触各种数据库,并尝试各种数据库产品的高可用方案。今天分享的是postgresSQL的主从配置,其实还是蛮简单的,跟随本文的步骤,保证能实现PG主从的搭建。

1. 安装环境

192.168.0.136 主库 192.168.0.160 从库 PORT: 5432 USR: postgres

2. 主库已经运行一段时间,检查主库的version,保证主从数据库的version相同。

# psql --version psql (PostgreSQL) 9.4.11 # rpm -qa|grep postgres postgresql94-libs-9.4.11-1PGDG.rhel6.x86_64 postgresql94-server-9.4.11-1PGDG.rhel6.x86_64 postgresql94-9.4.11-1PGDG.rhel6.x86_64

3. 在从库上安装相同版本的软件

检查安装情况,已经安装和primary相同的软件版本

# rpm -qa|grep postgres postgresql94-libs-9.4.11-1PGDG.rhel6.x86_64 postgresql94-server-9.4.11-1PGDG.rhel6.x86_64 postgresql94-9.4.11-1PGDG.rhel6.x86_64

4. 查询主库的数据库位置

# su - postgresPGDATA/var/lib/pgsql/9.4/data lsbase    pg_clog      pg_hba.conf    pg_log      pg_multixact pg_replslot  pg_snapshots  pg_stat_tmp  pg_tblspc    PG_VERSION  postgresql.auto.conf  postmaster.opts global  pg_dynshmem  pg_ident.conf   pg_logical  pg_notify    pg_serial    pg_stat      pg_subtrans   pg_twophase  pg_xlog    postgresql.conf      postmaster.pid

确认配置文件位置

postgres=# show config_file;   config_file              -----------------------------------------  /var/lib/pgsql/9.4/data/postgresql.conf

查看数据文件目录

postgres=# show data_directory;     data_directory      -------------------------  /var/lib/pgsql/9.4/data

5. 准备修改主库的参数文件,先查询一下pg_hba.conf已有的参数内容

$ cat pg_hba.conf|grep -v '^#' local  all            all                                    peer host    all            all            0.0.0.0/0            trust host    all            all            ::1/128            ident

6. 在主库的pg_hba.conf中添加

$ more pg_hba.conf host    replication    replica    192.168.0.160                md5

这样,就设置了replica这个用户可以从192.168.0.160 对应的网段进行流复制请求。

7. 在主库给postgres设置密码,登录和备份权限。

$psql postgres# CREATE ROLE replica login replication encrypted password 'replica123'

8. 修改postgresql.conf,注意设置下下面几个地方:

wal_level = hot_standby      # 这个是设置主为wal的主机 max_wal_senders = 10          # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个 wal_keep_segments = 256        # 设置流复制保留的最多的xlog数目 wal_sender_timeout = 60s      # 设置流复制主机发送数据的超时时间 max_connections = 100          # 这个设置要注意下,从库的max_connections必须要大于主库的 archive_mode = on archive_command = 'cp %p /var/lib/pgsql/9.4/archive/%f'

9. 创建对应archive log存放路径

mkdir -p /var/lib/pgsql/9.4/archive/

10. 重启主库,让配置生效

# service postgresql-9.4 start Starting postgresql-9.6 service:                          [  OK  ]

11. 在从库远程连接主数据库,验证replica用户是否可以正常访问

psql -h IP-address -p 5432 dbname usename  psql -h 192.168.0.136 -p 5432 postgres replica

12. 然后在主库做一次基础备份(后面的Hot-standby主要使用data目录下文件):

postgres=# SELECT pg_start_backup('bak20170905'); $tar czvf /var/lib/pgsql/9.4/backups/backup_data.tar.gz.20170905 /var/lib/pgsql/9.4/data postgres=# SELECT pg_stop_backup();

13. 将备份文件sftp到从库,并解压,替换原有的data目录

cd  /var/lib/pgsql/9.4/ mv data data_bk mv backup_data.tar.gz.20170905 backup_data.tar.gz tar -xzvf backup_data.tar.gz

14. 删除一些就的身份信息,归档日志文件

rm -rf data/pg_xlog/ mkdir -p data/pg_xlog/archive_status rm data/postmaster.pid

15. 查找并拷贝recovery.conf.sample文件到data目录下

find / -name recovery.conf.sample /root/postgresql/postgresql-9.2.20/src/backend/access/transam/recovery.conf.sample /usr/pgsql-9.4/share/recovery.conf.sample 复制 cp /usr/pgsql-9.4/share/recovery.conf.sample /var/lib/pgsql/9.4/data/recovery.conf

16. 然后编辑recovery.conf:

standby_mode = on restore_command = 'cp /var/lib/pgsql/9.4/archive/%f %p'  #这个参数,我还需要确认具体含义 primary_conninfo = 'host=192.168.0.136 port=5432 user=replica password=replica123'                      # 主服务器的信息以及连接的用户,这条信息最重要 recovery_target_timeline = 'latest'

17. 拷贝下面配置文件

cp  /var/lib/pgsql/9.4/data.bk/postgresql.conf  /var/lib/pgsql/9.4/data/postgresql.conf cp  /var/lib/pgsql/9.4/data.bk/pg_hba.conf  /var/lib/pgsql/9.4/data/pg_hba.conf

18. 然后编辑pstgresql.conf:

hot_standby = on

19. 启动Hot-Standby:

/usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data --port=5432

20. 验证是否部署成功

在主节点上执行,验证已经成功搭建,说明5.160是从服务器,在接收流,而且是异步流复制。

postgres=# select client_addr,sync_state from pg_stat_replication;  client_addr | sync_state -------------+------------  192.168.0.160 | async

21. 查询更多数据同步信息:

postgres=# select usename,application_name,client_addr,client_port,backend_start,backend_xmin,state,sent_location,write_location,flush_location,replay_location,sync_priority,sync_state  from pg_stat_replication;  usename | application_name | client_addr | client_port |        backend_start        | backend_xmin |  state  | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state ---------+------------------+-------------+-------------+-------------------------------+--------------+-----------+---------------+----------------+----------------+-----------------+---------------+------------  replica | walreceiver      | 192.168.0.160 |      39375 | 2017-09-05 17:49:22.512393+08 |              | streaming |        5/1049488    | 5/1049488        | 5/1049488      |  5/1049488      |            0 |          async

22. 此外,还可以分别在主、从节点上运行 ps aux | grep postgres 来查看进程:

主服务器上,可以看到有一个 wal sender 进程,还有archiver进程等

# ps aux | grep postgres postgres  1104  0.0  0.1 324652 15120 ?        S    14:26  0:00 /usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data                      postgres  1111  0.0  0.0 324652  5844 ?        Ss  14:26  0:00 postgres: wal writer process                              postgres  1113  0.0  0.0 179796  1544 ?        Ss  14:26  0:00 postgres: archiver process  last was 000000010000000500000000.00000060.backup postgres  8515  0.0  0.0 325448  3108 ?        Ss  17:49  0:00 postgres: wal sender process replica 192.168.0.160(39375) streaming 5/103A1D0

从服务器上,可以看到 wal receiver 进程,和recovering进程正在恢复archive log

$ ps aux | grep postgres postgres 11508  0.0  0.1 324684 15128 ?        S    17:49  0:00 /usr/pgsql-9.4/bin/postmaster -D /var/lib/pgsql/9.4/data postgres 11510  0.0  0.0 324796  4336 ?        Ss  17:49  0:00 postgres: startup process  recovering 000000010000000500000001 postgres 11513  0.0  0.0 331892  3700 ?        Ss  17:49  0:00 postgres: wal receiver process  streaming 5/103A1D0

23. 可以在下面路径中,看到从库接收的archive log文件

# pwd /var/lib/pgsql/9.4/data/pg_xlog # ls 000000010000000500000001  000000010000000500000002  archive_status

至此,PostgreSQL主从流复制安装部署完成。

在主服务器上插入数据或删除数据,在从服务器上能看到相应的变化。从服务器上只能查询,不能插入或删除数据。

24. 第12、13、14步骤,可以通过另一种拷贝主库到从库的方法,pg_basebackup命令拷贝文件

pg_basebackup -F p --progress -D /var/lib/pgsql/9.4/data2 -h 192.168.0.136 -p 5432 -U replica --password

进入到/var/lib/pgsql/9.4/data2目录,修改recovery.conf,这个文件可以从pg的安装目录的share文件夹中获取,比如

cp /usr/pgsql-9.6/share/recovery.conf.sample /var/lib/pgsql/9.6/data2/recovery.conf

确保文件夹权限是700,这个很关键,其他权限,不能正常启动

$ chmod 0700 /var/lib/pgsql/9.6/data2

使用下面命令启动standby

$ /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data2

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
在MySQL被收购之后,虽然有其替代品为: MariaDB,但是总感觉心里有点膈应。大家发现了另一款开源的数据库: PostgreSQL。
sanshengshui
2019/09/11
2.5K0
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
WAL has already been removed修复
备节点查看select pg_last_xlog_receive_location();值没有变化,已经不从主节点同步。
DB之路
2021/03/13
4.1K0
postgresql主备配置步骤
rpm -e --nodeps postgresql95-contrib-9.5.3-2PGDG.rhel7.x86_64
felixxue
2022/12/29
1.5K0
PostgreSql 14 主从负载均衡部署
前些天给个环境部署PostgreSQL 主从负载均衡,这里仅仅简单记录一下命令以备后续使用,至于数据库的更多配置请自行根据需求配置.
星哥玩云
2022/06/06
3.6K1
PostgreSQl 12主从流复制及归档配置
上一篇文章说道PostgreSQL 12 的源码部署,这里我们说一下PostgreSQl 12的主从流复制和归档配置。
没有故事的陈师傅
2022/02/09
2.7K0
Postgresql主从复制
Postgresql主从复制 主备数据库启动,备库启动wal_receiver进程,wal进程向主库发送连接请求; 主库收到连接请求后启动wal_sender进程,并与wal_receiver进程建立tcp连接; 备库wal_receiver进程发送最新的wal lsn 给主库; 主库进行lsn 对比,定期向备库发送心跳信息,来确认备库的可用性,并且将没有传递的wal日志文件进行发送,同时调用SyncRepWaitForLSN()函数来获取锁存器,并且等待备库响应;锁存器的释放时机和主备同步模式的选择有
用户7353950
2022/05/11
8960
Postgresql主从复制
CentOS7 postgresql安装与使用
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/80666735
shaonbean
2019/05/26
2.2K0
PostgreSQL主备环境搭建
PG学习初体验--源码安装和简单命令(r8笔记第97天) 记得在2年前写过一篇PostgreSQL的文章,当时处于兴趣,本来想在工作中接一下PG的业务,最后因为各种各样的原因就搁置了。 今天整理了下PostgreSQL的一些基础内容,参考的书是唐成老师的那本《PostgreSQL修炼之道》,有了Oracle和MySQL的基础,看起来会比从零开始要容易一些,总体的感觉,PG功能确实很多很全,功能上像Oracle看齐,技术风格和MySQL很像,在做一些总结的时候,不停的在两个数据库之间来回切换。 关于主备环
jeanron100
2018/03/30
1.9K0
PostgreSQL主备环境搭建
【DB宝60】PG12高可用之1主2从流复制环境搭建及切换测试
PostgreSQL在9.x之后引入了主从的流复制机制,所谓流复制,就是备服务器通过tcp流从主服务器中同步相应的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不必等到WAL文件被填充。
AiDBA宝典
2021/07/29
3.3K0
在Ubuntu 16.04上安装Odoo 11堆栈
Odoo(以前称为OpenERP)是一个由10,000多个开源应用程序组成的自托管套件,可满足各种业务需求,包括CRM,电子商务,会计,库存,销售点和项目管理。这些应用程序都是完全集成的,可以通过Web界面进行安装和访问,从而可以轻松实现公司流程的自动化和管理。
用户1196457
2018/09/05
9.2K0
在Ubuntu 16.04上安装Odoo 11堆栈
进阶数据库系列(十五):PostgreSQL 主从同步原理与实践
在正式介绍 PostgreSQL 主从同步复制 之前,我们先了解一下 PostgreSQL 的预写日志机制(WAL)。
民工哥
2023/08/22
5.5K0
进阶数据库系列(十五):PostgreSQL 主从同步原理与实践
PostgreSQL主备库搭建
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
雪人
2022/10/13
2.7K0
Docker + PostgreSQL 主从环境搭建
环境说明 Docker Ubuntu/CentOS PostgreSQL v10.1 1. 运行PostgreSQL 1.1 主库 docker run --name pgsmaster -p 5500:5432 -e POSTGRES_PASSWORD=pgsmaster -v $(pwd)/pgsmaster:/var/lib/postgresql/data -d postgres 1.2 从库 docker run --name pgsslave -p 5501:5432 -e POS
happyJared
2018/09/20
3K0
Docker + PostgreSQL 主从环境搭建
Postgresql总结几种HA的部署方式
第二步:pg_basebackup -Fp -P -x -D ~/app/data/pg_root21 -l basebackup21
mingjie
2022/05/12
1.6K0
Postgresql总结几种HA的部署方式
【Linux】PostgreSQL 主从模式部署(源码编译方式)
近期,笔者承接了在 Linux 操作系统下部署 PostgreSQL 主从模式的需求,且客户要求必须是非容器化部署。
行者Sun
2024/09/02
4700
【Linux】PostgreSQL 主从模式部署(源码编译方式)
[实时数仓]玩转PostgreSQL主从流复制
PostgreSQL 在 9.0 以后引入了流复制(Streaming Replication)。流复制提供了将 WAL 记录连续发送并应用到从服务器以使其保持最新状态的功能。通过流复制,从服务器不断从主服务器同步相应的数据,同时,从服务器作为主服务器的一个备份。
宇宙无敌暴龙战士之心悦大王
2023/03/21
1.5K0
PostgreSQL主备流复制搭建
Postgresql9开始支持流复制(stream replication),作为pg原生的复制技术,有着很好的性能。本文从几个方面全面介绍pg的流复制技术。
数据库架构之美
2019/12/18
3K0
PostgreSQL主备流复制搭建
【DB宝72】pgpool-II和pgpoolAdmin的使用
但是,之前的文章中没有介绍有关pgpoolAdmin的知识,这款针对pgpool开发的web界面工具,还是比较实用的。
AiDBA宝典
2021/12/17
3.4K0
【DB宝72】pgpool-II和pgpoolAdmin的使用
Postgresql主从复制--物理复制
PostgreSQL支持物理复制(流复制)及逻辑复制2种。通过流复制技术,可以从实例级复制出一个与主库一模一样的实例级的从库。流复制同步方式有同步、异步两种。
俊才
2019/09/26
6.8K0
01 . PostgreSQL简介部署
PostgreSQL简介 简介 PostgreSQL在业内通常也简称PG,是一个关系型数据库管理系统,适用于各种Linux操作系统、Windows、Solaris、BSD和Mac OS X。PostgreSQL遵循BSD许可,是一个开源软件,PostgreSQL作为全球第四大关系型数据库服务,正在以飞快的速度发展,目前已经广泛用在各个行业,PostgreSQL本身具有哪些功能特点,请往下看 # 1. PostgreSQL数据库是目前功能最强大的开源数据库,是架构上和Oracle最接近的开源数据库.它基
iginkgo18
2020/09/27
1.2K0
相关推荐
再不了解PostgreSQL,你就晚了之PostgreSQL主从流复制部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档