切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它
小吴总的鸡汤
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完成主备自动切换,快来盘它相关推荐
- hadoop主节点切换_hadoop2.0 HA的主备自动切换
在<hadoop2.0 QJM方式的HA的配置>一文中介绍了HA的配置,是通过手工进行主备切换的.本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置. ...
- 达梦数据库集群主备节点切换
1.前提条件 (1)集群各节点正常. (2)自动确认监视器集群请确认配置了手动监视器dmmonitor.ini 2.主备集群主节点切换 2.1 打开手动监视器 (1)使用dmdba用户,找到手动监视器 ...
- postgres主备库切换测试
主备库切换常用的有两种方式,第一种是使用触发文件,9.0之前的版本只能使用此种方式切换,第二个是使用命令promote的方式. 切换之前需要查看主备库的角色,查看角色的方式可以参考: https:// ...
- PostgreSQL 之 流复制主备库切换
作者:瀚高PG实验室 (Highgo PG Lab)- 波罗 在主从复制的两个节点中,当主节点数据库服务访问异常的时候后,可以手动通过promote 命令在从节点执行将从节点状态切换到可读写的状态,变 ...
- 物理DG主备库切换时遇到ORA-16139: media recovery required错误
物理DG主备库切换时遇到ORA-16139: media recovery required错误 在物理DG主备库切换时遇到ORA-16139: media recovery required错误 S ...
- 应用程序主备库切换方案
应用程序主备库切换方案 1. 概述 目的:异地容灾库已经搭建完毕,使用Oracle GoldenGate实现主库和备库的数据实时同步.如果主库存储发生故障,应用程序如何快速切换至备库. 主库和备库SC ...
- 数据中心供配电系统主备用电源自动切换探究
上海某数据中心征地250亩,一期建设规模100430㎡,包括1-3#三栋数据中心机房和1-2#两栋油机房.1-2#两栋维护支撑用房.一栋传输机房楼及一栋变电站,装机机架数8743个.一期各建筑用房建设 ...
- 服务器 系统顺利切换 报道,一种实现主备服务器切换的方法及系统
1.一种实现主备服务器切换的系统,其特征在于,至少包括网关,主交换机和备用交换机,与主交换机相连接的一个或一个以上主服务器,与备用交换机相连接的.与各主服务器分别完全镜像的一个或一个以上备用服务器: ...
- 助力核反应堆实时监控,这个国产数据库够“硬核”
为保障核反应堆安全有序运行,控制室操纵员需要通过监控平台持续关注大量仪表数据,对系统可能出现的异常做出快速反应.因此,一个自主.实时.可靠的数据监控平台对保障核反应堆安全至关重要,而监控平台离不开&q ...
最新文章
- Lumen / Laravel 5.5 使用网易邮箱 SMTP 发送邮件
- 算法基础知识科普:8大搜索算法之二叉搜索树(中)
- Python Web实战:Python+Django+MySQL实现基于Web版的增删改查
- 浅谈RTS游戏网络同步:3种同步机制模式的实现
- Kafka分区分配策略(3)——自定义分区分配策略
- Sql语句之select 5种查询
- System.Text.Json 中的 JsonExtensionData
- HDU 3018 Ant Trip(一笔画问题)
- 类worksheet的paste方法无效_英雄档案——类人体
- 虚拟机-Debian服务器配置
- 彻底搞懂遗传算法原理+代码讲解+具体例子
- html5的header标签
- android手机不能发短信,解决安卓手机发送短信失败的方法
- 怎样在ps中制作对话气泡?一招教你轻松解决
- 面试官问了四个问题,总结了4个经验
- orcad的噪声分析
- 自控力读书笔记 第五章	 大脑的弥天大谎:为什么我们误把渴望当幸福?
- 过年各路红包玩法总结,都是上亿的项目!!!
- [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
- python练习 002 斜边上的高
热门文章
- python条件查询 或 in_64.Python中ORM查询条件:in和关联模型
- 优达twitter 清理_云吸狗吸出的啊哈时刻
- mybatis mysql Dao_Dao模式创建mybatis项目过程
- 修改 oracle dbid,更改数据库DBID
- BUUCTF-----actf_2019_babyheap (UAF)
- Python中type()详解:动态创建类
- python实现二叉堆中的大顶堆(大根堆)
- Python+Selenium基本语法
- Python的locals()函数
- 天眼FAST如何发现脉冲星?