六脉神剑之使用 yum 安装 PostgreSQL

作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看六脉神剑之使用 yum 安装 PostgreSQL,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!

前  言

PostgreSQL 是一个基于 POSTGRES 的对象关系数据库管理系统(ORDBMS),版本4.2,由加州大学伯克利分校计算机科学系开发。PostgreSQL 最初设想于 1986 年,1986 年也被视为 PostgreSQL 发展史的元年,当时被叫做 Berkley Postgres Project。该项目一直到 1994 年都处于演进和修改中,直到开发人员 Andrew Yu 和 Jolly Chen 在 Postgres 中添加了一个 SQL(StructuredQuery Language,结构化查询语言)翻译程序,该版本叫做Postgres95,在开放源代码社区发放。1996 年,再次对 Postgres95 做了较大的改动,并将其作为 PostgresSQL 6.0 版发布。

2008 年发布了 PostgreSQL8.0,从这个版本开始支持 Windows 操作系统。
2010 年 9 月份,PostgreSQL 发行了 9.0.0 版本。
2017 年 10 月份发布了 10 版本。
2018 年 10 月份发布了 11 版本。
2019 年 9 月份发布了 12 版本。
2020 年 9 月份发布了 13 版本。
2021 年 9 月份发布了 14 版本。
2022 年 10 月份发布了 15 版本。
2023 年 9 月份发布了 16 版本。

db-engines 排行榜上 PG 排名第四名且一直处于上升趋势,在国内也比较火,未来发展趋势不可估量,且很多国产数据库也是基于 PG 的二次开发,很多功能原理相似,学习了解 PG 势在必行,下面我们来使用 yum 安装一个 PostgreSQL 数据库并简单的进行增删改查,方便快捷六步即可完成,特别适合开发测试和运维人员来初步学习和使用。另外生产环境一般使用编译安装,可以自定义编译一些参数,这里可以参考我以前写的CentOS6.7 安装 PostgreSQL10.9 详细教程。

系统要求:配置 1c2g 文件系统 10g, Linux 7 可上网即可安装 PG。































[root@jiekexu1 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/sda3        46G   11G   36G  23% /devtmpfs        1.9G     0  1.9G   0% /devtmpfs           1.9G   28K  1.9G   1% /dev/shmtmpfs           1.9G  196M  1.7G  11% /runtmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup/dev/sda1       297M  157M  140M  53% /boottmpfs           378M     0  378M   0% /run/user/0[root@jiekexu1 ~]# [root@jiekexu1 ~]# [root@jiekexu1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@jiekexu1 ~]# free -h              total        used        free      shared  buff/cache   availableMem:           3.7G        762M        281M        962M        2.7G        1.3GSwap:            0B          0B          0B[root@jiekexu1 ~]# ping www.baidu.comPING www.baidu.com (39.156.66.18) 56(84) bytes of data.64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=128 time=10.5 ms64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=2 ttl=128 time=12.9 ms64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=3 ttl=128 time=15.9 ms64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=4 ttl=128 time=8.45 ms64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=5 ttl=128 time=11.9 ms^C--- www.baidu.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 8103msrtt min/avg/max/mdev = 8.451/11.988/15.997/2.514 ms[root@jiekexu1 ~]# uname -aLinux jiekexu1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

1. 创建 postgres 用户


















groupadd -g 1006 postgresuseradd -u 1006 -g 1006 postgres
echo "postgres" | passwd --stdin postgres
--passwd postgres--密码:postgres
# 关闭 selinux:setenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configcat /etc/selinux/config
# 关闭防火墙:systemctl status firewalld.servicesystemctl stop firewalld.servicesystemctl disable firewalld.service

2. 修改 yum 源



yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm















































[root@jiekexu1 ~]# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmLoaded plugins: fastestmirror, langpackspgdg-redhat-repo-latest.noarch.rpm                                                                        | 8.6 kB  00:00:00     Examining /var/tmp/yum-root-4EAy0I/pgdg-redhat-repo-latest.noarch.rpm: pgdg-redhat-repo-42.0-32.noarchMarking /var/tmp/yum-root-4EAy0I/pgdg-redhat-repo-latest.noarch.rpm to be installedResolving Dependencies--> Running transaction check---> Package pgdg-redhat-repo.noarch 0:42.0-32 will be installed--> Finished Dependency Resolutionbase/7/x86_64                                                                                             | 3.6 kB  00:00:00     extras/7/x86_64                                                                                           | 2.9 kB  00:00:00     extras/7/x86_64/primary_db                                                                                | 250 kB  00:00:00     mysql-connectors-community/x86_64                                                                         | 2.6 kB  00:00:00     mysql-connectors-community/x86_64/primary_db                                                              | 100 kB  00:00:00     mysql-tools-community/x86_64                                                                              | 2.6 kB  00:00:00     mysql-tools-community/x86_64/primary_db                                                                   |  94 kB  00:00:00     mysql57-community/x86_64                                                                                  | 2.6 kB  00:00:00     mysql57-community/x86_64/primary_db                                                                       | 349 kB  00:00:00     updates/7/x86_64                                                                                          | 2.9 kB  00:00:00     updates/7/x86_64/primary_db                                                                               |  23 MB  00:00:10     
Dependencies Resolved
================================================================================================================================= Package                        Arch                 Version                 Repository                                     Size=================================================================================================================================Installing: pgdg-redhat-repo               noarch               42.0-32                 /pgdg-redhat-repo-latest.noarch                13 k
Transaction Summary=================================================================================================================================Install  1 Package
Total size: 13 kInstalled size: 13 kDownloading packages:Running transaction checkRunning transaction testTransaction test succeededRunning transaction  Installing : pgdg-redhat-repo-42.0-32.noarch                                                                               1/1  Verifying  : pgdg-redhat-repo-42.0-32.noarch                                                                               1/1
Installed:  pgdg-redhat-repo.noarch 0:42.0-32                                                                                              
Complete!

3. 使用 yum 直接安装


yum install -y postgresql13-server


当然这里你也可以直接 yum install -y postgresql14-server 安装今年 8 月份发布的 14.9 版本,但是 15 版本的不能直接安装,需要依赖 libzstd.so.1 软件包才可以。我这里安装的是今年 8 月份发布的 13.12 版本。































[root@jiekexu1 ~]# yum install postgresql15-serverLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.comResolving Dependencies--> Running transaction check---> Package postgresql15-server.x86_64 0:15.4-1PGDG.rhel7 will be installed--> Processing Dependency: postgresql15-libs(x86-64) = 15.4-1PGDG.rhel7 for package: postgresql15-server-15.4-1PGDG.rhel7.x86_64--> Processing Dependency: postgresql15(x86-64) = 15.4-1PGDG.rhel7 for package: postgresql15-server-15.4-1PGDG.rhel7.x86_64--> Processing Dependency: libzstd.so.1()(64bit) for package: postgresql15-server-15.4-1PGDG.rhel7.x86_64--> Running transaction check---> Package postgresql15.x86_64 0:15.4-1PGDG.rhel7 will be installed--> Processing Dependency: libzstd >= 1.4.0 for package: postgresql15-15.4-1PGDG.rhel7.x86_64--> Processing Dependency: libzstd.so.1()(64bit) for package: postgresql15-15.4-1PGDG.rhel7.x86_64---> Package postgresql15-libs.x86_64 0:15.4-1PGDG.rhel7 will be installed---> Package postgresql15-server.x86_64 0:15.4-1PGDG.rhel7 will be installed--> Processing Dependency: libzstd.so.1()(64bit) for package: postgresql15-server-15.4-1PGDG.rhel7.x86_64--> Finished Dependency ResolutionError: Package: postgresql15-server-15.4-1PGDG.rhel7.x86_64 (pgdg15)           Requires: libzstd.so.1()(64bit)Error: Package: postgresql15-15.4-1PGDG.rhel7.x86_64 (pgdg15)           Requires: libzstd.so.1()(64bit)Error: Package: postgresql15-15.4-1PGDG.rhel7.x86_64 (pgdg15)           Requires: libzstd >= 1.4.0 You could try using --skip-broken to work around the problem** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit)2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit)

直接安装则是找不到这个包,那么我们可以安装如下其他两个包代替,这样也就可以直接安装 15 版本的最新版了。














[root@jiekexu1 ~]# yum install libzstd*Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.comNo package libzstd* available.Error: Nothing to do
[root@jiekexu1 ~]# yum install epel-release.noarch -y[root@jiekexu1 ~]# yum install libzstd.x86_64 -y
[root@jiekexu1 ~]# yum install postgresql15-server

下面我这里是直接安装 PG 13.12 版本。






























































































































[root@jiekexu1 ~]# yum install postgresql13-server -yLoaded plugins: fastestmirror, langpacksDetermining fastest mirrors * base: mirrors.huaweicloud.com * extras: mirrors.huaweicloud.com * updates: mirrors.bfsu.edu.cnpgdg-common/7/x86_64/signature                                                                            |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg-common/7/x86_64/signature                                                                            | 2.9 kB  00:00:00 !!! pgdg11/7/x86_64/signature                                                                                 |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg11/7/x86_64/signature                                                                                 | 3.6 kB  00:00:00 !!! pgdg12/7/x86_64/signature                                                                                 |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg12/7/x86_64/signature                                                                                 | 3.6 kB  00:00:00 !!! pgdg13/7/x86_64/signature                                                                                 |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg13/7/x86_64/signature                                                                                 | 3.6 kB  00:00:00 !!! pgdg14/7/x86_64/signature                                                                                 |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg14/7/x86_64/signature                                                                                 | 3.6 kB  00:00:00 !!! pgdg15/7/x86_64/signature                                                                                 |  198 B  00:00:00     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGpgdg15/7/x86_64/signature                                                                                 | 3.6 kB  00:00:00 !!! (1/11): pgdg11/7/x86_64/group_gz                                                                          |  245 B  00:00:01     (2/11): pgdg13/7/x86_64/group_gz                                                                          |  246 B  00:00:00     (3/11): pgdg-common/7/x86_64/primary_db                                                                   | 200 kB  00:00:02     (4/11): pgdg12/7/x86_64/group_gz                                                                          |  245 B  00:00:02     (5/11): pgdg14/7/x86_64/group_gz                                                                          |  244 B  00:00:00     (6/11): pgdg15/7/x86_64/group_gz                                                                          |  246 B  00:00:00     (7/11): pgdg15/7/x86_64/primary_db                                                                        | 143 kB  00:00:00     (8/11): pgdg12/7/x86_64/primary_db                                                                        | 405 kB  00:00:07     (9/11): pgdg13/7/x86_64/primary_db                                                                        | 326 kB  00:00:15     (10/11): pgdg14/7/x86_64/primary_db                                                                       | 225 kB  00:00:23     (11/11): pgdg11/7/x86_64/primary_db                                                                       | 517 kB  00:00:38     Resolving Dependencies--> Running transaction check---> Package postgresql13-server.x86_64 0:13.12-1PGDG.rhel7 will be installed--> Processing Dependency: postgresql13-libs(x86-64) = 13.12-1PGDG.rhel7 for package: postgresql13-server-13.12-1PGDG.rhel7.x86_64--> Processing Dependency: postgresql13(x86-64) = 13.12-1PGDG.rhel7 for package: postgresql13-server-13.12-1PGDG.rhel7.x86_64--> Processing Dependency: libpq.so.5()(64bit) for package: postgresql13-server-13.12-1PGDG.rhel7.x86_64--> Running transaction check---> Package postgresql13.x86_64 0:13.12-1PGDG.rhel7 will be installed---> Package postgresql13-libs.x86_64 0:13.12-1PGDG.rhel7 will be installed--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================= Package                              Arch                    Version                              Repository               Size=================================================================================================================================Installing: postgresql13-server                  x86_64                  13.12-1PGDG.rhel7                    pgdg13                  5.4 MInstalling for dependencies: postgresql13                         x86_64                  13.12-1PGDG.rhel7                    pgdg13                  1.4 M postgresql13-libs                    x86_64                  13.12-1PGDG.rhel7                    pgdg13                  385 k
Transaction Summary=================================================================================================================================Install  1 Package (+2 Dependent packages)
Total download size: 7.1 MInstalled size: 31 MDownloading packages:warning: /var/cache/yum/x86_64/7/pgdg13/packages/postgresql13-libs-13.12-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEYPublic key for postgresql13-libs-13.12-1PGDG.rhel7.x86_64.rpm is not installed(1/3): postgresql13-libs-13.12-1PGDG.rhel7.x86_64.rpm                                                     | 385 kB  00:00:02     (2/3): postgresql13-13.12-1PGDG.rhel7.x86_64.rpm                                                          | 1.4 MB  00:00:03     (3/3): postgresql13-server-13.12-1PGDG.rhel7.x86_64.rpm                                                   | 5.4 MB  00:00:05     ---------------------------------------------------------------------------------------------------------------------------------Total                                                                                            840 kB/s | 7.1 MB  00:00:08     Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGImporting GPG key 0x442DF0F8: Userid     : "PostgreSQL RPM Building Project " Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8 Package    : pgdg-redhat-repo-42.0-32.noarch (installed) From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDGRunning transaction checkRunning transaction testTransaction test succeededRunning transaction  Installing : postgresql13-libs-13.12-1PGDG.rhel7.x86_64                                                                    1/3  Installing : postgresql13-13.12-1PGDG.rhel7.x86_64                                                                         2/3  Installing : postgresql13-server-13.12-1PGDG.rhel7.x86_64                                                                  3/3  Verifying  : postgresql13-13.12-1PGDG.rhel7.x86_64                                                                         1/3  Verifying  : postgresql13-server-13.12-1PGDG.rhel7.x86_64                                                                  2/3  Verifying  : postgresql13-libs-13.12-1PGDG.rhel7.x86_64                                                                    3/3
Installed:  postgresql13-server.x86_64 0:13.12-1PGDG.rhel7                                                                                
Dependency Installed:  postgresql13.x86_64 0:13.12-1PGDG.rhel7                      postgresql13-libs.x86_64 0:13.12-1PGDG.rhel7                    
Complete!

4. 初始化数据库


postgresql-13-setup initdb




[root@jiekexu1 ~]# postgresql-13-setup initdbInitializing database ... OK


初始化之后便会生成 postgresql.conf 配置文件,我们查一下默认的路径为 /var/lib/pgsql 目录。






































[root@jiekexu1 log]# find / -name postgresql.conf/var/lib/pgsql/13/data/postgresql.conf/opt/opengauss3.1/data/db/postgresql.conf[root@jiekexu1 log]# more /var/lib/pgsql/13/data/postgresql.conf
[root@jiekexu1 log]# cd /var/lib/pgsql/13[root@jiekexu1 13]# lltotal 8drwx------  2 postgres postgres    6 Aug  9 21:02 backupsdrwx------ 20 postgres postgres 4096 Oct 10 00:45 data-rw-------  1 postgres postgres  921 Oct 10 00:27 initdb.log[root@jiekexu1 13]# more initdb.log 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 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 /var/lib/pgsql/13/data ... okcreating subdirectories ... okselecting dynamic shared memory implementation ... posixselecting default max_connections ... 100selecting default shared_buffers ... 128MBselecting default time zone ... Asia/Shanghaicreating configuration files ... okrunning bootstrap script ... okperforming post-bootstrap initialization ... oksyncing data to disk ... ok
Success. You can now start the database server using:
   /usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data/ -l logfile start
[root@jiekexu1 13]#

5. 使用 system 启动数据库






# 默认初始化数据库路径:/var/lib/pgsql/13/data# 启动数据库systemctl enable postgresql-13systemctl start postgresql-13



























































[root@jiekexu1 ~]# systemctl enable postgresql-13Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-13.service to /usr/lib/systemd/system/postgresql-13.service.[root@jiekexu1 ~]# systemctl start postgresql-13Job for postgresql-13.service failed because the control process exited with error code. See "systemctl status postgresql-13.service" and "journalctl -xe" for details.[root@jiekexu1 ~]# systemctl status postgresql-13.service● postgresql-13.service - PostgreSQL 13 database server   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)   Active: failed (Result: exit-code) since Tue 2023-10-10 00:27:59 CST; 43s ago     Docs: https://www.postgresql.org/docs/13/static/  Process: 79519 ExecStart=/usr/pgsql-13/bin/postmaster -D ${PGDATA} (code=exited, status=1/FAILURE)  Process: 79512 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 79519 (code=exited, status=1/FAILURE)
Oct 10 00:27:58 jiekexu1 systemd[1]: Starting PostgreSQL 13 database server...Oct 10 00:27:59 jiekexu1 postmaster[79519]: 2023-10-10 00:27:59.239 CST [79519] LOG:  redirecting log output to logging ...rocessOct 10 00:27:59 jiekexu1 postmaster[79519]: 2023-10-10 00:27:59.239 CST [79519] HINT:  Future log output will appear in ..."log".Oct 10 00:27:59 jiekexu1 systemd[1]: postgresql-13.service: main process exited, code=exited, status=1/FAILUREOct 10 00:27:59 jiekexu1 systemd[1]: Failed to start PostgreSQL 13 database server.Oct 10 00:27:59 jiekexu1 systemd[1]: Unit postgresql-13.service entered failed state.Oct 10 00:27:59 jiekexu1 systemd[1]: postgresql-13.service failed.Hint: Some lines were ellipsized, use -l to show in full.
[root@jiekexu1 ~]# journalctl -xe-- -- Unit session-36653.scope has finished starting up.-- -- The start-up result is done.Oct 10 00:28:01 jiekexu1 CROND[79527]: (omm) CMD (source ~/.bashrc;python3 /opt/opengauss3.1/install/om/script/local/CheckSshAgenOct 10 00:28:01 jiekexu1 systemd[1]: Removed slice User Slice of omm.-- Subject: Unit user-1002.slice has finished shutting down-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- Unit user-1002.slice has finished shutting down.Oct 10 00:29:01 jiekexu1 systemd[1]: Created slice User Slice of omm.-- Subject: Unit user-1002.slice has finished start-up-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- Unit user-1002.slice has finished starting up.-- -- The start-up result is done.Oct 10 00:29:01 jiekexu1 systemd[1]: Started Session 36654 of user omm.-- Subject: Unit session-36654.scope has finished start-up-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- Unit session-36654.scope has finished starting up.-- -- The start-up result is done.Oct 10 00:29:01 jiekexu1 CROND[79660]: (omm) CMD (source ~/.bashrc;python3 /opt/opengauss3.1/install/om/script/local/CheckSshAgenOct 10 00:29:01 jiekexu1 systemd[1]: Removed slice User Slice of omm.-- Subject: Unit user-1002.slice has finished shutting down-- Defined-By: systemd-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- Unit user-1002.slice has finished shutting down.

很遗憾报错了,根据上面提示使用 -l 显示更多信息。HINT:  Future log output will appear in directory "log"

















[root@jiekexu1 13]# systemctl status postgresql-13.service -l● postgresql-13.service - PostgreSQL 13 database server   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)   Active: failed (Result: exit-code) since Tue 2023-10-10 00:37:02 CST; 13min ago     Docs: https://www.postgresql.org/docs/13/static/  Process: 80832 ExecStart=/usr/pgsql-13/bin/postmaster -D ${PGDATA} (code=exited, status=1/FAILURE)  Process: 80826 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 80832 (code=exited, status=1/FAILURE)
Oct 10 00:37:02 jiekexu1 systemd[1]: Starting PostgreSQL 13 database server...Oct 10 00:37:02 jiekexu1 postmaster[80832]: 2023-10-10 00:37:02.865 CST [80832] LOG:  redirecting log output to logging collector processOct 10 00:37:02 jiekexu1 postmaster[80832]: 2023-10-10 00:37:02.865 CST [80832] HINT:  Future log output will appear in directory "log".Oct 10 00:37:02 jiekexu1 systemd[1]: postgresql-13.service: main process exited, code=exited, status=1/FAILUREOct 10 00:37:02 jiekexu1 systemd[1]: Failed to start PostgreSQL 13 database server.Oct 10 00:37:02 jiekexu1 systemd[1]: Unit postgresql-13.service entered failed state.Oct 10 00:37:02 jiekexu1 systemd[1]: postgresql-13.service failed.

由此我们知道错误日志在 log 文件夹里面。/var/lib/pgsql/13/data/log/postgresql-Tue.log


















































[root@jiekexu1 log]# cd /var/lib/pgsql/13/data/log[root@jiekexu1 log]# pwd/var/lib/pgsql/13/data/log[root@jiekexu1 log]# lltotal 4-rw------- 1 postgres postgres 3333 Oct 10 00:46 postgresql-Tue.log[root@jiekexu1 log]# more postgresql-Tue.log 2023-10-10 00:27:59.239 CST [79519] LOG:  starting PostgreSQL 13.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit2023-10-10 00:27:59.240 CST [79519] LOG:  could not bind IPv6 address "::1": Address already in use2023-10-10 00:27:59.240 CST [79519] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:27:59.240 CST [79519] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:27:59.240 CST [79519] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:27:59.240 CST [79519] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:27:59.240 CST [79519] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:27:59.240 CST [79519] WARNING:  could not create listen socket for "localhost"2023-10-10 00:27:59.240 CST [79519] FATAL:  could not create any TCP/IP sockets2023-10-10 00:27:59.242 CST [79519] LOG:  database system is shut down2023-10-10 00:37:02.865 CST [80832] LOG:  starting PostgreSQL 13.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit2023-10-10 00:37:02.869 CST [80832] LOG:  could not bind IPv6 address "::1": Address already in use2023-10-10 00:37:02.869 CST [80832] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:37:02.869 CST [80832] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:37:02.869 CST [80832] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:37:02.869 CST [80832] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:37:02.869 CST [80832] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:37:02.869 CST [80832] WARNING:  could not create listen socket for "localhost"2023-10-10 00:37:02.869 CST [80832] FATAL:  could not create any TCP/IP sockets2023-10-10 00:37:02.871 CST [80832] LOG:  database system is shut down2023-10-10 00:46:18.607 CST [82413] LOG:  starting PostgreSQL 13.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit2023-10-10 00:46:18.609 CST [82413] LOG:  could not bind IPv6 address "::1": Address already in use2023-10-10 00:46:18.609 CST [82413] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:46:18.609 CST [82413] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:46:18.609 CST [82413] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:46:18.609 CST [82413] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 00:46:18.609 CST [82413] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.2023-10-10 00:46:18.609 CST [82413] WARNING:  could not create listen socket for "localhost"2023-10-10 00:46:18.609 CST [82413] FATAL:  could not create any TCP/IP sockets2023-10-10 00:46:18.610 CST [82413] LOG:  database system is shut down

通过日志看到无法启动的原因则是 5432 端口被占用 “could not create any TCP/IP sockets”,原先安装过 opengauss3.1 版本,占用了 5432 端口,那么我们将端口修改为 54321 吧。












[root@jiekexu1 bin]# netstat -anlp | grep 5432tcp        0      0 192.168.75.11:5432      0.0.0.0:*               LISTEN      24405/gaussdb       tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      24405/gaussdb       tcp6       0      0 ::1:5432                :::*                    LISTEN      24405/gaussdb       unix  2      [ ACC ]     STREAM     LISTENING     5833403  24405/gaussdb        /opt/opengauss3.1/tmp/.s.PGSQL.5432
[root@jiekexu1 ~]# vim /var/lib/pgsql/13/data/postgresql.conf[root@jiekexu1 ~]# more /var/lib/pgsql/13/data/postgresql.conf | grep -w 'port'port = 54321                            # (change requires restart)                                        #   %r = remote host and port[root@jiekexu1 ~]# systemctl start postgresql-13

正常启动 postgresql-Tue.log 日志如下











2023-10-10 01:15:23.995 CST [87696] LOG:  starting PostgreSQL 13.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit2023-10-10 01:15:23.995 CST [87696] LOG:  listening on IPv6 address "::1", port 543212023-10-10 01:15:23.995 CST [87696] LOG:  listening on IPv4 address "127.0.0.1", port 543212023-10-10 01:15:23.995 CST [87696] LOG:  could not bind IPv4 address "127.0.0.1": Address already in use2023-10-10 01:15:23.995 CST [87696] HINT:  Is another postmaster already running on port 54321? If not, wait a few seconds and retry.2023-10-10 01:15:23.997 CST [87696] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.54321"2023-10-10 01:15:24.000 CST [87696] LOG:  listening on Unix socket "/tmp/.s.PGSQL.54321"2023-10-10 01:15:24.002 CST [87699] LOG:  database system was shut down at 2023-10-10 00:27:11 CST2023-10-10 01:15:24.045 CST [87696] LOG:  database system is ready to accept connections

6. 登录数据库



su - postgrespsql -U postgres -d postgres -p 54321


查看版本,如果是默认端口,直接使用 psql -version 则可以看到版本为 13.12,否则还需要如下添加端口号才可以。











[root@jiekexu1 ~]# su - postgresLast login: Tue Oct 10 00:46:15 CST 2023 on pts/0[postgres@jiekexu1 ~]$ psql -versionpsql: error: could not connect to server: No such file or directory        Is the server running locally and accepting        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?[postgres@jiekexu1 ~]$ psql -version -p 54321psql (13.12)Type "help" for help.postgres=# \q


登录数据库





















[postgres@jiekexu1 ~]$ psql -U postgres -d postgres -p 54321psql (13.12)Type "help" for help.
postgres=# \l                                  List of databases   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   -----------+----------+----------+-------------+-------------+----------------------- postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres(3 rows)
postgres=# select version();                                                 version                                                  ---------------------------------------------------------------------------------------------------------- PostgreSQL 13.12 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit(1 row)

使用数据库


创建数据库,查看数据库,删除数据库
































postgres=# select * from pg_database;postgres=# create database testdb;postgres=# create database JiekeXu;CREATE DATABASEpostgres=# \l                            List ofdatabases  Name    |  Owner  | Encoding | Collate | Ctype |  Access privileges  -----------+----------+----------+---------+-------+----------------------- jiekexu  | postgres | UTF8     | C       | C    | postgres | postgres | UTF8     | C       | C    | template0 | postgres | UTF8     | C      | C     | =c/postgres          +          |          |          |         |      | postgres=CTc/postgres template1 | postgres | UTF8     | C      | C     | =c/postgres          +          |          |          |         |      | postgres=CTc/postgres testdb   | postgres | UTF8     | C       | C    |(5 rows) postgres=# drop database TestDB;DROP DATABASEpostgres=# \l                             List of databases  Name    |  Owner  | Encoding | Collate | Ctype |  Access privileges  -----------+----------+----------+---------+-------+----------------------- jiekexu  | postgres | UTF8     | C       | C    | postgres | postgres | UTF8     | C       | C    | template0 | postgres | UTF8     | C      | C     | =c/postgres          +          |          |          |         |      | postgres=CTc/postgres template1 | postgres | UTF8     | C      | C     | =c/postgres          +          |          |         |         |       | postgres=CTc/postgres(4 rows)

创建表,查看表,删除表,截断表

1、查看数据库大小










postgres=# select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS size from pg_database;   datname  |  size   -----------+--------- postgres  | 7885 kB jiekexu   | 7901 kB template1 | 7737 kB template0 | 7737 kB testdb    | 7737 kB(5 rows)


2、查看某一个数据库大小






postgres=# select pg_database_size('jiekexu'); pg_database_size ------------------          8090159(1 row)


3、按顺序查看索引



select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc;

4、查看所有表的大小


select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc;

切换数据库



postgres=# \c jiekexuYou are now connected to database"jiekexu" as user “postgres”.

创建表









jiekexu=# create table test(id int,name char(20), age int);CREATE TABLEjiekexu=#jiekexu=# insert into  test values(1,'JiekeXu',18);INSERT 0 1jiekexu=# insert into  test values(2,'Adventure',25);INSERT 0 1jiekexu=#


查看表信息

















jiekexu=# \d        List of relations Schema | Name | Type  |  Owner  --------+-------+-------+---------- public | test | table | postgres public | test1 | table | postgres public | test2 | table | postgres(3 rows) jiekexu=# \d  test                   Table"public.test" Column |    Type      | Collation | Nullable |Default--------+---------------+-----------+----------+--------- id     |integer       |          |          | name   |character(20) |           |          | age    |integer


查看表内容







jiekexu=# select * from test; id|         name         | age----+----------------------+-----  1 |JiekeXu              |  18  2 |Adventure            |  25(2 rows)


修改表内容












jiekexu=# update test set age=26 where name='JiekeXu';UPDATE 1jiekexu=# commit;WARNING: there is no transaction in progressCOMMITjiekexu=# select * from test; id|         name         | age----+----------------------+-----  2 |Adventure            |  25  1 |JiekeXu              |  26(2 rows)


删除表





























drop table test2;delete from test;jiekexu=# select * from test; id|         name         | age----+----------------------+-----  2 |Adventure            |  25  1 |JiekeXu              |  26  2 |BreatHeat            |  22(3 rows) jiekexu=# delete  from test where age=22;DELETE 1jiekexu=# select * from test; id|         name         | age----+----------------------+-----  2 |Adventure            |  25  1 |JiekeXu              |  26(2 rows)jiekexu=# drop table test2;DROP TABLEjiekexu=#jiekexu=# \d        List of relations Schema | Name | Type  |  Owner  --------+-------+-------+---------- public | test | table | postgres public | test1 | table | postgres(2 rows)


截断表


Truncate 截断表如果不是自动提交则是可以回滚,则 truncate 属于 DML 语句。












































jiekexu=# create table t (id int);CREATE TABLEjiekexu=# insert into t values (1),(2),(3),(4);INSERT 0 4jiekexu=# \d         List of relations Schema | Name | Type  |  Owner   --------+------+-------+---------- public | t    | table | postgres(1 row)
jiekexu=# select * from t; id ----  1  2  3  4(4 rows)
jiekexu=# commit;WARNING:  there is no transaction in progressCOMMITjiekexu=# jiekexu=# begin;BEGINjiekexu=*# truncate table t;TRUNCATE TABLEjiekexu=*# select * from t; id ----(0 rows)
jiekexu=*# rollback;ROLLBACKjiekexu=# select * from t; id ----  1  2  3  4(4 rows)


查看用户






postgres=# select * from pg_user; usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig ----------+----------+-------------+----------+---------+--------------+----------+----------+----------- postgres |       10 | t           | t        | t       | t            | ******** |          | (1 row)


查看数据库 jiekexu 用户的拥有者是 postgres







postgres=# \l jiekexu                          List of databases  Name   |  Owner   | Encoding | Collate | Ctype | Access privileges ---------+----------+----------+---------+-------+------------------- jiekexu | postgres | UTF8     | C       | C     | (1 row)


最后,使用 \q 或者 Ctrl + d 退出命令行



postgres=# \q[postgres@jiekexu1 ~]$


PG 常用元命令

全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我公众号【JiekeXu DBA之路】,第一时间一起学习新知识!以下三个地址可以找到我,其他地址均属于盗版侵权爬取我的文章,而且代码格式、图片等均有错乱,不方便阅读,欢迎来我公众号或者墨天轮地址关注我,第一时间收获最新消息。

————————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
————————————————————————————



分享几个数据库备份脚本

Oracle 表碎片检查及整理方案

OGG|Oracle GoldenGate 基础2022 年公众号历史文章合集整理

Oracle 19c RAC 遇到的几个问题

OGG|Oracle 数据迁移后比对一致性

OGG|Oracle GoldenGate 微服务架构

Oracle 查询表空间使用率超慢问题一则

Oracle 11g升级到19c需要关注的几个问题

国产数据库|TiDB 5.4 单机快速安装初体验

Oracle ADG 备库停启维护流程及增量恢复

Linux 环境搭建 MySQL8.0.28 主从同步环境

从国产数据库调研报告中你都能了解哪些信息及我的总结建议

请使用浏览器的分享功能分享到微信等