PostgreSQL 安装部署


前言

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 安装是比较省事的。
需要注意 : 本文没有进行优化配置,只是进行了简单的安装。如果生产环境使用,还是需要很多其他的配置的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值