由于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部署已完成。

postgresql主从 pgpool 源码ubuntu部署

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

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