一、安装环境
操作系统:银河麒麟v10 sp3 x86_64
内核版本:
PostgreSQL版本:11.16
二、安装过程
2.1 下载源码包
创建目录 mkdir -p /tools/postgresql
下载文件:wget https://ftp.postgresql.org/pub/source/v11.16/postgresql-11.16.tar.gz -P /tools/postgresql # 下载时间约30分钟
2.2 安装依赖包及准备
yum -y install openssl-devel libxml2-devel libxslt-devel python-devel cmake gcc-c++ zlib-devel bzip2 readline-devel expect git uuid-devel systemd-devel gcc automake autoconf libtool make vim wget
创建用户:
useradd postgres
修改密码:
echo "PGsql@123456" | passwd --stdin postgres
[root@localhost /]# echo "PGsql@123456" | passwd --stdin postgres
更改用户 postgres 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost /]# echo "`1234qwert" | passwd --stdin postgres
创建安装目录及修改权限
mkdir -p /usr/local/postgresql
chown -R postgres:postgres /usr/local/postgresql
2.3源码编译安装
2.3.1 解压源码包
cd /tools/postgresql
tar -zxvf postgresql-11.16.tar.gz
2.3.2 执行configure
cd postgresql-11.16/
./configure --prefix=/usr/local/postgresql --with-pgport=5432 \--with-openssl \--with-libxml \--with-libxslt \--with-ossp-uuid \--with-systemd
2.3.3 编译
gmake -j 8 world # 安装时间较长预计5分钟
2.3.4 安装
gmake install-world # 安装时间较长预计15分钟
备注
备注:
1.编译时使用了gmake world和gmake install-world, 表示安装所有插件
2./configure编译参数详解:
--prefix 指定安装目录。
--bindir 指定可执行程序的目录
--sysconfdir 默认设置各种配置文件的目录。
--libdir 设置安装库和动态可加载模块的位置。
--includedir 设置安装C和C ++头文件的目录
--datarootdir 设置各种类型的只读数据文件的根目录。share目录。
--datadir 设置已安装程序使用的只读数据文件的目录。默认值为DATAROOTDIR。
--localedir 设置用于安装区域设置数据的目录。默认值为DATAROOTDIR/locale。
--mandir PostgreSQL附带的手册页将安装在这个目录下. man目录。
--docdir 设置安装文档文件的根目录。
--htmldir PostgreSQL的HTML格式文档将安装在此目录下。默认值为DATAROOTDIR。
--with-extra-version = STRING 将STRING附加到PostgreSQL版本号
--with-libraries 用于搜索库。
--enable-nls 启用本机语言支持(NLS),即以英语以外的语言显示程序消息的功能。
--with-pgport 设置为服务器和客户端的默认端口号。默认值为5432。
--with-perl 支持perl语言。
--with-python 支持python语言。
--with-TCL 支持PL/Tcl语言。
--with-tclconfig 包含构建与Tcl接口的模块所需的配置信息。
--with-GSSAPI 构建支持GSSAPI身份验证。
--with-openssl 构建支持SSL(加密)连接
--with-pam 使用PAM(可插入身份验证模块)支持构建.
--with-ldap 使用LDAP支持构建身份验证和连接参数查找.
--without-readline 禁用psql中的命令行编辑和历史记录 .
--with-libedit-preferred 有利于使用BSD许可的libedit库.默认使用Readline。
--with-bonjour 使用Bonjour支持构建
--with-uuid=LIBRARY 使用指定的UUID库构建uuid-ossp模块.
--with-libxml 使用libxml构建(启用SQL/XML支持).
--with-libxslt 在构建xml2 模块时使用libxslt 。xml2依赖于此库来执行XML的XSL转换。
--disable-integer-datetimes 禁用对时间戳和间隔的64位整数存储的支持,并将日期时间值存储为浮点数。
--disable-float4-byval 禁用“按值”传递float4值,导致它们“通过引用”传递。此选项会降低性能.
--disable-float8-byval 禁用“按值”传递float8值,导致它们“通过引用”传递。此选项会降低性能.
--with-segsize=SEGSIZE
设置段大小,以千兆字节为单位。大表分为多个操作系统文件,每个文件的大小等于段大小
--with-blocksize=BLOCKSIZE
设置块大小,以千字节为单位。这是表中的存储单元和I / O. 默认值为8千字节
--with-wal-segsize=SEGSIZE
设置WAL段大小,以兆字节为单位。这是WAL日志中每个文件的大小。
调整此大小以控制WAL日志传送的粒度可能很有用。默认大小为16兆字节。该值必须是1到64(兆字节)之间的2的幂.
--with-wal-blocksize=BLOCKSIZE
设置WAL块大小,以千字节为单位。这是WAL日志中的存储和I / O单位。默认值为8千字节.该值必须是1到64(兆字节)之间的2的幂.
--disable-spinlocks 禁用环形锁。
--disable-thread-safety 禁用线程安全,禁用客户端库的线程安全性。
--with-system-tzdata=DIRECTORY
PostgreSQL包含自己的时区数据库,它需要日期和时间操作.默认与linux时区兼容。
--without-zlib 防止使用Zlib 库。
--enable-debug 使用调试符号编译所有程序和库。
--enable-depend 启用自动依赖关系跟踪。
--enable-dtrace 编译PostgreSQL,支持动态跟踪工具DTrace。
--enable-tap-tests 使用Perl TAP工具启用测试。
三、初始化数据
3.1 配置环境变量
vim /etc/profile.d/pgdb.sh
vim /etc/profile
export PGDATA=/usr/local/postgresql/data
export PATH=/usr/local/postgresql/bin:$PATH
source /etc/profile.d/pgdb.sh
source /etc/profile #刷新并使文件生效
3.2 初始化数据
su - postgres 切换用户
cd /usr/local/postgresql/bin
/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data --encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8
报错处理问题
[postgres@localhost bin]$ initdb -D /usr/local/postgresql/data --encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8
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 locales
COLLATE: en_US.UTF-8
CTYPE: en_US.UTF-8
MESSAGES: zh_CN.UTF-8
MONETARY: zh_CN.UTF-8
NUMERIC: zh_CN.UTF-8
TIME: zh_CN.UTF-8
The default text search configuration will be set to "english".
Data page checksums are disabled.
initdb: directory "/usr/local/postgresql/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/postgresql/data" or run initdb
with an argument other than "/usr/local/postgresql/data".
[postgres@localhost bin]$ pg_ctl -D /usr/local/postgresql/data -l logfile start
waiting for server to start..../bin/sh: logfile: 权限不够
stopped waiting
pg_ctl: could not start server
Examine the log output.
[postgres@localhost bin]$ psql
psql: could not connect to server: 没有那个文件或目录
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
3.3 启动postgresql数据库
cd /usr/local/postgresql/bin/
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l logfile start
pg_ctl restart 重启
四、验证
查看当前数据库版本
1. 配置编译环境
(1) 安装依赖包
yum install -y readline readline-devel openssl openssl-devel zlib zlib-devel
(2) 安装:
1)通过yum直接安装
yum install postgresql-server
2)通过源码安装
a. 获取源码
wget https://ftp.postgresql.org/pub/source/v10.11/postgresql-10.11.tar.gz
b. 解压源码。
tar -zxvf postgresql-10.11.tar.gz
c. 进入源码目录。
cd /usr/local/postgresql-10.11
d. 配置并编译安装。
./configure && make && make install
----结束
2.运行和验证:
(1) yum安装方式运行:
1) 初始化数据库。
/usr/bin/postgresql-setup initdb
2) 设置开启启动。
systemctl start postgresql
systemctl enable postgresql.service
(2) 源码安装方式运行:
1) 创建数据目录。
mkdir /usr/data
mkdir /usr/data/postgresql
2) 创建pgsql用户。
useradd pgsql
useradd postgres
[root@localhost ~]# passwd postgres # 修改用户密码 我的密码:·1234qwert
3) 变更目录权限。
chown -R pgsql:pgsql /usr/local/pgsql
chown -R pgsql:pgsql /Data/postgresql
chown -R postgres:postgres /usr/local/pgsql
chown -R postgres:postgres /usr/data/postgresql
4) 切换pgsql用户。
su - pgsql
su - postgres
[root@localhost postgresql]# su - postgres
su: 警告:无法更改到 /home/postgres 目录: 没有那个文件或目录
[postgres@localhost postgresql]$ psql
psql (10.5)
输入 "help" 来获取帮助信息.
postgres=#
5) 初始化数据。
/usr/local/pgsql/bin/initdb -D /usr/data/postgresql/
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /Data/postgresql ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... PRC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
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:
/usr/local/pgsql/bin/pg_ctl -D /usr/data/postgresql/ -l logfile start
6) 创建日志目录及日志。
cd /usr/data/postgresql
mkdir log
touch log/server.log
7) 启动进程。
/usr/local/pgsql/bin/pg_ctl -D /usr/data/postgresql/ -l /usr/data/postgresql/log/server.log start
结束进程:/usr/local/pgsql/bin/pg_ctl -D /Data/postgresql/ -l /Data/postgresql/log/server.log stop
8) 检查进程。
ps -ef | grep pgsql
pgsql 15635 1 0 10:07 pts/0 00:00:00 /usr/local/pgsql/bin/postgres -D /Data/postgresql
pgsql 15637 15635 0 10:07 ? 00:00:00 postgres: checkpointer process
pgsql 15638 15635 0 10:07 ? 00:00:00 postgres: writer process
pgsql 15639 15635 0 10:07 ? 00:00:00 postgres: wal writer process
pgsql 15640 15635 0 10:07 ? 00:00:00 postgres: autovacuum launcher process
pgsql 15641 15635 0 10:07 ? 00:00:00 postgres: stats collector process
pgsql 15642 15635 0 10:07 ? 00:00:00 postgres: bgworker: logical replication launcher
9) 检查监听端口。
netstat -tlnp
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 15635/postgres
export PGDATA=/usr/local/postgresql/data
export PATH=/usr/local/postgresql/bin:$PATH
cd /usr/local/pgsql/bin
cd /usr/data/postgresql