由于 PostgreSQL 主从和 pgpool 部署方式相似,可以在同一篇文章中介绍它们的源码 Ubuntu 部署过程。

  1. 安装依赖

在开始安装 PostgreSQL 和 pgpool 之前,需要先安装一些依赖库:

sudo apt-get update
sudo apt-get install -y build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev libpq-dev libcurl4-gnutls-dev
  1. 安装 PostgreSQL

首先,需要从 PostgreSQL 官网下载源码包。下载链接:https://www.postgresql.org/ftp/source/

选择一个稳定版本的源码包下载下来,比如:

wget https://ftp.postgresql.org/pub/source/v13.2/postgresql-13.2.tar.gz

解压源码包:

tar -zxvf postgresql-13.2.tar.gz

进入解压后的目录:

cd postgresql-13.2

执行以下命令编译和安装:

./configure --prefix=/usr/local/pgsql
make
sudo make install

这里指定了安装路径为 /usr/local/pgsql,可以根据自己的需要修改。

  1. 配置 PostgreSQL

在安装完成后,需要对 PostgreSQL 进行一些配置。首先,需要创建一个 postgres 用户和一个 pgdata 目录:

sudo mkdir /usr/local/pgsql/data
sudo chown postgres /usr/local/pgsql/data
sudo su postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

执行 initdb 命令后,会在 /usr/local/pgsql/data 目录下生成一些必要的文件。

接下来,需要修改 /usr/local/pgsql/data/postgresql.conf 文件,将以下参数进行设置:

listen_addresses = '*'
max_connections = 100
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/archive/%f'
max_wal_senders = 10
wal_keep_segments = 32
hot_standby = on

这里指定了 PostgreSQL 监听所有 IP 地址,最大连接数为 100,启用了归档模式并将归档文件存储在 /var/lib/postgresql/archive 目录下,同时指定了最大的 WAL 发送进程数和保留的 WAL 段数,以及启用了热备模式。

接下来,需要修改 /usr/local/pgsql/data/pg_hba.conf 文件,添加以下内容:

host    replication     all             0.0.0.0/0               md5

这里指定了允许 0.0.0.0/0 的 IP 地址使用 md5 认证方式进行复制。

最后,需要重启 PostgreSQL 服务:

sudo systemctl restart postgresql
  1. 安装 pgpool

pgpool 是一个连接池和负载均衡器,可以将多个 PostgreSQL 实例组成一个集群,并提供高可用性和负载均衡功能。

首先,需要从 pgpool 官网下载源码包。下载链接:http://www.pgpool.net/mediawiki/index.php/Downloads

选择一个稳定版本的源码包下载下来,比如:

wget http://www.pgpool.net/mediawiki/download.php?f=pgpool-II-4.1.2.tar.gz

解压源码包:

tar -zxvf pgpool-II-4.1.2.tar.gz

进入解压后的目录:

cd pgpool-II-4.1.2

执行以下命令编译和安装:

./configure --prefix=/usr/local/pgpool
make
sudo make install

这里指定了安装路径为 /usr/local/pgpool,可以根据自己的需要修改。

  1. 配置 pgpool

在安装完成后,需要对 pgpool 进行一些配置。首先,需要修改 /usr/local/pgpool/etc/pgpool.conf 文件,将以下参数进行设置:

listen_addresses = '*'
port = 5432
backend_hostname0 = 'localhost'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/usr/local/pgsql/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'

这里指定了 pgpool 监听所有 IP 地址和 5432 端口,将 localhost 作为第一个后端服务器,指定了后端服务器的端口、权重、数据目录和故障转移标志。

接下来,需要修改 /usr/local/pgpool/etc/pool_hba.conf 文件,添加以下内容:

host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5

这里指定了允许 0.0.0.0/0 和 ::/0 的 IP 地址使用 md5 认证方式连接 pgpool。

最后,需要重启 pgpool 服务:

sudo /usr/local/pgpool/bin/pgpool -m fast stop
sudo /usr/local/pgpool/bin/pgpool -D
  1. 测试配置

现在已经完成了 PostgreSQL 主从和 pgpool 的源码 Ubuntu 部署,可以进行测试以确保配置正确。

首先,需要在主服务器上创建一个测试数据库:

sudo su postgres
/usr/local/pgsql/bin/createdb testdb

接下来,在主服务器上创建一个测试表并插入一些数据:

/usr/local/pgsql/bin/psql testdb
CREATE TABLE test_table (id SERIAL PRIMARY KEY, value TEXT);
INSERT INTO test_table (value) VALUES ('test');

然后,在从服务器上启动复制进程:

/usr/local/pgsql/bin/pg_basebackup -h 主机IP地址 -D /usr/local/pgsql/data -P -U replication -v -x

这里指定了主服务器的 IP 地址、从服务器的数据目录和使用 replication 用户进行复制。

最后,在 pgpool 服务器上连接测试数据库并执行查询:

/usr/local/pgpool/bin/psql -h pgpool服务器IP地址 -p 5432 -U postgres testdb
SELECT * FROM test_table;

应该能够看到之前在主服务器上插入的数据。

至此,PostgreSQL 主从和 pgpool 的源码 Ubuntu 部署已完成。

Ubuntu 源码部署 PostgreSQL 主从和 pgpool

原文地址: http://www.cveoy.top/t/topic/lMAX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录