postgresql-14.6数据库主从部署
安装包准备:
postgresql-14.6.tar.gz
zlib-1.2.11.tar.gz
1、安装postgresql数据库
1)创建用户
groupadd postgres
useradd postgres -g postgres
#麒麟服务器无需执行下面两步,会自动创建
mkdir /home/postgres
chown -R postgres:postgres /home/postgres
2)安装zlib依赖(麒麟V10无需执行,系统已默认安装)
#检查是否安装zlib、zlib-devel
rpm -qa |grep zlib
#没有安装的话执行以下离线安装步骤
tar xf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make && make install
3)安装pg数据库
1. 解压
tar xf postgresql-14.6.tar.gz
cd postgresql-14.6/
2. 预配置
./configure --prefix=/data/pgsql --without-readline
3. 编译并安装
make && make install
4. 创建数据目录及日志目录
cd /data
mkdir -p pgsql/{data,logs}
chown -R postgres:postgres pgsql/
5. 初始化数据库
su - postgres
#设置当前服务器字符集为zh_CN.utf8
export LC_ALL=zh_CN.utf8
locale
#初始化数据库
cd /data/pgsql/
./bin/initdb -E utf8 -D /data/pgsql/data/
6. 启动数据库
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
7. 配置文件修改
cd /data/pgsql
vim data/postgresql.conf
listen_addresses = '*'
vim data/pg_hba.conf
host all all 0.0.0.0/0 trust
8. 重启服务
./bin/pg_ctl -D /data/pgsql/data/ stop
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
9. 环境变量配置
vim ~/.bash_profile
export PGHOME=/data/pgsql
export PGDATA=/data/pgsql/data
export LC_ALL=zh_CN.utf8
PATH=$PATH:$PGHOME/bin
4)主从配置
从节点安装重复上面安装步骤(无需执行初始化操作)
1. 主库创建具有流复制的用户
#登录数据库
psql -h 127.0.0.1 -U postgres -p 5432
#执行sql
CREATE ROLE repl login replication encrypted password 'qaz#WSX123'
2. 修改配置文件,开启归档
vim data/postgresql.conf
# 启用归档模式
archive_mode = on
# 归档命令
archive_command = 'test ! -f /data/pgsql/pgwal/%f && cp %p /data/pgsql/pgwal/%f'
# 启用流复制
wal_level = replica
# 允许最多2个并发WAL发送进程
max_wal_senders = 2
# 保留最少2GB的WAL文件
wal_keep_size = 2GB
wal_sender_timeout = 60s
3. 修改pg_hba.conf添加从库IP
vim data/pg_hba.conf
host replication repl 73.134.32.102/24 md5
4. 重启主库
./bin/pg_ctl -D /data/pgsql/data/ stop
./bin/pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
5. 从库配置
拷贝主节点数据至从库(#从节点执行)
pg_basebackup -h 73.134.32.101 -U repl -D /data/pgsql/data/ --write-recovery-conf --progress --verbose
从节点配置文件修改
vim data/postgresql.conf
# 恢复最新的数据
recovery_target_timeline = 'latest'
# 主库连接信息
primary_conninfo = 'host=73.134.32.101 port=5432 user=repl password=qaz#WSX123'
# 最大连接数,大于主库
max_connections = 500
# 开启数据归并支持数据查询
hot_standby = on
# 流备份最大延迟时间
max_standby_streaming_delay = 30s
# 向主库反馈本机状态间隔时间
wal_receiver_status_interval = 10s
# 出现错误向主机反馈
hot_standby_feedback = on
启动从节点数据库
pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/pgsql.log start
6. 主从同步验证
主库执行sql
select client_addr,sync_state from pg_stat_replication;

在主库创建用户或数据库,并于从节点上查看是否同步
主节点创建数据库和用户角色

从节点查询结果

5)登录数据库创建账号和数据库
psql -h 127.0.0.1 -U postgres -p 5432
CREATE USER kong WITH PASSWORD 'Hzsun88994788';
CREATE DATABASE kong OWNER kong;
\q退出
#数据库字符集查看
show server_encoding;

浙公网安备 33010602011771号