PGPool-II master/slave mode using caveat

简介:
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节点。
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
关系型数据库 MySQL 数据库
主从同步设置的重要参数log_slave_updates
说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制;在测试的过程中发现了以下问题: 1、M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01); 2、主从同步的时...
1894 0
|
数据库
Master Standby 切换
本文档主要演示GreenPlum数据库的Master节点的Standby在异常后的数据同步及Master节点故障后,Standby的切换。在操作前通过gpstate命令查看Standby的状态是正常的,数据也在同步状态。
703 0
Master Standby 切换
|
MySQL 关系型数据库 RDS
Master-Slave Synchronization for MySQL
MySQL is the world's most popular open-source database.
2866 0
|
存储 关系型数据库 MySQL
|
监控 关系型数据库 MySQL