说明
- 仅记录安装部署和初始化过程
- 操作系统使用的
CentOS-7.6.1810 x86_64
- PostgreSQL版本号为
10.8
- 虚拟机配置
1CPU 2G内存 20G系统盘 30G数据盘
- 【根据自己的环境灵活调整,生产环境请务必提供独立数据盘!】
环境准备
关闭防火墙
1 | systemctl disable --now firewalld.service |
关闭SELINUX
1 | setenforce 0 |
sysctl参数
1 | cat > /etc/sysctl.d/99-pgsql.conf <<EOF |
limits参数
1 | cat > /etc/security/limits.d/99-pgsql.conf <<EOF |
准备数据盘
确认数据盘
1 | lsblk |
分区
使用fdisk /dev/sdb
格式化硬盘,默认已做4K对齐
1 | fdisk /dev/sdb |
1 | lsblk |
格式化分区
1 | mkfs.xfs -f -b size=4096 /dev/sdb1 |
创建数据目录
1 | mkdir -p /data |
挂载数据盘
1 | mount -t xfs -o nolargeio,noatime,nodiratime /dev/sdb1 /data |
修改/etc/fstab
追加一行记录
1 | /dev/sdb1 /data xfs nolargeio,noatime,nodiratime 0 0 |
安装PostgreSQL
准备YUM源
1 | yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
由于默认的源服务器地址在国外,修改为国内镜像地址可以改善下载速度
1 | yum install -y https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
默认源服务器地址是PostgreSQL社区的服务器,这里替换成清华大学的镜像源地址
1 | sed -e 's,download.postgresql.org/pub,mirrors4.tuna.tsinghua.edu.cn/postgresql,g' -i /etc/yum.repos.d/pgdg-redhat-all.repo |
安装PostgreSQL10
必装
1 | yum install -y postgresql10 postgresql10-server |
选装
1 | yum install -y postgresql10-contrib postgresql10-test |
PostgreSQL也有基于WebUI的图形管理工具
pgAdmin
,具体怎么用,自己看文档windows版的看这里
容器化部署看这里
1 | yum install -y pgadmin4 |
初始化数据库
- 使用默认数据目录
默认数据目录在
/var/lib/pgsql/10/data
1 | /usr/pgsql-10/bin/postgresql-10-setup initdb |
- 使用自定义数据目录
这里自定义数据目录为
/data
1 | 修改数据目录权限 |
启动PostgreSQL
1 | systemctl enable postgresql-10.service |
验证数据库
查看数据库进程
1 | ps -ef | grep postgres |
查看数据库监听端口
1 | netstat -antupl | grep 5432 |
切换用户
1 | su - postgres |
登录数据库
在postgres用户下可以直接免密码登录到数据库
1 | psql -U postgres |
查看数据库
1 | postgres=# \conninfo |
配置PostgreSQL数据库
配置文件路径
配置文件是放在数据目录,懒得记路径可以这么做
1 | su - postgresql |
配置文件说明
postgresql.conf
数据库服务的配置文件
默认配置文件条目非常多,可以根据注释来配置对应选项
也可以查看在线版本
这里简单做一下配置
1 | ----------------------------- |
pg_hba.conf
基于主机认证的配置文件
默认的配置文件好多注释,看着不方便
简化之后如下
1 | TYPE DATABASE USER ADDRESS METHOD |
pg_hba.conf的配置选项非常多,更详细的资料可以查看配置文件自带的注释或者查看pgsql中文社区PostgreSQL10的中文版手册,链接在这
激活数据库配置
- 注释里没提及
change requires restart
,可以通过reload的方式加载配置
1 | su - postgresql |
- 注释里明确列明了
change requires restart
,只能restart的方式重启数据库才能生效
1 | su - postgresql |
PostgreSQL日志
日志路径
默认路径
在数据目录的log目录里面,%PGDATA/log
1 | log_filename = 'postgresql-%a.log' |
其中%a
是指星期几的缩写作为标识,例如postgresql-Mon.log
、postgresql-Tue.log
自定义文件名
postgresql.conf里面的参数控制日志的文件名
1 | log_filename = 'postgresql-%Y%m%d.log' |
日志轮转
在postgresql.conf
可以定义这些参数
- 每天生成一个日志文件
1 | log_filename = 'postgresql-%Y%m%d.log' |
- 每天一个日志文件,只保留7天日志,循环覆盖之前的日志
1 | log_filename = 'postgresql-%a.log' |
增加PATH变量
切换到postgres用户
1 | su - postgres |
修改
~/.bash_profile
1 | PGHOME='/usr/pgsql-10' |