使用pgpool管理数据库集群故障的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pgpool管理数据库集群故障的问题相关的知识,希望对你有一定的参考价值。
pgpool如何选举master角色
在pgpool启动的过程中通过对 pgpoo.conf配置文件中的数据库节点条目信息,对集群中的数据库节点从0开始一个个的遍历,并发送SQL语句“select pg_is_in_recovery();”;根据返回的结构来判断哪个数据库节点是master。
在master节点故障后,其它节点由于没有发生故障切换而没有master节点,通过pgpool提供的端口9999仍然可以连接并提供读 操作,但是不能对为提供写操作。
在故障切换时选择master节点时,也是从配节文件中的顺序便利数据库节点 从中找出可用的数据库节点 作为主节点。
static int get_next_master_node(void)
{
int i;
for (i=0;i<pool_config->backend_desc->num_backends;i++)
{
/*
* Do not use VALID_BACKEND macro in raw mode.
* VALID_BACKEND return true only if the argument is master
* node id. In other words, standby nodes are false. So need
* to check backend status with VALID_BACKEND_RAW.
*/
if (RAW_MODE)
{
if (VALID_BACKEND_RAW(i))
break;
}
else
{
if (VALID_BACKEND(i))
break;
}
}
if (i == pool_config->backend_desc->num_backends)
i = -1;
return i;
}
/*
以上是关于使用pgpool管理数据库集群故障的问题的主要内容,如果未能解决你的问题,请参考以下文章
pgpool-ii4.1.2 高可用集群[主备切换]配置部分
postgresql + pgpool 构建容灾高可用集群(数据同步流复制/主备自动切换)