一键编译安装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监听端口
说明:
- 该自动化部署工具仅供测试学习使用,生产环境请充分测试评估。
软件目录规划
软件目录自动化创建,不需要提前手工创建,目录及端口规划如下,
目录规划说明
| 软件版本 | 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




