小吴总的鸡汤

postgres作为年度最佳数据库在国内得不到大范围使用真的太可惜了!干巴巴的,麻麻赖赖的,一点都不圆润,怎么办?盘他!

书接上回,为了解决postgres的高可用部署问题,需解决以下几个主要问题

1.主节点和从节点的读写分离2.主节点和从节点的自动主从切换3.主节点和从节点的负载均衡

pgpool因为同时具备连接池,负载平衡,主从节点读写分离,可自动主从切换的特性,被官方推荐为postgres的官方高可用方案,我们在这里推荐使用主备模式。

pgpool各模式对比图

接下来我们将在之前的从服务器进行pgpool的单节点部署。

192.168.1.102(从)

从节点下载及安装pgpool(192.168.1.102)

tar xzvf pgpool-II-4.0.4.tar.gz -C /usr/local/./configure --with-pgsql=/usr/pgsql-9.6/ --prefix=/usr/local/pgpool2#如果出现error: libpq is not installed or libpq is old则执行下句yum install postgresql-devel#编译及安装make && make install#复制配置文件模版cd /usr/local/pgpool2/etccp pgpool.conf.sample pgpool.confcp pool_hba.conf.sample pool_hba.confcp pcp.conf.sample pcp.confmkdir /usr/local/pgpool2/run

配置节点间的免密登录(192.168.1.101/102)

#在每个节点执行su postgresssh-keygen -t rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys#复制公钥到从节点(192.168.1.101)scp ~/.ssh/authorized_keys postgres@192.168.1.102:~/.ssh/#测试免密登录ssh postgres@192.168.1.102#复制公钥到主节点(192.168.1.102)scp ~/.ssh/authorized_keys postgres@192.168.1.101:~/.ssh/#测试免密登录ssh postgres@192.168.1.101

配置pcp.conf(192.168.1.102)

cd /usr/local/pgpool2./bin/pg_md5 123456#复制生成的md5值到pcp文件vi pcp.confpostgres:e10adc3949ba59abbe56e057f20f883e

生成pool_passwd密码认证文件(192.168.1.102)

#使用pg_md5命令生成认证文件/usr/local/pgpool2/bin/pg_md5 -m -u postgres password#查看生成的文件cat etc/pool_passwdpostgres:md5a3556571e93b0d20722ba62be61e8c2d

设置允许远程访问(192.168.1.102)

vi pool_hba.conf追加host all all 0.0.0.0/0 md5

配置主备模式的主要修改点(192.168.1.102)

vi pgpool.conf#允许远程访问listen_addresses = '*'#访问端口port = 9999#主节点配置backend_hostname0 = '192.168.1.101'backend_port0 = 5432backend_weight0 = 1backend_data_directory0 = '/var/lib/pgsql/9.6/data/'backend_flag0 = 'ALLOW_TO_FAILOVER'#从节点配置backend_hostname1 = '192.168.1.102'backend_port1 = 5432backend_weight1 = 1backend_data_directory1 = '/var/lib/pgsql/9.6/data/'backend_flag1 = 'ALLOW_TO_FAILOVER'#开启访问控制enable_pool_hba = onpool_passwd = 'pool_passwd'# 设置连接池的连接数num_init_children = 32# 连接池最大数量,实际允许访问的最大连接数为num_init_children*max_poolmax_pool = 4# pid文件路径pid_file_name = '/usr/local/pgpool2/run/pgpool.pid'#开启负载均衡load_balance_mode = on#开启主备模式master_slave_mode = on#使用流复制模式master_slave_sub_mode = 'stream'#流复制校验设置sr_check_period = 10sr_check_user = 'replica'sr_check_password = 'replica'sr_check_database = 'postgres'delay_threshold = 0#健康检查校验设置health_check_period = 0health_check_timeout = 20health_check_user = 'replica'health_check_password = 'replica'health_check_database = 'postgres'health_check_max_retries = 0health_check_retry_delay = 1connect_timeout = 10000#主节点宕机时主备切换failover_command = '/usr/local/pgpool2/run/failover_stream.sh %H'

启动pgpool及主备验证(192.168.1.102)

cd /usr/local/pgpool2/#启动pgpool开启debug模式并将日志打印到pgpool.log,生产上不建议./bin/pgpool -n -d > pgpool.log 2>&1 启动pgpool并将日志打印到pgpool.log,正常模式./bin/pgpool -n > pgpool.log 2>&1 停止pgpool./bin/pgpool -m f stop#查看节点状况,验证是否一主(primary)和一从(standby)以及状态是否uppsql -p 9999show pool_nodes;

节点状况

测试主备切换

#当前主节点(192.168.1.101)停止数据库,模拟宕机systemctl stop postgresql-9.6#在此查看节点状态,发现原来的从节点变成了primary主节点,原来的主节点状态为downshow pool_nodes

发生了备节点切换为主节点

#修改recovery.confcd /var/lib/pgsql/9.6/data/vi recovery.confstandby_mode = 'on'primary_conninfo = 'host=192.168.1.102 port=5432 user=replica password=replica'trigger_file = 'trigger_file0'recovery_target_timeline = 'latest'#防止主节点积压,缓存未处理的日志restore_command = 'cp %p ../archive/%f'#再次启动原主节点(192.168.1.101)systemctl start postgresql-9.6#使用pcp命令动态添加节点(192.168.1.101)为从节点cd /usr/local/pgpool2/./bin/pcp_attach_node 0#再次查看状态,原主备节点发生了交换psql -p 9999show pool_nodes;

主备发生了切换

达人的回顾总结

在上一篇文章中我们已经实现了postgres的主备集群搭建,有需要的可以进行快速回顾。下一篇我们将涉及pgpool本身集群的搭建

硬核数据库postgres的主备集群搭建,快来盘它

切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它相关推荐

  1. hadoop主节点切换_hadoop2.0 HA的主备自动切换

    在<hadoop2.0 QJM方式的HA的配置>一文中介绍了HA的配置,是通过手工进行主备切换的.本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置. ...

  2. 达梦数据库集群主备节点切换

    1.前提条件 (1)集群各节点正常. (2)自动确认监视器集群请确认配置了手动监视器dmmonitor.ini 2.主备集群主节点切换 2.1 打开手动监视器 (1)使用dmdba用户,找到手动监视器 ...

  3. postgres主备库切换测试

    主备库切换常用的有两种方式,第一种是使用触发文件,9.0之前的版本只能使用此种方式切换,第二个是使用命令promote的方式. 切换之前需要查看主备库的角色,查看角色的方式可以参考: https:// ...

  4. PostgreSQL 之 流复制主备库切换

    作者:瀚高PG实验室 (Highgo PG Lab)- 波罗 在主从复制的两个节点中,当主节点数据库服务访问异常的时候后,可以手动通过promote 命令在从节点执行将从节点状态切换到可读写的状态,变 ...

  5. 物理DG主备库切换时遇到ORA-16139: media recovery required错误

    物理DG主备库切换时遇到ORA-16139: media recovery required错误 在物理DG主备库切换时遇到ORA-16139: media recovery required错误 S ...

  6. 应用程序主备库切换方案

    应用程序主备库切换方案 1. 概述 目的:异地容灾库已经搭建完毕,使用Oracle GoldenGate实现主库和备库的数据实时同步.如果主库存储发生故障,应用程序如何快速切换至备库. 主库和备库SC ...

  7. 数据中心供配电系统主备用电源自动切换探究

    上海某数据中心征地250亩,一期建设规模100430㎡,包括1-3#三栋数据中心机房和1-2#两栋油机房.1-2#两栋维护支撑用房.一栋传输机房楼及一栋变电站,装机机架数8743个.一期各建筑用房建设 ...

  8. 服务器 系统顺利切换 报道,一种实现主备服务器切换的方法及系统

    1.一种实现主备服务器切换的系统,其特征在于,至少包括网关,主交换机和备用交换机,与主交换机相连接的一个或一个以上主服务器,与备用交换机相连接的.与各主服务器分别完全镜像的一个或一个以上备用服务器: ...

  9. 助力核反应堆实时监控,这个国产数据库够“硬核”

    为保障核反应堆安全有序运行,控制室操纵员需要通过监控平台持续关注大量仪表数据,对系统可能出现的异常做出快速反应.因此,一个自主.实时.可靠的数据监控平台对保障核反应堆安全至关重要,而监控平台离不开&q ...

最新文章

  1. Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件
  2. 算法基础知识科普:8大搜索算法之二叉搜索树(中)
  3. Python Web实战:Python+Django+MySQL实现基于Web版的增删改查
  4. 浅谈RTS游戏网络同步:3种同步机制模式的实现
  5. Kafka分区分配策略(3)——自定义分区分配策略
  6. Sql语句之select 5种查询
  7. System.Text.Json 中的 JsonExtensionData
  8. HDU 3018 Ant Trip(一笔画问题)
  9. 类worksheet的paste方法无效_英雄档案——类人体
  10. 虚拟机-Debian服务器配置
  11. 彻底搞懂遗传算法原理+代码讲解+具体例子
  12. html5的header标签
  13. android手机不能发短信,解决安卓手机发送短信失败的方法
  14. 怎样在ps中制作对话气泡?一招教你轻松解决
  15. 面试官问了四个问题,总结了4个经验
  16. orcad的噪声分析
  17. 自控力读书笔记 第五章 大脑的弥天大谎:为什么我们误把渴望当幸福?
  18. 过年各路红包玩法总结,都是上亿的项目!!!
  19. [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
  20. python练习 002 斜边上的高

热门文章

  1. python条件查询 或 in_64.Python中ORM查询条件:in和关联模型
  2. 优达twitter 清理_云吸狗吸出的啊哈时刻
  3. mybatis mysql Dao_Dao模式创建mybatis项目过程
  4. 修改 oracle dbid,更改数据库DBID
  5. BUUCTF-----actf_2019_babyheap (UAF)
  6. Python中type()详解:动态创建类
  7. python实现二叉堆中的大顶堆(大根堆)
  8. Python+Selenium基本语法
  9. Python的locals()函数
  10. 天眼FAST如何发现脉冲星?