使用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 构建容灾高可用集群(数据同步流复制/主备自动切换)

PGPool-II+PG流复制实现HA主备切换

postgresql+pgpool安装文档

Pgpool-II:当断开主节点或备用节点失败时,委托 IP 不可用

centos7下pgsql9.6 搭建基于Pgpool-II的PostgreSQL集群