pgpool-II常见错误
持续更新中…
1 pg_hba中的项不匹配
假设您的pgpool集群中有2个节点,您更新了其中一个节点中的pg_hba.conf条目,但忘记在其他节点上应用相同的条目,您会看到如下错误:
psql -d postgres -U postgres -h 127.0.0.1 -p 5432 -c "show pool_nodes" ;
psql: error: could not connect to server: ERROR: unable to read message kind
DETAIL: kind does not match between master(52) slot[1] (45)
解决方案:
- 上面的错误消息很难理解,因为它没有在任何地方说明是pg_hba.conf文件导致的错误.
- 此类错误请检查2个节点中的pg_hba.conf是否完全一致.
2 pgpool流式复制检查错误
2.1 连接参数配置错误
在pgpool.conf文件中,您需要确保具有正确的参数来设置流式传输复制运行状况检查,否则您会看到类似于下面所述的错误:
pgpool find_primary_node: make_persistent_db_connection_noerror failed on node+
解决方案:
请检查以下参数(其中最后一个字符x表示0,1,…台主机):
backend_hostnamex
backend_portx#流复制检查的数据库
sr_check_database
#流复制检查使用的用户,注意此用户为连接至数据库的用户,不能是replication类型的用户
sr_check_user
#流复制检查使用的用户密码
sr_check_password
2.2 pg_hba.conf配置问题
2022-09-22 18:19:18.301: main pid 1304: LOG: find_primary_node: make_persistent_db_connection_noerror failed on node 0
错误原因:检查流复制延迟时,连接数据库失败
解决方案:
检查的配置
sr_check_user = 'postgres'
sr_check_password = ''
sr_check_database = 'test'
psql -h 随机一台数据库主机 -U sr_check_user -d sr_check_database
#然后输入sr_check_password中设置的密码可得到详细的错误信息#示例
psql -h pgser02 -U postgres -d test
示例报告的错误
psql: error: connection to server at "pgser02" (192.168.1.68), port 5432 failed: FATAL: no pg_hba.conf entry for host "192.168.1.67", user "postgres", database "test", no encryption
示例出错的原因是pg_hba.conf不允许postgres用户登录test数据库.只需要重新配置 pg_hba.conf即可
vim ${PGDATA}/pg_hba.conf
修改postgres用户可以本地或本网段登录所有数据库
host all postgres 127.0.0.1/32 trust
host all postgres 192.168.1.0/24 trust
测试
psql -h pgser01 -U postgres -d test -c "\q" && \
psql -h pgser02 -U postgres -d test -c "\q" && \
psql -h pgser03 -U postgres -d test -c "\q" && \
psql -h pgser04 -U postgres -d test -c "\q"
3 SCRAM方法错误
当您使用scram身份验证时,您可能会看到如下错误:
psql: error: could not connect to server: ERROR: failed to authenticate with backend using SCRAM
DETAIL: valid password not found
解决方案:
您需要在pgpool.conf中的pool_passwd参数指定的文件中定义密码
pool_passwd = 'pool_passwd'
pool_passwd文件的创建方法
自Pgpool-II 4.0起支持scram-sha-256、证书和明文密码
su - postgres#将pgpoolkey保存至 ~/.pgpoolkey
echo '123' > ~/.pgpoolkey
chmod 600 ~/.pgpoolkey sudo rm /usr/local/pgpool/etc/pool_passwd
sudo /usr/local/pgpool/bin/pg_enc -m -k ~/.pgpoolkey -u test -pcat /usr/local/pgpool/etc/pool_passwd/usr/local/pgpool/bin/pg_md5 test
4 pgpool_node_id
Pgpool-II 4.1或更早版本,因为需要指定自己的pgpool节点信息和目标pgpool节点信息,因此每个pgpool节点的设置是不同的.
从Pgpool-II 4.2开始,所有主机上的所有配置参数都是相同的.如果启用了监视程序功能,为了区分哪个主机需要创建pgpool_node_id文件.pgpool_node_id文件并指定 pgpool(看门狗)节点号来标识pgpool(看门狗)主机。
必须手动创建pgpool_node_id文件,否则报异常:
FATAL: Pgpool node id file /usr/local/pgpool/etc/pgpool_node_id does not exist
解决方案:创建pgpool_node_id
su postgresvim /usr/local/pgpool/etc/pgpool_node_id
0
cat</usr/local/pgpool/etc/pgpool_node_id
5 Connection refused
ERROR: connection to host "pgser01" failed with error "Connection refused"
解决方案:
pcp进程未启动或正在启动中.
- 请检查pgpool日志,如pcp进程未启动,请检查不能启动的原因.
- 稍等片刻等待pcp进程启动后再执行命令.
6 find_primary_node_repeatedly: waiting for finding a primary node
2022-09-20 14:48:32.393: main pid 9958: LOG: find_primary_node_repeatedly: waiting for finding a primary node
2022-09-20 14:48:32.471: main pid 9958: LOG: find_primary_node: standby node is 1
2022-09-20 14:48:32.473: main pid 9958: LOG: find_primary_node: standby node is 2
解决方案:
可能的原因为启动顺序不正确.查看pgpool.conf中logdir的配置,假设为/pfast,那么执行
rm /pfast/pgpool_status
7 failed to acquire the delegate IP address
2022-09-22 19:09:59.598: watchdog_utility pid 1712: LOG: failed to acquire the delegate IP address
2022-09-22 19:09:59.599: watchdog_utility pid 1712: DETAIL: 'if_up_cmd' failed
2022-09-22 19:09:59.599: watchdog_utility pid 1712: WARNING: watchdog escalation failed to acquire delegate IP
错误原因:添加虚拟ip后执行arping命令,arping在本机执行会发生错误
src\watchdog\wd_if.c
rtn = exec_if_cmd(path, pool_config->arping_cmd); 调用arping失败
int
wd_IP_up(void)
{int rtn = WD_OK;char path[WD_MAX_PATH_LEN];char *command;int i;if (strlen(pool_config->delegate_IP) == 0){ereport(LOG,(errmsg("trying to acquire the delegate IP address, but delegate IP is not configured")));return WD_OK;}command = wd_get_cmd(pool_config->if_up_cmd);if (command){/* If if_up_cmd starts with "/", the setting specified in "if_cmd_path" will be ignored */if (command[0] == '/')snprintf(path, sizeof(path), "%s", command);elsesnprintf(path, sizeof(path), "%s/%s", pool_config->if_cmd_path, command);rtn = exec_if_cmd(path, pool_config->if_up_cmd);pfree(command);}else{ereport(LOG,(errmsg("failed to acquire the delegate IP address"),errdetail("unable to parse the if_up_cmd:\"%s\"", pool_config->if_up_cmd)));return WD_NG;}//添加虚拟ip已经成功if (rtn == WD_OK){command = wd_get_cmd(pool_config->arping_cmd);if (command){/* If arping_cmd starts with "/", the setting specified in "arping_path" will be ignored */if (command[0] == '/')snprintf(path, sizeof(path), "%s", command);elsesnprintf(path, sizeof(path), "%s/%s", pool_config->arping_path, command);rtn = exec_if_cmd(path, pool_config->arping_cmd); //在本机执行arping肯定失败,return的返回值为arping的返回值pfree(command);}else{rtn = WD_NG;ereport(LOG,(errmsg("failed to acquire the delegate IP address"),errdetail("unable to parse the arping_cmd:\"%s\"", pool_config->arping_cmd)));}}if (rtn == WD_OK){for (i = 0; i < WD_TRY_PING_AT_IPUP; i++){if (wd_is_ip_exists(pool_config->delegate_IP) == true)break;ereport(LOG,(errmsg("waiting for the delegate IP address to become active"),errdetail("waiting... count: %d", i + 1)));}if (i >= WD_TRY_PING_AT_IPUP)rtn = WD_NG;}if (rtn == WD_OK)ereport(LOG,(errmsg("successfully acquired the delegate IP:\"%s\"", pool_config->delegate_IP),errdetail("'if_up_cmd' returned with success")));elseereport(LOG,(errmsg("failed to acquire the delegate IP address"),errdetail("'if_up_cmd' failed")));return rtn;
}
解决方案:
忽略这个错误或修改pgpool.conf
将原来的
if_up_cmd = '/usr/bin/sudo /sbin/ip addr add $_IP_$/24 dev ens32 label ens32:0'
if_down_cmd = '/usr/bin/sudo /sbin/ip addr del $_IP_$/24 dev ens32'
修改为
# $_IP_$修改为delegate_IP设置的ip
if_up_cmd = '/usr/bin/sudo /sbin/ip addr add 192.168.1.65/24 dev ens32 label ens32:0'
if_down_cmd = '/usr/bin/sudo /sbin/ip addr del 192.168.1.65/24 dev ens32'
pgpool-II常见错误相关推荐
- quatus ii 常见错误及其改正方法
在QuartusII下进行编译和仿真的时候,会出现一堆warning,有的可以忽略,有的却需要注意,虽然按F1可以了解关于该警告的帮助,但有时候帮助解释的仍然不清楚,大家群策群力,把自己知道和了解的一 ...
- 3-2-1 程序控制结构-while循环结构-多次求解一元二次方程?-while循环常见错误?
3-1-2 多分支结构(Chained)有 一元二次方程 希望程序自动多次计算,然后输入'q'退出循环 注:下一篇正式讲这个 引入while循环结构 while 循环继续条件: 缩进语句块(循环体)[ ...
- MySQL数据库常见错误及解决方案
MySQL数据库常见错误及解决方案 1 MySQL无法重启问题解决Warning: World-writable config file '/etc/my.cnf' is ignored 原因 今天帮 ...
- VB速查大全(数据库、表格及报表编程) ★ VB错误处理,ado常见错误,VB数据类型等,网上有很多教程是错的,强烈建议看此文
■ 学新的编程语言先仔细看该语言案例教程或从入门到精通的书.对具体语句.函数及可使用对象不了解或忘记的,可在该编程语言的"参考手册"中检索. <如果资料为电子书时,即使不知道 ...
- 统计学中I和II类错误
转自:原文转 转自:原文转 假设检验是基于抽样样本来进行结果推断的,而抽样样本只是总体的一小部分,从总体中抽取不同的样本,可能会得出不同的结果,因此我们通常希望抽样样本是一个能够很好地反映总体特征的具 ...
- C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案
C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案 1.前言 2.安 ...
- Golang 要注意的陷阱和常见错误
原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 翻译: Go的50度灰:新Golang开发者要 ...
- Python运行的17个时新手常见错误小结
Python运行的17个时新手常见错误小结 1 发布时间:『 2017-11-04 11:20 』 帖子类别:『人工智能』 阅读次数:8803 (本文『Python运行的17个时新手常见错误 ...
- 极客新闻——16、数据库设计中的5个常见错误
本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 本文作者总结了数据库设计中的5个常见错误,以供开发人员参考. 1.糟糕的预规划 好的数据库是深思熟虑的结果, ...
- 构建微服务时的三大常见错误
来自:分布式实验室 公众号,作者:解博 想在网上挨骂,最简单的方法就是写点关于微服务架构的东西.每个人对微服务都有自己的一套见解:无论我们是赞扬还是批评,总会有人跳出来强调"你错了&qu ...
最新文章
- P vs. NP 五十年:AI正在解决不可解问题
- 方式四:修改模块导入段来拦截API
- ScriptManager同时存在于两个dll中的问题
- python PIL 打开\显示\保存图像
- 分页探究--Filter+JSTL
- oracle怎样避免脑裂的,redis集群怎么防止脑裂
- CAN笔记(3) 错误状态
- py2neo match
- mysql alter例子,mysql alter语句用法实例
- Mysql管理之二进制日志文件的管理
- 怎么制止qq刷屏代码-vbs
- AV1代码学习:av1_encode_strategy、denoise_and_encode、av1_encode函数
- 前端播放m3u8格式视频
- 正式服务器有信号枪吗,吃鸡信号枪正式实装!我朝天开一枪引来了十个挂
- oracle tcp.validnode_checking,使用tcp.validnode_checking允许、限制机器访问数据库
- Js获取图片主色调,近似色,互补色,以及根据图片颜色获取主题配色方案详解、插件。
- 二叉树的遍历(前序、中序、后序、层次)
- OSChina 周二乱弹 ——寡人不是程序员,不去写bug。
- 360开源mysql_奇虎360开源基于Kubernetes管理平台 Wayne
- Python实现基于物品的协同过滤推荐算法构建电影推荐系统
热门文章
- 课后习题7.11 医院内科有A,B,C,D,E,F,G共7位医生,每人在一周内要值一次夜班,排班的要求是: (1)A医生值班日比C医生晚1天; (2)D医生值班日比E医生晚2天; (3)B医生值班日比
- 读《TOWARDS EXPRESSIVE SPEAKING STYLE MODELLING WITH HIERARCHICAL CONTEXT INFORMATION FOR MANDARIN》
- Global Round 16D2. Seating Arrangements (hard version)(模拟,贪心)
- 微信公众号 Markdown 编辑器
- 追光的人beta冲刺总结
- 免费帝国CMS发布插件
- 使用yguard混淆,名字出现超长字符 map=“ooooooooooooooo”
- 【硬见小百科】三极管开关原理与场效应管开关原理
- 小程序顶部自定义标题栏高度自适应
- 锐角三角形的一些结论及证明