一、安装环境

   操作系统:银河麒麟v10 sp3 x86_64

   内核版本:

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql

   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分钟

银河麒麟v10 sp1 安装 PostgreSQL 11.16_Data_02

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

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_03

 

银河麒麟v10 sp1 安装 PostgreSQL 11.16_Data_04

创建用户:

useradd postgres

修改密码:

echo "PGsql@123456" | passwd --stdin postgres

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_05

[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

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_06

2.3源码编译安装

 2.3.1 解压源码包  

cd /tools/postgresql

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_07

tar -zxvf postgresql-11.16.tar.gz

2.3.2 执行configure

    cd postgresql-11.16/

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_08

./configure --prefix=/usr/local/postgresql --with-pgport=5432 \--with-openssl \--with-libxml \--with-libxslt \--with-ossp-uuid \--with-systemd

银河麒麟v10 sp1 安装 PostgreSQL 11.16_Data_09

2.3.3 编译

        gmake -j 8 world  # 安装时间较长预计5分钟

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_10

2.3.4 安装

        gmake install-world   # 安装时间较长预计15分钟

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_11

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_12

备注

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_13

备注:

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

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_14

source /etc/profile.d/pgdb.sh

source /etc/profile   #刷新并使文件生效

银河麒麟v10 sp1 安装 PostgreSQL 11.16_Data_15

3.2 初始化数据

su - postgres  切换用户 

cd /usr/local/postgresql/bin

银河麒麟v10 sp1 安装 PostgreSQL 11.16_Data_16

 

/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data --encoding=UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_17

报错处理问题

[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"?

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_18

3.3 启动postgresql数据库

cd /usr/local/postgresql/bin/

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l logfile start

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_19

pg_ctl restart 重启

四、验证

查看当前数据库版本

银河麒麟v10 sp1 安装 PostgreSQL 11.16_postgresql_20

 

 

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

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_21

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

 

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_22

银河麒麟v10 sp1 安装 PostgreSQL 11.16_sql_23