博文

PG高可用集群搭建—基于Pgpool-II-4.5.2(二)------配置篇

图片
一 PostgreSQL配置 本例Postgresql安装在/usr/pgsql-16目录,Pgpool-II安装在 /usr/local /pgpool目录。 1 在PostgreSQL主节点(pg1)上设置流复制 # 根据规划,创建归档日志目录,使用postgres用户操作 su - postgres mkdir -p /pgdata/archive # 在主节点初始化数据库,以postgres用户身份执行 /usr/pgsql-16/bin/initdb -D /pgdata # 修改 /pgdata/postgresql.conf文件 listen_addresses = '*' archive_mode = on archive_command = 'test ! -f /pgdata/archive/%f && cp %p /pgdata/archive/%f' max_wal_senders = 10 max_replication_slots = 10 wal_level = replicahot_ standby = on wal_log_hints = on 在主节点启动后,我们将使用Pgpool-II在线恢复(Online Recovery)功能设置从节点。 2 创建相关用户(主节点创建即可) 基于安全考虑,创建repl用户用于流复制,pgpool用户用于流复制延迟检查及Pgpool健康检查。 [postgres@pg1]# psql -U postgres -p 5432 SET password_encryption = ' scram-sha-256 '; CREATE ROLE pgpool WITH LOGIN; CREATE ROLE repl WITH REPLICATION LOGIN; \password pgpool \password repl \password postgres 如果想在show pool_nodes的结果里显示"replication_state"和"replication_sync_state"列,pgpool用户需要有数据库的超级用户权限或者添加到 pg_monitor组...

PG高可用集群搭建—基于Pgpool-II-4.5.2(一)------规划及安装

图片
一、前言 Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件 。 提供了以下功能: 连接池 Pgpool-II保存到PostgreSQL服务器的连接,并在具有相同属性(即用户名、数据库、协议版本)的新连接进入时重新使用它们。 它减少了连接开销,并提高了系统的整体吞吐量。 复制 Pgpool-II可以管理多个PostgreSQL服务器。 使用复制功能可在2个或更多物理磁盘上创建实时备份,以便在磁盘出现故障时无需停服即可继续服务。 负载均衡 如果数据库有多副本,则在任何服务器上执行SELECT查询都将返回相同的结果。 Pgpool-II利用复制功能,通过在多个服务器之间分配SELECT查询来减少每台PostgreSQL服务器上的负载,从而提高系统的整体吞吐量。查询 性能随PostgreSQL服务器数量的增加而成比例提高。 负载均衡在有许多用户同时执行多个查询的情况下工作得最好。 限制过多的连接 与PostgreSQL的并发连接的最大数量是有限制的,连接过多后会被拒绝。 但是,设置最大连接数会增加资源消耗并影响系统性能。 Pgpool-II对最大连接数也有限制,但额外的连接将被排队,而不是立即返回错误。 看门狗 WatchDog可以协调多个Pgpool-II,创建一个健壮的集群系统,避免单点故障或脑裂。 WatchDog可以对其他pgpool-II节点执行健康检查,以检测PgPoll-II的故障。 如果主用Pgpool-II关闭,备用Pgpool-II可以升级为主用,并接管虚拟IP。 查询缓存 查询缓存允许保存SELECT语句及其结果。 如果出现相同的查询,则Pgpool-II将从缓存中返回值。 由于不涉及SQL解析或访问PostgreSQL,因此在内存缓存中使用非常快。 另一方面,在某些情况下,它可能比正常路径慢,因为它增加了存储缓存数据的一些开销。 Pgpool-II使用PostgreSQL的后端和前端协议,并在后端和前端之间转发消息。 因此,数据库应用程序(前端)认为Pgpool-II是实际的PostgreSQL服务器,而服务器(后端)将Pgpool-II视为其客户端之一。 因为Pgpool-II对服务器和客户端都是透明的,所以现有的数据库应用程序 几乎可以在不更改其源代码的情况下与Pgpool-II一起使用。 下...