1. 程式人生 > >PostgreSQL on Azure.cn : 安裝部署

PostgreSQL on Azure.cn : 安裝部署

es2017 國產 成了 國產數據庫 sandy 必須 沒有 多版本 而且

PostgreSQL 是一個對象-關系數據庫(數據庫管理系統),基於BSD許可證。因為許可證的靈活,任何人都可以以任何目的免費使用,修改,和分發PostgreSQL。簡單地說,即使拿它來改一改,然後再拿出去賣錢,也沒有人會來管。因此頗多的國產數據庫就是基於PostgreSQL開發的。

有一件很有意思的事,PostgreSQL並不是念“post-gre- sequel”,PostgreSQL的開發者把它念作“post-gress-Q-L”,通常會簡讀為 "postgres"。

PostgreSQL支持大部分SQL標準並且提供了許多現代特性,例如:復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本並發控制。同樣,PostgreSQL 可以用許多方法擴展,比如,通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言。而且支持很多分布式集群軟件,如pgpool、pgcluster、slony、plploxy等等,因此很容易做讀寫分離、負載均衡、數據水平拆分。

正因為Postgres有很多好處,目前很多用戶都想要在Azure上也使用PostgreSQL作為數據庫服務。在Azure.com上,PostgreSQL已經作為Azure的PaaS服務提供預覽了。

技術分享

  但是,在Azure.cn上,目前還沒有提供PostgreSQL的PaaS服務。那用戶要使用怎麽辦呢?目前建議用戶在Azure上自行搭建。其實整個安裝部署的過程並不復雜,大家可以參考以下步驟自行安裝。

安裝環境為CentOS7.3,這也是Azure.cn上目前使用較為普遍的Linux系統。

在正式開始安裝前,首先要確保PostgreSQL所需要的依賴包都已經正確安裝了,我們通過一條命令來安裝所有的依賴包:

# yum install readline-devel gcc make zlib-devel openssl openssl-devel libxml2-devel pam-devel pam libxslt-devel tcl-devel python-devel -y

所有的軟件包會自動下載並安裝(記得要給虛機配置一個公網地址)。

技術分享

等到所有軟件安裝完成,我們就可以下載最新的PostgreSQL的安裝包了,在瀏覽器輸入https://ftp.postgresql.org/pub/source/,可以看到最新版本是2017年8月31號發布的9.6.5

技術分享

執行以下命令,下載最新的PostgreSQL安裝包到指定目錄

# wget https://ftp.postgresql.org/pub/source/v9.6.5/postgresql-9.6.5.tar.bz2 -P /root/

進入下載目錄,用tar命令解壓縮安裝包

# tar jxvf postgresql-9.6.5.tar.bz2

這條命令將安裝包解壓到了postgresql-9.6.5,接下來我們就進入該目錄,執行安裝部署:

# cd postgresql-9.6.5

指定將PostgreSQL安裝到opt目錄下

# ./configure --prefix=/opt/postgresql-9.6.5

技術分享

如果我們需要生成所有能生成的內容,包括文檔(HTML 和手冊頁)和其他模塊 (contrib),那麽再執行以下命令,完成安裝:

# gmake install-world

技術分享

至此,PostgreSQL的軟件包就已經安裝完畢了,接下來我們需要初始化並配置數據庫:

首先我們可以先創建一個鏈接,指向安裝目錄,這只是為了簡化後面用到的命令,也可以跳過這一步,不過後繼的命令要做相應的修改:

# ln -s /opt/postgresql-9.6.5 /opt/pgsql

安裝好的PostgreSQL沒有創建數據庫,因此我們首先要創建數據庫目錄

# mkdir -p /opt/pgsql_data

技術分享

但是直接在root下運行數據庫是很危險的,所以我們要創建一個新用戶,並修改該用戶的配置文件。

# useradd postgres

# chown -R postgres.postgres /opt/pgsql_data

# su – postgres

編輯 bash_profile 文件。這些行將添加到 bash_profile 文件的末尾,

cat >> ~/.bash_profile <<EOF

export PGPORT=1999

export PGDATA=/opt/pgsql_data

export LANG=en_US.utf8

export PGHOME=/opt/pgsql

export PATH=\$PATH:\$PGHOME/bin

export MANPATH=\$MANPATH:\$PGHOME/share/man

export DATA=`date +"%Y%m%d%H%M"`

export PGUSER=postgres

alias rm=‘rm -i‘

alias ll=‘ls -lh‘

EOF

執行 bash_profile 文件,或者退出當前帳號,重新進入,確保參數生效。

$ source .bash_profile

到這裏,數據庫就配置完成了,我們可以通過以下兩條命令來查看安裝目錄,參數是否正確

$ which psql

$ psql -V

技術分享

當我們看到以上反饋時,說明安裝基本沒有問題了。

接下來我們初始化數據庫:

$ initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W

技術分享

還需要配置數據庫啟動文件:

# cd /root/postgresql-9.6.5/contrib/start-scripts

# cp linux /etc/init.d/postgresql

修改 /etc/init.d/postgresql 文件中的兩個變量。設置為 PostgreSQL 的安裝路徑:/opt/pgsql。PGDATA 設置為 PostgreSQL 的數據存儲路徑:/opt/pgsql_data

# sed -i ‘32s#usr/local#opt#‘ /etc/init.d/postgresql

# sed -i ‘35s#usr/local/pgsql/data#opt/pgsql_data#‘ /etc/init.d/postgresql

設置啟動文件為可執行文件

# chmod +x /etc/init.d/postgresql

現在我們可以啟動postgreSQL了

# /etc/init.d/postgresql start

檢查 PostgreSQL 的終結點是否已打開,註意,此時PostgreSQL只允許本機連接數據庫,因為我們還沒有配置監聽端口和信任端點:

# netstat -tunlp|grep 1999

技術分享

安裝部署至此全部完成,接下來讓我們連接到數據庫,並建立一個簡單的數據庫來驗證一下:

切換成 postgres 用戶

# su – postgres

創建數據庫

$ createdb events

鏈接新創建的數據庫

$ psql -d events

技術分享

創建我們的第一張表

CREATE TABLE potluck (name VARCHAR(20), food VARCHAR(30), confirmed CHAR(1), signup_date DATE);

現在已經設置一個具有以下列名和限制的 4 列表:

“name”列受 VARCHAR 命令限制,必須少於 20 個字符。

“food”列指示每個人將攜帶的食物。VARCHAR 將此文本限制為 30 個字符以下。

“confirmed”列記錄此人是否接受了聚餐邀請。可接受的值為“Y”和“N”。

“date”列將在他們報名參加該活動時顯示。Postgres 要求日期格式為 yyyy-mm-dd。

查看創建的表

\dt

技術分享

插入一行數據

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘John‘, ‘Noodle‘, ‘Y‘, ‘2017-09-21‘);

多添加幾個

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘Sandy‘, ‘Rice‘, ‘N‘, ‘2017-09-21‘);

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES (‘Tom‘, ‘BBQ‘,‘Y‘, ‘2017-09-20‘);

INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘Tina‘, ‘Salad‘, ‘Y‘, ‘2017-09-19‘);

在表中查詢

select * from potluck;

技術分享

更新數據

UPDATE potluck set confirmed = ‘Y‘ WHERE name = ‘Sandy‘;

UPDATE potluck set food = ‘Rice‘ WHERE name = ‘Sandy‘;

技術分享

刪除數據

delete from potluck where name = ’John’;

技術分享

在下一篇,我們來看看怎麽修改PostgreSQL的數據庫參數,優化性能。

PostgreSQL on Azure.cn : 安裝部署