1. 程式人生 > 其它 >麒麟V10原始碼安裝postgresql14.1

麒麟V10原始碼安裝postgresql14.1

目錄

1. 安裝說明

文件參考:http://www.postgres.cn/docs/12/install-short.html

原始碼下載:https://www.postgresql.org/ftp/source/v14.1/

作業系統 : 4.19.90-17.ky10.x86_64

資料庫:v14.1 source

虛擬機器:oracle virtual box 6.0.22

使用的作業系統安裝可參考:https://www.cnblogs.com/syksky/p/15440086.html

2. 作業系統準備

2.1 本地yum源配置

virtualbox掛載作業系統iso後,使用下述命令掛載檔案系統

mount -t auto /dev/sr0 /mnt

新增編輯/etc/yum.repos.d/kylin_local.repo檔案,新增以下內容

[kylin_local]
name = kylin local - os
baseurl = file:///mnt
gpgcheck = 0
enabled = 1

其中file:///mnt是我們掛載的ISO所在檔案路徑,是否生效可以通過下述命令檢查

yum repolist

輸出如下

[root@kylin01 local]# yum repolist
repo id                                                    repo name
kylin_local                                                kylin local - os
[root@kylin01 local]# 

2.2 安裝readline和zlib包

因為是原始碼安裝方式,所以對應的readline和zlib的devel包也要安裝

yum install readline-devel.x86_64 -y
yum install zlib-devel.x86_64 -y

編譯PostgreSQL需要下列軟體包:

要求GNU make版本3.80或以上;其他的make程式或更老的GNU make版本將不會工作(GNU make有時以名字gmake安裝)。要測試GNU make可以輸入:

make --version
你需要一個ISO/ANSI C 編譯器(至少是 C99相容的)。我們推薦使用最近版本的GCC,不過,眾所周知的是PostgreSQL可以利用許多不同廠商的不同編譯器進行編譯。

除了gzip和bzip2之外,我們還需要tar來解包原始碼釋出。

預設時將自動使用GNU Readline庫。它允許psql(PostgreSQL的命令列 SQL 直譯器)記住你輸入的每一個命令並且允許你使用箭頭鍵來找回和編輯之前的命令。如果你不想用它,那麼你必需給configure宣告--without-readline選項。作為一種可選方案,你常常可以使用 BSD許可證的libedit庫,它最初是在NetBSD上開發的。libedit庫是GNU Readline相容的, 如果沒有發現libreadline或者configure使用了--with-libedit-preferred選項,都會使用這個庫。如果你使用的是一個基於包的 Linux 釋出,那麼要注意你需要readline和readline-devel兩個包,特別是如果這兩個包在你的版本里是分開的時候。

預設的時候將使用zlib壓縮庫。 如果你不想使用它,那麼你必須給configure宣告--without-zlib選項。使用這個選項關閉了在pg_dump和pg_restore中對壓縮歸檔的支援。

from: http://www.postgres.cn/docs/12/install-requirements.html

3. 開始安裝

3.1 解壓安裝包

下載後得到一個名為postgresql-14.1.tar.gzpostgresql-14.1.tar.bz2的檔案。在你獲取檔案之後,解壓縮它:

gunzip postgresql-14.1.tar.gz
tar xf postgresql-14.1.tar

如果是.bz2檔案,用bunzip2代替gunzip。這樣將在當前目錄建立一個目錄postgresql-14.1, 裡面是PostgreSQL原始碼。 進入這個目錄完成安裝過程的其他步驟。

3.2 編譯安裝

此處預設配置編譯,詳細的引數可以參考http://www.postgres.cn/docs/12/install-procedure.html。

./configure
make
make install

經過一段時間後,安裝將完成。安裝完成後,預設路徑在/usr/local/pgsql/

注意此時的屬主屬於root:root

新增使用者,並將軟體屬主進行修改

useradd pg
chown -R pg:pg /usr/local/pgsql

3.3 設定環境變數

配置pg的環境變數,pg使用者下的~/.bash_profile 新增如下內容

PATH=/usr/local/pgsql/bin:$PATH
export PATH

LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH

4. 配置檔案系統

虛擬化作業系統的時候,新增了一個磁碟單獨做pg的資料磁碟,磁碟在作業系統的名稱為/dev/sdb,使用lvm工具操作,並格式化為xfs。

掛載在/pgdata目錄下,屬主為pg:pg,並同步修改/etc/fstab檔案,使得開機自啟動。

pvcreate /dev/sdb
vgcreate vg_pgdata /dev/sdb
vgdisplay 
lvcreate -l 100%FREE -n lv_pgdata vg_pgdata
mkfs.xfs /dev/vg_pgdata/lv_pgdata 
mkdir -p /pgdata
mount /dev/vg_pgdata/lv_pgdata /pgdata
chown pg:pg /pgdata/

5. 初始化資料庫

初始化資料庫,並構建初始資料庫。

/usr/local/pgsql/bin/initdb -D /pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

詳細日誌

[root@kylin01 local]# su - pg
Last login: Tue Nov 30 15:25:02 CST 2021 on pts/1
[pg@kylin01 ~]$ ls -l /pgdata/
total 0
drwx------ 2 pg pg 6 Nov 30 13:11 data
[pg@kylin01 ~]$ /usr/local/pgsql/bin/initdb -D /pgdata/data
The files belonging to this database system will be owned by user "pg".
This user must also own the server process.

The database cluster will be initialized with locale "en_US".
The default database encoding has accordingly been set to "LATIN1".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /pgdata/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: 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 /pgdata/data -l logfile start

[pg@kylin01 ~]$ /usr/local/pgsql/bin/pg_ctl -D /pgdata/data -l logfile start
waiting for server to start.... done
server started
[pg@kylin01 ~]$ 
[pg@kylin01 ~]$ 
[pg@kylin01 ~]$ /usr/local/pgsql/bin/createdb test
[pg@kylin01 ~]$ /usr/local/pgsql/bin/psql test
psql (14.1)
Type "help" for help.

test=# select current_database();
 current_database 
------------------
 test
(1 row)

test=#