PostgreSQL 安装部署

  • Post author:
  • Post category:其他





前言

PostgreSQL 是事务型数据库,完全支持ACID四大特性。

但不仅仅是关系型数据库,同时也添加了对

JSON数据的支持



全文检索功能

,以及其他扩展。



官网


官方网站



服务器&环境说明

操作系统:CentOS Linux release 7.6.1810 (Core)

操作系统安装包:CentOS-7-x86_64-Minimal-1810.iso

docker 版本:1.13.1

PostgreSQL 版本 : 12.9

pgAdmin 4 版本 : 6.3



客户端

安装部署好了,要用,那就需要一个客户端。

传说主流的客户端:Navicat Premium、pgadmin等。

PS : Navicat Premium 这个是收费的,用法也比较简单。不过需要注意,PostgreSQL 12.9 使用 Navicat Premium 11 会出问题,需要使用 Navicat Premium 12 才可以。




1、Docker 部署

安装 Docker 及简单实用可以

参考之前的文章



1.1、自定义网络

说明:可以不自定义网络。容器默认使用的网络是 bridge。可以查看 bridge 的详情,获取容器 IP,也可以实现容器之间的通讯。

# 创建自定义网络
docker network create PostgreSQL_networks
# 查看列表,确认是否创建成功
docker network ls
# Display detailed information on one or more networks
docker network inspect PostgreSQL_networks



1.2、部署服务

# 拉取镜像
docker pull postgres:12.9
# 启动服务
docker run -e POSTGRES_PASSWORD=123456 -p 5432:5432 --name postgres129 --restart=always --network PostgreSQL_networks --network-alias postgres129 -d postgres:12.9
# 其中的 -e POSTGRES_PASSWORD=123456 是设置 superuser 用户的密码,superuser 的默认 username 是 postgres.
# 其中的 --network PostgreSQL_networks 是设置网络



1.3、部署客户端 pgadmin

安装 pgadmin

# 拉取镜像
docker pull dpage/pgadmin4:6.3
# 启动服务
docker run --name pgadmin -p 8080:80 \
    -e 'PGADMIN_DEFAULT_EMAIL=peter@abc.com' \
    -e 'PGADMIN_DEFAULT_PASSWORD=123456' \
    -e 'PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True' \
    -e 'PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"' \
    -e 'PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10' \
    --network PostgreSQL_networks --network-alias pgadmin \
    -d dpage/pgadmin4:6.3
# 其中的 -e PGADMIN_DEFAULT_EMAIL=peter@abc.com 是设置用户名为 peter@abc.com,PGADMIN_DEFAULT_PASSWORD 是设置密码为 123456.
# 说明 : 配置 PostgreSQL IP 地址的时候,需要使用 PostgreSQL_networks 中的 IP 地址。
# 例如 : 172.18.0.2。可通过 docker network inspect PostgreSQL_networks 查询。



2、yum 安装

# 查看是否安装 PostgreSQL
rpm -qa|grep postgresql

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql12-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12

# 默认只能本地访问,需要修改配置文件
cd /var/lib/pgsql/12/data
vi postgresql.conf
# 修改配置
# listen_addresses = '*'
vi pg_hba.conf
# 修改配置(增加一行)
# IPv4 local connections:
# host    all             all             0.0.0.0/0               md5

# 重启
systemctl restart postgresql-12
# 查看状态
systemctl status postgresql-12

# 有默认用户 postgres ,但默认没有密码
# 切换用户
sudo su postgres
# 登入默认数据库
psql postgres
# 给 postgres 用户设置密码
postgres= # \password postgres
# 设置密码后,就可通过客户端远程访问了。Ctrl + D 退出,

# 查看服务是否正常启动
ss -ntl|grep 5432

# 防火墙开通端口
firewall-cmd --zone=public --add-port=5432/tcp --permanent
# 重启防火墙,让配置生效
systemctl restart firewalld.service
# 查看开放的端口
firewall-cmd --zone=public --list-ports



安装日志插件 wal2json


官方网站

# 安装日志插件
# 是否已经安装
rpm -qa|grep wal2json
# 安装(12 对应 PostgreSQL 的版本)
sudo yum install -y wal2json12
# 查找安装的位置(会有卡顿,搜索文件太多了)
# find / -name wal2json.so
# 正确安装,则文件会存在
/usr/pgsql-12/lib/wal2json.so
# 修改配置文件
cd /var/lib/pgsql/12/data
vi postgresql.conf
# wal_level = logical

# 重启
systemctl restart postgresql-12

说明:客户端依然可以使用 Docker 的方法部署 pgadmin ,直接使用服务器的 IP 即可实现通讯。




总结

如果不需要配置日志插件,Docker 安装是比较省事的。

需要注意 : 本文没有进行优化配置,只是进行了简单的安装。如果生产环境使用,还是需要很多其他的配置的。



版权声明:本文为achi010原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。