PGPool-II master/slave mode using caveat

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:
PGPool-II的master/slave模式类似load balance模式.只不过master/slave是与PGPool-II以外的第三方复制软件结合使用的。(如当前支持的slony和stream replication)
PGPool会将需要复制的SQL发到Master数据库,不需要复制的SQL符合条件的情况下将可能被分发到Slave数据库以达到负载均衡的效果。

以下是Master/Slave mode使用注意事项:
1. 临时表的DDL,DML操作必须在Master库完成(PGPool自动识别),需要注意的是Select(需要给PGPool一个hint),需要加/*NO LOAD BALANCE*/执行前缀在Select之前.
2. replication_mode必须设置为false , master_slave_mode设置为true.
3. master_slave_sub 可以设置为slony或stream . 配置文件模板分别为pgpool.conf.sample-master-slave , pgpool.conf.sample-stream . 默认的设置为slony . 
4. 可以使用white_function_list 和 black_function_list 控制函数在该模式下的使用特性,如下:
    white_function_list : 函数白名单,逗号隔开函数名,在这里的函数被认为不会更新数据库的内容。因此不包含在这个列表中的函数不会被load balance , replication in replication mode,或In master slave mode, such SELECTs are sent to master(primary) only.
    black_function_list  : Specify comma separated function name list, those do update database. SELECTs using functions specified in this list are not load balanced, replicated if in replication mode. In master slave mode, such SELECTs are sent to master(primary) only.
    不可以同时设置white_function_list 与 black_function_list为非空.
5. failover注意事项
    使用master/slave中的stream模式,当primary或standby DOWN机时可以使用failover功能,不需要额外配置detect。通过生产触发文件,可以将standby中的数据库转换为normal模式.
  
  如果计划使用多个standby 节点,强烈建议设置delay_threshold参数.
6. SQL发送到primary或standby的注意事项
    只能发送到primary节点的SQL
        * INSERT, UPDATE, DELETE, COPY FROM, TRUNCATE, CREATE, DROP, ALTER, COMMENT
        * SELECT ... FOR SHARE | UPDATE
        * SELECT in transaction isolation level SERIALIZABLE
        * LOCK command more strict than ROW EXCLUSIVE MODE
        * Some of transaction commands
            o BEGIN READ WRITE, START TRANSACTION READ WRITE
            o SET TRANSACTION READ WRITE, SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE
            o SET transaction_read_only = off 
        * Two phase commit commands: PREPARE TRANSACTION, COMMIT PREPARED, ROLLBACK PREPARED
        * LISTEN, UNLISTEN, NOTIFY
        * VACUUM
        * Some of sequence functions(nextval and setval)
        * Creating large objects 
    可以发送到primary或standby节点的SQL,如果开启了负责均衡,这些类型的SQL将发到STANDBY节点。需要注意,如果设置了delay_threshold,并且复制延时超过这个值那么这些SQL不会发送给该STANDBY。
        * SELECT not listed above
        * COPY TO
        * DECLARE, FETCH, CLOSE
        * SHOW 
     同时发送到primary和standby节点的SQL
        * SET
        * DISCARD
        * DEALLOCATE ALL 
7. 显性的事务中需要注意到事项
    事务启动命令必须发给primary节点(如begin)
    事务启动后紧跟的SELECT语句可以发送给primary或standby节点,
    在事务内的INSERT语句只能发送给PRIMARY节点,并且INSERT后面所有的SELECT也必须发送给PRIMARY节点,因为INSERT之后可能数据已经发生改变,之后的SELECT如果发给STANDBY可能造成结果不一致。直到事务结束所有INSERT之后的SELECT都将发往PRIMARY节点。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
Dubbo Java 应用服务中间件
深入Dubbo异步化:探索AsyncContext的神奇之处
深入Dubbo异步化:探索AsyncContext的神奇之处
356 0
|
消息中间件 存储 网络协议
ZMQ/ZeroMQ简介
ZMQ/ZeroMQ简介
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
机器学习/深度学习 人工智能 自然语言处理
SCoRe: 通过强化学习教导大语言模型进行自我纠错
谷歌研究人员提出了一种名为自我纠错强化学习(SCoRe)的新方法,旨在使大型语言模型(LLMs)能够在无需外部反馈的情况下即时纠正自己的错误。SCoRe通过在线多轮强化学习训练模型,解决了传统自我纠错方法的局限性。实验结果显示,SCoRe在数学问题求解和代码生成任务上显著提升了模型的自我纠错能力,相较于基准模型和其他方法表现出色。此外,SCoRe还可与其他推理优化技术结合,进一步提升模型性能。尽管存在迭代次数限制和计算成本等局限性,SCoRe为未来研究提供了新的方向,有望推动AI系统的自主性和适应性发展。
586 3
|
人工智能 Ubuntu 开发工具
【Ubuntu工具】避坑指南:搞坏一台电脑,终于在Ubuntu系统上成功源码安装了 QT WebEngine 5.15.13
【Ubuntu工具】避坑指南:搞坏一台电脑,终于在Ubuntu系统上成功源码安装了 QT WebEngine 5.15.13
591 0
|
存储 监控 算法
图文结合纯c手写内存池
图文结合纯c手写内存池
154 0
|
Java Maven
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
idea执行maven打包失败:java.lang.TypeNotPresentException: Type org.springframework.boot.maven.RepackageMojo
566 0
|
负载均衡 关系型数据库 PostgreSQL
Pgpool-II实现高可用+读写分离+负载均衡(八)---- 维护工具
Pgpool提供了一些维护工具,用于日常观察Pgpool运行状态、上线、下线节点等操作。主要有:pcp_stop_pgpool,pcp_node_count,pcp_node_info,pcp_health_check_stats,pcp_proc_count,pcp_proc_info,pcp_detach_node,pcp_attach_node,pcp_recovery_node,pcp_promote_node,pcp_pool_status,pcp_watchdog_info,pcp_reload_config
|
传感器 存储 数据采集
谈谈如何管理物联网数据以及数据管理策略
任何物联网体系中都有两个关键组成部分就是是设备和数据。
谈谈如何管理物联网数据以及数据管理策略
|
Java 测试技术 Maven
Maven 打包跳过测试的 5 种方法,应有尽有,还有谁不会!?
Maven 打包跳过测试的 5 种方法,应有尽有,还有谁不会!?