PG集群(PostgreSql环境)搭建

  • A+
所属分类:linux技术
摘要

能够访问外网不能访问外网创建目录,给与权限修改环境变量1、pg_hba.conf2、postgresql.conf


centos PG集群搭建

一、安装PG

1、安装之前首先查看软件是否已经安装

rpm -qa | grep postgresql  #若存在,需要卸载使用 yum remove postgresql 

PG集群(PostgreSql环境)搭建

2、安装postgresql和postgresql-server

能够访问外网

# 获取源 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm  # 安装 sudo yum install -y postgresql12-server 

不能访问外网

# 如果不能访问外网,yum是用不了的,卸载原有的pg也只能通过rpm -e 包名 挨个进行删除  # 离线安装 rpm -Uvh --force --nodeps * 

3、环境变量

创建目录,给与权限

cd /data/ mkdir pgdata chown -R postgres:postgres ./pgdata 

修改环境变量

vi /usr/lib/systemd/system/postgresql-12.service  # 修改 Environment Environment=PGDATA=/data/pgdata/ #PGDATA一般是数据盘  # 重载 systemctl daemon-reload 

4、启动数据库

# 初始化数据库 /usr/pgsql-12/bin/postgresql-12-setup initdb  # 启动 systemctl start postgresql-12 

PG集群(PostgreSql环境)搭建

5、创建用户

su - 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.conf

# 修改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.conf

# 修改data(/data/pgdata)下面的配置 vi /data/pgdata/postgresql.conf  # 修改内容 listen_addresses = '*' #开启后子节点才能访问 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 

从节点配置

1、拉取主库配置

#删除从库data目录下文件 rm ‐rf data/*  # 拉取主库配置,主库记得开5432端口 pg_basebackup -h 主节点ip -U repl -D /data/pgdata -X stream -P   # 开通端口 iptables -I INPUT -p tcp --dport 5432 -j ACCEPT 

2、修改配置文件

# 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  # 12以上版本配置上有些变化 #   	1.将recovery.conf文件里的配置合并到主配置文件postgresql.conf中 # 	2.设置启用备库参数standby_mode,12之后废弃了这个参数,切换到备库建立空文件standby.signal进行触发。  # standby.signal修改内容     standby_mode = on 

3、重启服务

#重启 systemctl restart postgresql-12  #也可以stop再start systemctl stop postgresql-12 systemctl start postgresql-12 

三、验证

# 进入主库 su - postgres # 进入sql psql  # 查询同步状态,完成的话显示n行 select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;  # 添加数据库  CREATE DATABASE test;  # 进入从库查看,发现新的库test # 执行新建操作,警告only-read 

四、其他

# 备份数据库 pg_dump dbname > outfile # 导入数据库 psql dbname < infile 

# 可用于测试主从是否完成 # 添加数据库  CREATE DATABASE test; # 删除数据库 DROP DATABASE test; 

# 查看已安装的软件包 rpm -qa | grep postgresql # 离线删除软件包 rpm -e 包名