pgsql安装与主从配置搭建

一:安装环境

查看一下安装环境:cat /etc/centos-release

CentOS Linux release 7.7.1908 (Core)

 

二:软件下载

https://www.postgresql.org/download/ 

Select your operating system family:     选择   Linux

Select your Linux distribution:    选择  Red Hat/Rocky/CentOS

 

然后页面会跳转至: https://www.postgresql.org/download/linux/redhat/

 

再选择:

1. Select version:    15

2.Select platform:    Red Hat Enterprise, CentOS, Scientific or Oracle version 7

3. Select architecture:     x86_64

 

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 postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

 在执行   sudo yum install -y postgresql15-server    过程中,有可能报错误   Requires: libzstd.so.1()(64bit)

可安装   yum install epel-release   命令进行解决。

 

在执行 初始化   sudo /usr/pgsql-15/bin/postgresql-15-setup initdb   执行完成后: Initializing database ... OK    

执行  sudo systemctl enable postgresql-15   执行完成后:

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-15.service to /usr/lib/systemd/system/postgresql-15.service. 

执行  sudo systemctl start postgresql-15

 

安装完成。

 

三:配置

查看pgsql的安装目录:find /usr -wholename '*/bin/postgres'

查看PGSQL端口:netstat -a | grep PGSQL

查找pg_hba.conf文件:  find / -name "*pg_hba.conf*" 

一般是如下路径:

/var/lib/pgsql/15/data/pg_hba.conf 

然后编辑文件

vi   /var/lib/pgsql/15/data/pg_hba.conf 

# IPv4 local connections:  

host    all             all             127.0.0.1/32            scram-sha-256  

修改为

host    all             all             0.0.0.0/0            scram-sha-256   

 

用navicat连接pgsql时报错:

could not connect to server: Connection refused(0x0000274D/10061)

Is the server running on host "192.168.113.154" and accepting TCP/IP connections on 5432?

  

 是pgsql 未监听所有的IP,解决方案:

vi  /var/lib/pgsql/15/data/postgresql.conf  找到60行左右

添加如下:listen_addresses = '*' 

 再得启一下pgsql :  sudo systemctl restart postgresql-15

 

如果是在开启防火墙的情况:

查看已打开端口:firewall-cmd --list-ports, 如没没有开通5432端口,则执行:

firewall-cmd --zone=public --port-port=5432/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

查看已打开的服务:firewall-cmd --list-service ,如果没有开通则开通PostgreSQL服务:

firewall-cmd --permanent --add-service=postgresql --permanent
firewall-cmd --reload
firewall-cmd --list-service

 

进入到postgres 账户    su - postgres

进入到 psql命令行:

执行如下操作 :
ALTER USER postgres WITH PASSWORD 'Swd.1202evb#';
CREATE ROLE replica login replication encrypted password 'replica';

输入以下命令退出 PostgreSQL 提示符:   \q

Ctrl + D退出psql控制台

完成修改后,即可用navicat 16连接到pgsql

 

参考链接:https://www.cnblogs.com/yyl001/p/16469612.html

 

 

 

 

 

 

 

 

 

==================================主从配置=======================================================

一:

进入 su - postgres

进入 psql

create role replica login replication encrypted password 'replication123';

含义:

登录名为:replica

权限授予:login replication

密码为:replication123

最后一定要加一个  ;

二:vi  /var/lib/pgsql/15/data/postgresql.conf

listen_addresses = '*'    # 设置监听的ip,* 为允许所有
wal_level = replica    # wal日志写入级别,要使用流复制,必须使用replica或更高级别
full_page_writes = on    # 可以防止意外宕机后部分数据无法写入
wal_log_hints = on    # 没太懂这个参数的具体含义,但可能会影响后续pg_rewind的使用,所以把它打开,官方描述:also do full page writes of non-critical updates
max_wal_senders = 10    # 设置流复制链接最大值
hot_standby = on    # 打开热备
wal_keep_segments = 64    # 设置流复制保留的最log数目
unix_socket_directories = '.'     # 指定服务器用于监听来自客户端应用的连接的 Unix 域套接字目录。
unix_socket_permissions = 0777    # 设置 Unix 域套接字的访问权限。
listen_addresses = '*'    在60行左右
wal_level = replica      在206行左右
full_page_writes = on    在220行左右
wal_log_hints = on       在221行左右  把off 改为 on
max_wal_senders = 10     在309行左右   
hot_standby = on         在336行左右

如三下个参数,新版本可能没有,可以不设置
wal_keep_segments = 64    # 设置流复制保留的最log数目
unix_socket_directories = '.'     # 指定服务器用于监听来自客户端应用的连接的 Unix 域套接字目录。
unix_socket_permissions = 0777    # 设置 Unix 域套接字的访问权限。
 三:编辑  vi  /var/lib/pgsql/15/data/pg_hba.conf   ,在文件的最后增加如下内容:
 host    replication     replica         0.0.0.0/0               scram-sha-256 
 
 四: 重启一下主库:sudo systemctl restart postgresql-15


从库:
一:停止从库的pgsql服务
sudo systemctl stop postgresql-15
二:清空从库的数据(删除data下的所有文件)
rm -rf /var/lib/pgsql/15/data/* 

 三:pg_basebackup -h 172.27.241.252 -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/pgsql/15/data/   

然后输入主库设置的密码:replication123

 

给   data 目录授权

chmod -R 700 /var/lib/pgsql/15/data
chgrp -R postgres /var/lib/pgsql/15/data
chown -R postgres /var/lib/pgsql/15/data

 

四:此时data目录下会出现standby.signal   只有一个文件,里边什么内容都没有,加上如下一句话:

vi standby.signal

standby_mode = 'on'

 

修改  postgresql.conf, 

vi  postgresql.conf 

[root@localhost data]# vim postgresql.conf 
#从机信息和连接用户
primary_conninfo = 'host=192.168.5.131 user=replica password=123456'
#说明恢复到最新状态
recovery_target_timeline = latest 
#大于主节点,正式环境重新考虑此值的大小
max_connections = 120
#说明这台机器不仅可以用户数据归档,还可以用于数据查询
hot_standby = on
#流备份的最大延迟时间
max_standby_archive_delay = 30s
#向主机汇报本地状态的间隔时间
wal_receiver_status_interval = 10s
#出现错误复制,向主机反馈
hot_standby_feedback = on

 

重启数据库:sudo systemctl start postgresql-15

 

实现了主从的配置搭建

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章