银河麒麟v10 sp1 安装 PostgreSQL 11.16
一、安装环境
操作系统:银河麒麟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