Postgre主从搭建
总阅读 次
有需求使用mycat来实现postgre主从集群的读写分离,于是首先开始搭建pg的主从集群
centos PG集群搭建
安装PG
1、安装之前首先查看软件是否已经安装
1 | rpm -qa | grep postgresql |
2、安装postgresql和postgresql-server
1 | sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
3、环境变量
创建目录,给与权限1
2
3cd /data/
mkdir pgdata
chown -R postgres:postgres ./pgdata
修改环境变量1
2
3
4
5
6
7vi /usr/lib/systemd/system/postgresql-12.service
# 修改 Environment
Environment=PGDATA=/data/pgdata/ #PGDATA一般是数据盘
# 重载
systemctl daemon-reload
4、启动数据库1
2
3
4
5# 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
# 启动
systemctl start postgresql-12
5、创建用户1
2
3
4
5
6
7
8
9su - postgres
psql
# 用于pgpool
create role pgpool with login password 'postgres';
# 用于主从
create role repl login replication encrypted password 'postgres';
# 修改postgres密码
alter user postgres with password 'postgres';
配置主从
主节点配置
1、pg_hba.conf1
2
3
4
5
6
7
8
9
10
11# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/pg_hba.conf
# 追加
host all all 0.0.0.0/0 md5
host replication repl 本机ip/32 trust
host replication repl 节点1 ip/32 trust #从节点1
...
host replication repl 节点n ip/32 trust #从节点n
host all all 本机ip 最后一位替换为0/24 md5
2、postgresql.conf1
2
3
4
5
6
7
8
9
10
11
12
13# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/postgresql.conf
# 修改内容
listen_addresses = '*' #开启后子节点才能访问#监听所有ip
archive_mode = on #开启归档模式
max_connections = 21000
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"' #归档命令
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on #热备模式
wal_log_hints = on
3、重启主库
systemctl restart postgresql-12
从节点配置
1、拉取主库配置1
2
3
4
5
6
7
8
9#删除从库data目录下文件
rm ‐rf data/*
# 拉取主库配置,主库记得开5432端口
#pg_basebackup -h 主节点ip -U repl -D /data/pgdata -X stream -P
pg_basebackup -h 172.16.98.236 -p 5432 -U repl -Fp -Xs -Pv -R -D /data/pgdata
# 开通端口
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
2、修改配置文件1
2
3
4
5
6
7# postgresql.conf修改内容
primary_conninfo = 'host=主节点ip port=5432 user=repl(主节点对应账号) password=密码'
recovery_target_timeline = latest
hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on #r出现错误复制,向主机反馈
3、修改从库standby.signal配置文件
pgsql 12版本,不再支持recovery.conf
standby_mode 配置在 standby.signal 中配置
primary_conninfo 配置在 postgresql.conf 中配置
1 | # standby.signal修改内容 |
4、重启从库1
2
3
4
5
6#重启
systemctl restart postgresql-12
#也可以stop再start
systemctl stop postgresql-12
systemctl start postgresql-12
检查集群
1 | # 进入主库 |
参考:
https://www.cnblogs.com/wuhao-grow-uo/archive/2021/08/19/15162596.html
https://www.cnblogs.com/x-j-p/p/13085588.html