zoukankan      html  css  js  c++  java
  • 使用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;
    }

    /*

  • 相关阅读:
    Android设备管理器
    Android中读取手机联系人
    PopupWindow
    Activity之间数据的传递
    wpa_supplicant
    nandflash之基本特性
    NAND NOR Flash 和MTD
    mtd-util
    linux 常用命令
    minizip -基于zlib开源代码库
  • 原文地址:https://www.cnblogs.com/songyuejie/p/7054393.html
Copyright © 2011-2022 走看看