PostgreSQL on Azure.cn : 安裝部署

來源:互聯網
上載者:User

標籤:foo   inux   mod   cal   from   分布式   val   table   為我   

 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 : 安裝部署

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.