随便学习- PostgreSQL的设置教程(RHEL8)

大家好!

我是haru,是从医疗行业转到IT行业挑战的,现在是第二年了。

由于在第一年的工作中主要涉及Oracle数据库,恕我以愧,我完全没有接触过PostgreSQL。因此,我想分享一下如何构建PostgreSQL的学习环境。

安装服务器的操作系统是 RHEL8。
顺便提一下,要确认 RHEL 的版本,可以使用 cat 命令或 uname -a 命令来查看。

[参考]
▼确认 Linux 版本的方法
https://qiita.com/bezeklik/items/5edb638becd8858abb80

[root@postgreSQL ~]# cat /proc/version
Linux version 4.18.0-372.9.1.el8.x86_64 (****) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC)) #1 SMP Fri Apr 15 22:12:19 EDT 2022
[root@postgreSQL ~]# uname -a
Linux postgreSQL 4.18.0-372.9.1.el8.x86_64 #1 SMP Fri Apr 15 22:12:19 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

预先准备

在构建之前,我们简单地学习一下PostgreSQL。

大致概述
这是一个完全开源的数据库,所有源代码都是公开的。
即使添加或改进了其独特的功能,也没有公开的义务。
因此,近年来它被广泛用于许多系统开发,以达到降低成本的目的。
目前,它在全球排名第四。

1986年:在加州大学伯克利分校,迈克尔·斯通布雷克担任中心人物,开发了POSTGRES作为Ingres的继任者。
1995年:在加州大学开发结束后,安德鲁·尤和乔丽·陈进行了改进,使SQL可使用,并以Postgres95的名称发布。
1996年:从Postgres95更名为PostgreSQL。

由于以用户社区为主体的支持,与其他关系数据库管理系统相比,无法期望开发者在故障发生时提供支持。然而,有些公司提供商业支持,因此也可以选择使用该选项。

草率的价格
免费

简略的平台
广泛的

与MySQL不同,PostgreSQL擅长处理复杂且大量的数据操作和管理。
除了处理表格和列的信息外,它还能定义数据类型、索引类型和函数,具有良好的多处理并发性。
此外,相比MySQL,PostgreSQL擅长处理庞大的数据排序,其排序算法更为优秀。

【参考】
▼维基百科
https://zh.wikipedia.org/wiki/PostgreSQL

▼DB-Engines 排名 – 趋势人气
请访问https://db-engines.com/en/ranking_trend 获取更多信息。

那么,我们开始构建吧。

下载PostgreSQL软件包

从网站上下载PostgreSQL软件包。

[参考]
▼ PostgreSQL用户协会
https://www.postgresql.jp/download

[root@postgreSQL tmp]# ll
合計 36
・・・
-rw-r--r--. 1 root     root     13168 10月 14 03:04 pgdg-redhat-repo-latest.noarch.rpm
・・・

使用rpm命令安装软件包。

接下来,使用rpm命令安装下载的软件包。

[root@postgreSQL tmp]# rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
警告: pgdg-redhat-repo-latest.noarch.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
        パッケージ pgdg-redhat-repo-42.0-27.noarch は既にインストールされています。

-pgdg~ ファイルが /etc/yum.repo.d/ 配下にインストールされたか確認
[root@postgreSQL etc]# cd yum.repos.d
[root@postgreSQL yum.repos.d]# ll
合計 16
-rw-r--r--. 1 root root 11419  9月 29 10:22 pgdg-redhat-all.repo
-rw-r--r--. 1 root root   358 10月 14 02:31 redhat.repo

[root@postgreSQL yum.repos.d]# pwd
/etc/yum.repos.d

搜索要安装的PostgreSQL。

我会查找要安装的软件包的名称。

[root@postgreSQL yum.repos.d]# yum search postgresql
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

メタデータの期限切れの最終確認: 0:24:39 時間前の 2022年10月14日 03時14分03秒 に実施しました。
====================================== 名前 & 概要 一致: postgresql ======================================
postgresql-unit10.x86_64 : SI Units for PostgreSQL
postgresql-unit11.x86_64 : SI Units for PostgreSQL
postgresql-unit12.x86_64 : SI Units for PostgreSQL
postgresql-unit13.x86_64 : SI Units for PostgreSQL
・
・
・
postgresql15-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql15-server.x86_64 : The programs needed to create and run a PostgreSQL server /*今回はこれをインストールします。*/
postgresql15-tcl.x86_64 : A Tcl client library for PostgreSQL
postgresql15-test.x86_64 : The test suite distributed with PostgreSQL

安装postgresql15-server.x86_64

我们将使用yum工具来安装通过3在查找到的postgresql15-server.x86_64版本。

[root@postgreSQL yum.repos.d]# yum install postgresql15-server.x86_64
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64                        111  B/s | 195  B     00:01
PostgreSQL 15 for RHEL / Rocky 8 - x86_64                                  94  B/s | 195  B     00:02
PostgreSQL 14 for RHEL / Rocky 8 - x86_64                                  87  B/s | 195  B     00:02
PostgreSQL 13 for RHEL / Rocky 8 - x86_64                                  89  B/s | 195  B     00:02
PostgreSQL 12 for RHEL / Rocky 8 - x86_64                                 112  B/s | 195  B     00:01
PostgreSQL 11 for RHEL / Rocky 8 - x86_64                                  89  B/s | 195  B     00:02
PostgreSQL 10 for RHEL / Rocky 8 - x86_64                                  84  B/s | 195  B     00:02
依存関係が解決しました。
==========================================================================================================
 パッケージ                      アーキテクチャー   バージョン                   リポジトリー       サイズ
==========================================================================================================
インストール:
 postgresql15-server             x86_64             15.0-1PGDG.rhel8             pgdg15             5.8 M
依存関係のインストール:
 postgresql15                    x86_64             15.0-1PGDG.rhel8             pgdg15             1.6 M
 postgresql15-libs               x86_64             15.0-1PGDG.rhel8             pgdg15             287 k

トランザクションの概要
==========================================================================================================
インストール  3 パッケージ

ダウンロードサイズの合計: 7.7 M
インストール後のサイズ: 32 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/3): postgresql15-libs-15.0-1PGDG.rhel8.x86_64.rpm                      139 kB/s | 287 kB     00:02
(2/3): postgresql15-15.0-1PGDG.rhel8.x86_64.rpm                           628 kB/s | 1.6 MB     00:02
(3/3): postgresql15-server-15.0-1PGDG.rhel8.x86_64.rpm                    1.5 MB/s | 5.8 MB     00:03
----------------------------------------------------------------------------------------------------------
合計                                                                      2.0 MB/s | 7.7 MB     00:03
PostgreSQL 15 for RHEL / Rocky 8 - x86_64                                 1.6 MB/s | 1.7 kB     00:00
GPG 鍵 0x442DF0F8 をインポート中:
 Userid     : "PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org>"
 Fingerprint: 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                  1/1
  インストール中   : postgresql15-libs-15.0-1PGDG.rhel8.x86_64                                        1/3
  scriptletの実行中: postgresql15-libs-15.0-1PGDG.rhel8.x86_64                                        1/3
  インストール中   : postgresql15-15.0-1PGDG.rhel8.x86_64                                             2/3
  scriptletの実行中: postgresql15-15.0-1PGDG.rhel8.x86_64                                             2/3
  scriptletの実行中: postgresql15-server-15.0-1PGDG.rhel8.x86_64                                      3/3
  インストール中   : postgresql15-server-15.0-1PGDG.rhel8.x86_64                                      3/3
  scriptletの実行中: postgresql15-server-15.0-1PGDG.rhel8.x86_64                                      3/3
  検証             : postgresql15-15.0-1PGDG.rhel8.x86_64                                             1/3
  検証             : postgresql15-libs-15.0-1PGDG.rhel8.x86_64                                        2/3
  検証             : postgresql15-server-15.0-1PGDG.rhel8.x86_64                                      3/3
インストール済みの製品が更新されています。

インストール済み:
  postgresql15-15.0-1PGDG.rhel8.x86_64                 postgresql15-libs-15.0-1PGDG.rhel8.x86_64
  postgresql15-server-15.0-1PGDG.rhel8.x86_64

完了しました!

为了确保,我想确认一下。

[root@postgreSQL yum.repos.d]# rpm -qa | grep postgres
postgresql15-server-15.0-1PGDG.rhel8.x86_64
postgresql15-libs-15.0-1PGDG.rhel8.x86_64
postgresql15-15.0-1PGDG.rhel8.x86_64

看起来安装成功了!

安装好了,但之后应该怎么办呢?

5. 启动PostgreSQL

我想启动,但命令无法执行。

[root@postgreSQL yum.repos.d]# sudo postgresql-setup initdb
sudo: postgresql-setup: コマンドが見つかりません
[root@postgreSQL init.d]# service start initdb
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
[root@postgreSQL init.d]# systemctl start initdb
Failed to start initdb.service: Unit initdb.service not found.


/*インストール失敗してる ??*/
/*でも、以下の通り postgres ユーザーは存在しているので、インストール失敗っていう訳ではなさそう。*/

[root@postgreSQL ~]# id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)

在这里向师父请教后,我得到了以下的建议。

「我觉得Oracle也是一样的,如果不指定bin命令,就不能通过」
「安装后可能还需要一些必要的设置(如环境变量),所以要注意这一点,可能会很有帮助」

虽然非常基本的的东西被忽略了,感到很尴尬,但是确实如此啊,真是感激不尽。
将环境变量进行设置。。

【参考】PostgreSQL的引入和连接

请参考以下链接: https://atmarkit.itmedia.co.jp/ait/articles/0806/10/news144_2.html

[postgres@postgreSQL data]$ export PATH=$PATH:/usr/pgsql-15/bin
[postgres@postgreSQL data]$ export MANPATH=$MANPATH:/usr/pgsql-15/share/man
[postgres@postgreSQL data]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/pgsql-15/lib
[postgres@postgreSQL data]$ export PGDATA=/var/lib/pgsql/15/data
[postgres@postgreSQL data]$
[postgres@postgreSQL data]$ initdb --encoding=UTF8 --no-locale
データベースシステム内のファイルの所有者はユーザー"postgres"となります。
このユーザーをサーバープロセスの所有者とする必要があります。

データベースクラスタはロケール"C"で初期化されます。
デフォルトのテキスト検索構成は english に設定されます。

データベージのチェックサムは無効です。

ディレクトリ/var/lib/pgsql/15/dataの権限を設定しています ... ok
サブディレクトリを作成しています ... ok
動的共有メモリの実装を選択しています ... posix
デフォルトのmax_connectionsを選択しています ... 100
デフォルトのshared_buffersを選択しています ... 128MB
デフォルトの時間帯を選択しています ... America/New_York
設定ファイルを作成しています ... ok
ブートストラップスクリプトを実行しています ... ok
ブートストラップ後の初期化を実行しています ... ok
データをディスクに同期しています ... ok

initdb: 警告: ローカル接続に対して"trust"認証を有効にします
initdb: ヒント: pg_hba.confを編集する、もしくは、次回initdbを実行する時に -A オプション、
        あるいは --auth-local および --auth-host オプションを使用することで変更できます。

成功しました。以下のようにしてデータベースサーバーを起動できます: /*来た来た!*/

    pg_ctl -D /var/lib/pgsql/15/data -l ログファイル start 

接下来,我们将正式启动 PostgreSQL。

/*起動*/
[postgres@postgreSQL data]$ pg_ctl -w start
サーバーの起動完了を待っています....2022-10-17 02:10:44.595 EDT [167739] LOG:  redirecting log output to logging collector process
2022-10-17 02:10:44.595 EDT [167739] HINT:  Future log output will appear in directory "log".
完了
サーバー起動完了

/*停止*/
[postgres@postgreSQL data]$ pg_ctl stop
サーバー停止処理の完了を待っています....完了
サーバーは停止しました

因为忘记了基本的环境变量而精神崩溃了,所以这次就到这里吧。

再见。

bannerAds