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