暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

一键编译安装PG15_工具分享

一键编译安装PG15_工具分享

工具功能说明

1. 一键编译安装 pg9/pg10/pg11/pg12/pg13/pg14/pg15 2. 自动识别以下`configure` 参数--prefix/--enable-debug/--enable-cassert/--enable-tap-tests/--enable-dtrace 3. 一台服务器可以安装多个PG版本 4. 自动生成参数配置文件 5. 自动设置PG监听端口

说明:

  1. 该自动化部署工具仅供测试学习使用,生产环境请充分测试评估。

软件目录规划

软件目录自动化创建,不需要提前手工创建,目录及端口规划如下,

目录规划说明

软件版本 PGHOME PGDATA PG_WAL PG_ARCHIVE PGPORT PGUSER 环境变量文件
pg15 /u01/pg15/pgsql /u01/pg15/pgdata /u01/pg15/pgwal /u01/pg15/pgarchive 5432 postgres /home/postgres/pg15_profile
pg14 /u01/pg14/pgsql /u01/pg14/pgdata /u01/pg14/pgwal /u01/pg14/pgarchive 5414 postgres /home/postgres/pg14_profile
pg13 /u01/pg13/pgsql /u01/pg13/pgdata /u01/pg13/pgwal /u01/pg13/pgarchive 5413 postgres /home/postgres/pg13_profile
pg12 /u01/pg12/pgsql /u01/pg12/pgdata /u01/pg12/pgwal /u01/pg12/pgarchive 5412 postgres /home/postgres/pg12_profile
pg11 /u01/pg11/pgsql /u01/pg11/pgdata /u01/pg11/pgwal /u01/pg11/pgarchive 5411 postgres /home/postgres/pg11_profile
pg10 /u01/pg10/pgsql /u01/pg10/pgdata /u01/pg10/pgwal /u01/pg10/pgarchive 5410 postgres /home/postgres/pg10_profile
pg9 /u01/pg9/pgsql /u01/pg9/pgdata /u01/pg9/pgwal /u01/pg9/pgarchive 5409 postgres /home/postgres/pg9_profile

目录规划示例

[postgres@enmo u01]$ tree /u01 -L 2 /u01 ├── pg10 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal ├── pg11 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal ├── pg12 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal ├── pg13 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal ├── pg14 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal ├── pg15 │ ├── pgarchive │ ├── pgdata │ ├── pgsql │ └── pgwal └── pg9 ├── pgarchive ├── pgdata ├── pgsql └── pgwal

参数配置文件示例

[root@enmo ~]# tree /home/postgres /home/postgres ├── pg10_profile ├── pg11_profile ├── pg12_profile ├── pg13_profile ├── pg14_profile ├── pg15_profile └── pg9_profile 0 directories, 7 files [root@enmo ~]#

PG安装包路径

[root@enmo soft]# tree /soft/ /soft/ ├── postgresql-10.21.tar.bz2 ├── postgresql-11.16.tar.bz2 ├── postgresql-12.11.tar.bz2 ├── postgresql-13.7.tar.bz2 ├── postgresql-14.3.tar.bz2 ├── postgresql-15beta1.tar.bz2 ├── postgresql-9.6.24.tar.bz2 ├── rhel-server-7.5-x86_64-dvd.iso └── x_onekey.sh 0 directories, 9 files [root@enmo soft]#

软件包下载地址

https://www.modb.pro/download/592041

PG安装步骤

上传安装包

[root@enmo soft]# mkdir -p /soft [root@enmo soft]# cd /soft [root@enmo soft]# tree /soft /soft ├── postgresql-10.21.tar.bz2 ├── postgresql-11.16.tar.bz2 ├── postgresql-12.11.tar.bz2 ├── postgresql-13.7.tar.bz2 ├── postgresql-14.3.tar.bz2 ├── postgresql-15beta1.tar.bz2 ├── postgresql-9.6.24.tar.bz2 ├── rhel-server-7.5-x86_64-dvd.iso └── x_onekey.sh 0 directories, 9 files [root@enmo soft]#

软件安装

[root@enmo soft]# mv rhel-server-7.5-x86_64-dvd.iso yum.iso [root@enmo soft]# chmod a+x x_onekey.sh [root@enmo soft] sh x_onekey.sh -dt=pg \ -op=install \ -ht=single `#type: single/rac/ha` \ -v=pg15 `# version: pg9/pg10/pg11/pg12/pg13/pg14/pg15` \ -i=192.168.137.15 `#Public ip` \ -n=enmo `# hostname ` \ -pg_debug=yes `# Compiles all programs and libraries with debugging symbols ` \ -cassert=no `# Enables assertion checks in the server, which test for many "cannot happen" conditions. ` \ -tap_tests=no `# Enable tests using the Perl TAP tools ` \ -dtrace=no `# Compiles PostgreSQL with support for the dynamic tracing tool DTrace ` \ -yum=/soft/yum.iso `# yum location: /dev/cdrom or /soft/yum.iso`

验证测试

[root@enmo soft]# su - postgres Last login: Fri Jun 10 18:50:15 CST 2022 on pts/7 [postgres@enmo ~]$ source pg15_profile [postgres@enmo ~]$ pg_ctl start pg_ctl: another server might be running; trying to start server anyway waiting for server to start....2022-06-10 18:54:03.326 CST [103026] FATAL: lock file "postmaster.pid" already exists 2022-06-10 18:54:03.326 CST [103026] HINT: Is another postmaster (PID 21184) running in data directory "/u01/pg15/pgdata"? stopped waiting pg_ctl: could not start server Examine the log output. [postgres@enmo ~]$ pg_ctl status pg_ctl: server is running (PID: 21184) /u01/pg15/pgsql/bin/postgres [postgres@enmo ~]$ psql psql (15beta1) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges -----------+----------+----------+---------+------------+------------+-----------------+----------------------- postgres | postgres | UTF8 | C | en_US.utf8 | | libc | template0 | postgres | UTF8 | C | en_US.utf8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | en_US.utf8 | | libc | =c/postgres + | | | | | | | postgres=CTc/postgres (3 rows) postgres=# show port; port ------ 5432 (1 row) postgres=# \q [postgres@enmo ~]$

软件安装占用存储情况

[root@enmo u01]# du -sh * 99M pg10 101M pg11 107M pg12 110M pg13 117M pg14 118M pg15 94M pg9 [root@enmo u01]#

异常问题

问题一、checking for Perl modules required for TAP tests… Can’t locate IPC/Run.pm

安装时设置–enable-tap-tests存在以下问题

解决方案:

configure 时设置–enable-tap-tests,需要安装requires a Perl installation and the Perl module IPC::Run

--enable-tap-tests Enable tests using the Perl TAP tools. This requires a Perl installation and the Perl module IPC::Run. See Section 33.4 for more information.

安装perl-CPAN包

yum -y install perl-CPAN

配置服务器可连接外网

如使用使用虚拟机建议使用 NAT模式共享主机IP,网卡配置示例

[root@enmo network-scripts]# cat ifcfg-ens32 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens32" UUID="2f8ec315-ff69-4ae3-9929-1db03732cc29" DEVICE="ens32" ONBOOT="yes" IPADDR="192.168.137.15" PREFIX="24" GATEWAY="192.168.137.2" IPV6_PRIVACY="no" DNS1=114.114.114.114 [root@enmo network-scripts]#

使用以下命令测试

ping www.baidu.com

测试通过后安装 IPC::Run

cpan IPC::Run <--所有配置选择默认

清理历史安装文件

rm -rf /u01/pg15 [root@enmo soft]# rm -rf postgresql-15beta1

重建执行安装命令

[root@enmo soft] sh x_onekey.sh -dt=pg \ -op=install \ -ht=single `#type: single/rac/ha` \ -v=pg15 `# version: pg9/pg10/pg11/pg12/pg13/pg14/pg15` \ -i=192.168.137.15 `#Public ip` \ -n=enmo `# hostname ` \ -pg_debug=yes `# Compiles all programs and libraries with debugging symbols ` \ -cassert=no `# Enables assertion checks in the server, which test for many "cannot happen" conditions. ` \ -tap_tests=no `# Enable tests using the Perl TAP tools ` \ -dtrace=no `# Compiles PostgreSQL with support for the dynamic tracing tool DTrace ` \ -yum=/soft/yum.iso `# yum location: /dev/cdrom or /soft/yum.iso`
最后修改时间:2022-06-10 14:44:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论