pgpool-II-3.2.5入门教程

0    2593    6

Tags:

👉 本文共约6869个字,系统预计阅读时间或需26分钟。

pgpool-II 入门教程

欢迎阅读 pgpool-II 入门教程。从本教程中,你将学会如何安装,设置 pgpool-II 以及使用 pgpool-II 运行并行查询和复制。我们假设你已经知道PostgreSQL的基础操作,所以如果有需要,请先参考 PostgreSQL 的文档。

1. 让我们开始吧!

首先,在使用复制和并行查询前,我们必须学习如何安装、配置 pgpool-II 和数据库节点。

1.1. 安装 pgpool-II

安装 pgpool-II 非常简单。在你解压源码 tar 包的目录中,执行以下命令。

configure 脚本收集你的系统信息并用于编译过程。你可以通过传递命令行参数到 configure 脚本来改变它的默认行为,例如安装目录。默认情况下,pgpool-II将安装到 /usr/local 目录。

make 命令编译源码,make install 命令将安装执行文件。你必须对安装目录有写入权限。

在本教材中,我们将安装 pgpool-II 到默认的 /usr/local 目录中。

: pgpool-II 需要 PostgreSQL 7.4 或更高版本(版本 3 的协议)的 libpq 。如果 configure 脚本显示以下的错误信息,则可能是 libpq 库没有被安装或者它不是版本 3 的。

如果是版本 3 的库,但还是显示了以上消息,则你的 libpq 库可能无法被 configure 脚本识别。

configure 脚本会在 /usr/local/pgsql 目录搜索 libpq 库。如果你安装 PostgreSQL 到 /usr/local/pgsql 之外的其他目录,在执行 configure 时,请使用 --with-pgsql ,或者同时使用 --with-pgsql-includedir--with-pgsql-libdir 的命令行选项。

1.2. 配置文件

pgpool-II 的配置参数保存在 pgpool.conf 文件中。文件以每行 “parameter = value” 的格式保存。当你安装 pgpool-II 后, pgpool.conf.sample 被自动建立。我们建议拷贝或者重命名它为 pgpool.conf ,然后你可以随意编辑它。

pgpool-II 默认只接受到 9999 端口的本地连接。如果你希望从其他主机接受连接,请设置 listen_addresses 为 '*'.

建议配置,否则可能会报错如下的错误:

1.3. 配置 PCP 命令

pgpool-II 有一个用于管理功能的接口,用于通过网络获取数据库节点信息、关闭 pgpool-II 等。要使用 PCP 命令,必须进行用户认证。这种认证和 PostgreSQL 的用户认证不同。这需要在 pcp.conf 文件中定义一个用户和密码。在这个文件中,一个用户名和密码成对地出现在每一行中,它们用冒号(:)隔开。密码为用 md5 哈希加密的格式。

在你安装 pgpool-II时, pcp.conf.sample 被自动建立。我们建议复制一份并重命名为 pcp.conf 并且编辑它。

为了加密你的密码为 md5 哈希格式,请使用 pg_md5 命令,它作为 pgpool-II 执行文件套件的一部分被安装。pg_md5 使用一个命令行参数,并显示它的 md5 哈希文本。

例如,使用 “postgres” 作为命令行参数,pg_md5 会显示 md5 哈希的文本到标准输出。

PCP 命令通过网络执行,所以必须在 pgpool.conf 文件中配置 pcp_port 端口。

在本教程中,我们将使用默认的 9898 作为 pcp_port 的参数。

1.4. 准备数据库节点

现在,我们需要设置用于 pgpool-II 的后台 PostgreSQL 服务器了。这些服务器可以与 pgpool-II 在同一台主机上,也可以在独立的主机上。如果你决定将所有服务器都放在同一台主机上,必须为每个服务分配不同的端口。如果服务器被安置在不同的机器上,他们必须被正确以便可以通过网络接受 pgpool-II 的连接。

在本教程中,我们将三台服务器放在与 pgpool-II 相同的机器上,分别给它们分配端口号 5432,5433,5434。要配置 pgpool-II,请如下编辑 pgpool.conf

分别为 backend_hostnamebackend_portbackend_weight 设置节点的主机名,端口号和负载均衡系数。在每个参数串的后面,必须通过添加从0开始(例如 0,1,2,…)的整数来指出节点编号。

backend_weight 参数都为 1 ,这意味着 SELECT 查询被平均分配到三台服务器上。

1.5. 启动/停止 pgpool-II

要启动 pgpool-II,在终端中执行以下命令。

然而,以上的命令不打印日志信息,因为 pgpool 脱离终端了。如果你想显示 pgpool 日志信息,你需要传递 -n 到 pgpool 命令。此时 pgpool-II 作为非守护进程模式运行,也就不会脱离终端了。

日志消息会打印到终端,所以推荐使用如下的选项。

-d 选项启用调试信息生成。

以上命令持续追加日志消息到 /tmp/pgpool.log 中。如果你需要切换日志文件,可以将日志传递到一个支持日志轮换功能的外部命令。例如,你可以使用 Apache2 带的 rotatelogs 工具。

这将生成名称类似于 “pgpool.log.Thursday” 的日志文件,然后在每天午夜 00:00 轮换日志文件。如果日志文件已经存在,rotatelogs 将追加日志到这个文件中。如果想在轮换前删除旧日志文件,你可以使用 cron:

请注意 rotatelogs 在某些发行版中可能存在于 /usr/sbin/rotatelogs2 。-f 选项让 rotatelogs 在启动的时候生成一个日志文件,这个功能随 apache 2.2.9 或更高版本提供。

而且 cronolog 对你可能有用。

要停止 pgpool-II 进程,执行以下的命令。

如果还有客户端连接着, pgpool-II 等待它们断开连接,然后才结束运行。如果你想强制关闭 pgpool-II ,执行以下的命令来代替之前的命令。

2. 你的第一个复制

复制可以让相同的数据拷贝到多个数据库节点。

在本节中,我们将使用三个已经在“1. 让我们开始吧!”小节中设置好了的数据库节点,一步步建立数据库复制系统。用于复制的示例数据将由 pgbench 基准测试程序生成。

2.1. 配置复制

要启用数据库复制功能,需要设置 pgpool.conf 文件中的 replication_mode 为 true 。

replication_mode 被设置为 true,pgpool-II 将发送一份接收到的查询的拷贝到所有的数据库节点。

load_balance_mode 被设置为 true,pgpool-II 将在数据库节点之间分发 SELECT 查询。

在本章中,我们将同时启用 replication_modeload_balance_mode

2.2. 检查复制

要使 pgpool.conf 中的改动生效,必须重启 pgpool-II 。请参考“1.5 启动/停止 pgpool-II”小节。

在配置完 pgpool.conf 且重新启动 pgpool-II 后,让我们试试复制,检查它是否工作正常。

首先,我们需要建立一个用于复制的数据库。我们将给它命名为“bench_replication”。这个数据库需要被建立在所有的节点中。在 pgpool-II 中使用 createdb 命令,数据库将被在所有节点中建立。

然后,使用 -i 选项执行 pgbench。-i 使用预设的表和数据初始化这个数据库。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复