麒麟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=# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM