建设人行官方网站,重庆做网站设计,wordpress会员下载,闽江学院教务管理系统文章目录 说明1. 准备工作1.1 源码包下载1.2 解压安装目录1.3 安装依赖包1.4 添加用户1.5 创建数据目录 2. 编译安装2.1 源码编译2.2 配置环境变量2.3 初始化数据库2.4 启动数据库2.5 连接数据库 3. 参数调整3.1 配置 pg_hba3.2 监听相关2.4 日志文件2.5 内存参数 说明
本篇文… 文章目录 说明1. 准备工作1.1 源码包下载1.2 解压安装目录1.3 安装依赖包1.4 添加用户1.5 创建数据目录 2. 编译安装2.1 源码编译2.2 配置环境变量2.3 初始化数据库2.4 启动数据库2.5 连接数据库 3. 参数调整3.1 配置 pg_hba3.2 监听相关2.4 日志文件2.5 内存参数 说明
本篇文章介绍 PostgreSQL 单机源码编译部署的详细步骤。
1. 准备工作
1.1 源码包下载
进入 PostgreSQL 官网下载页面 选择 Source 栏目
接着就进入源码版本目录选择需要安装的版本下载即可。 1.2 解压安装目录
源码包下载完成后上传到服务器进行解压缩
tar -xf postgresql-14.8.tar.gz1.3 安装依赖包
yum install gcc gcc-c readline-devel readline readline-dev zlib-devel1.4 添加用户
groupadd postgres
useradd -g postgres postgres1.5 创建数据目录
为 PostgreSQL 创建存储数据的目录
mkdir -p /data/pgsql/{data,logs}
chown -R postgres:postgres /data/pgsql/2. 编译安装
2.1 源码编译
cd 到源码目录下
cd /opt/postgresql-14.8执行 configure
./configure --prefix/usr/local/pgsql参数名含义prefix软件目录也就是安装目录with-perl编译时添加该参数才能够使用 perl 语法的 PL/Perl 过程语言写自定义函数需要提前安装好相关的 perl 开发包libperl-devwith-python编译时添加该参数才能够使用 python 语法的 PL/Perl 过程语言写自定义函数需要提前安装好相关的 python 开发包python-devwith-blocksize with-wal-blocksize默认情况下 PG 数据库的数据页大小为 8KB若数据库用来做数仓业务可在编译时将数据页进行调整以提高磁盘 IO
编译安装
make make install编译完成后会在 prefix 参数指定的目录下生成 PostgreSQL 程序文件。
2.2 配置环境变量
根据自己实际环境修改安装目录和数据目录
vi /etc/profileexport PGHOME/usr/local/pgsql
export PGDATA/data/pgsql/data
export PATH$PGHOME/bin:$PATH
export LD_LIBRARY_PATH/usr/local/pgsql/libsource /etc/profile2.3 初始化数据库
切换到 postgres 用户
su postgres执行数据库初始化 -D 选项后面是数据目录
initdb -D /data/pgsql/data/The files belonging to this database system will be owned by user postgres.
This user must also own the server process.The database cluster will be initialized with locale zh_CN.UTF-8.
The default database encoding has accordingly been set to UTF8.
initdb: could not find suitable text search configuration for locale zh_CN.UTF-8
The default text search configuration will be set to simple.Data page checksums are disabled.fixing permissions on existing directory /data/pgsql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... okinitdb: warning: enabling trust authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using:pg_ctl -D /data/pgsql/data/ -l logfile start2.4 启动数据库
进入 logs 目录下创建启动日志文件将启动时的日志输出到该文件
touch /data/pgsql/logs/start.log启动 PostgreSQL
pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/start.log start 关闭数据库可以使用下方命令
# 关闭数据库
pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/start.log stop
# 重启数据库
pg_ctl -D /data/pgsql/data/ -l /data/pgsql/logs/start.log restart2.5 连接数据库
启动成功使用 psql 即可进入数据库
$ psql
psql (14.8)
Type help for help.postgres# select version();version
---------------------------------------------------------------------------------------------------------PostgreSQL 14.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit3. 参数调整
3.1 配置 pg_hba
PostgreSQL 数据目录中会自动生成 pg_hba.conf 文件该文件是一个黑名单访问控制文件可以控制允许哪些 IP 地址的机器访问数据库。默认不允许远程访问数据所以安装完成后需要配置下。
# TYPE DATABASE USER ADDRESS METHOD# local is for Unix domain socket connections only
# Type 表示访问方式local 表示本地套接字访问DATABASE、USER 分别表示数据库和用户
# 参数 all 表示所有的数据库或用户ADDRESS 表示一个地址或者网段METHOD 表示验证的方式
# 默认的 trust 表示完全信任password 表示发送明文密码不建议使用建议使用 md5 模式
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust可以在 pg_hba 文件中加入下面一行表示允许任何用户远程连接数据库连接时需要提供密码
host all all 0/0 md5详细可参考文档pg_hba 文件说明
3.2 监听相关
在数据目录中的 postgresql.cnf 中可以找到如下内容
listen_addresses localhoset # what IP address(es) to listen on;# comma-separated list of addresses;# defaults to localhost; use * for all# (change requires restart)其中参数 listen_addresses 表示监听的 IP 地址默认是在 localhost/127.0.0.1 处监听这样会导致远程主机无法访问数据库如果需要远程访问需要将其设置为实际网络地址设置为 * 表示监听所有地址该参数修改重启生效。 PS配置完 3.1 和 3.2 两个步骤PostgreSQL 就可以支持远程连接。 下表是其它常见监听相关的参数按需设置
参数含义port服务器监听TCP端口默认 5432max_connectionsServer 端允许最大连接数默认 100superuser_reserved_connectionsServer 端为超级账号保留的连接数默认3unix_socket_directoryServer 监听客户端 Unix 嵌套字目录默认 /tmp
2.4 日志文件
下面是 PostgreSQL 日志相关的参数一般都是需要配置
参数含义logging_collector是否打开日志log_rotation_age超过多少天生产一个新的日志文件log_rotation_size超过多少大小生成一个新的日志文件log_directory日志目录可以是绝对路径或相对 PGDATA 的相对路径log_destination日志记录类型默认是 stderr只记录错误输出log_filename日志文件名默认是 postgresql-%Y-%m-%d_%H%M%S.loglog_truncate_on_rotation当日志名已存在时是否覆盖原文件
以下是几个常用的配置模版每天生成一个新的日志文件
logging_collector on
log_directory /data/pgsql/logs
log_filename postgresql-%Y-%m-%d_%H%M%S.log
log_truncate_on_rotation off
log_rotation_age 1d
log_rotation_size 0每当一个日志写满时如 100MB切换一个日志
logging_collector on
log_directory /data/pgsql/logs
log_filename postgresql-%Y-%m-%d_%H%M%S.log
log_truncate_on_rotation off
log_rotation_age 0
log_rotation_size 100MB只保留最近 7 天的日志进行循环覆盖
logging_collector on
log_directory /data/pgsql/logs
log_filename error_log.log
log_truncate_on_rotation on
log_rotation_age 7d
log_rotation_size 02.5 内存参数
熟悉 MySQL 的同学都知道它有一个参数 innodb_buffer_pool 限制 innodb 引擎缓冲池的大小buffer pool 越大可以缓存的页就越多可以减少很多磁盘 IO 消耗提升数据库的性能。shared_buffer 在 PostgreSQL 中与 MySQL 的 buffer pool 是异曲同工。
参数含义shared_buffer共享内存缓存区大小默认 128MBtemp_buffers每个会话使用的临时缓存区大小默认 8MBwork_mem内存临时表排序操作或者 hash join 需要使用到的内存缓存大小默认 4MBmaintenance_work_mem对于维护性操作vacuum、create index最大使用内存默认 64M最小 1Mmax_stack_depthServer 端执行堆栈最大安全深度默认 2M若发现无法执行复杂函数时可适当调整该参数