天天看點

【學習資料】第11期快速入門PostgreSQL應用開發與管理 - 1 如何搭建一套學習、開發PostgreSQL的環境

背景

萬事開頭難,搭建好一套學習、開發PostgreSQL的環境,是重中之重。

因為其他平台(Ubuntu, CentOS, MAC)的使用者大多數都具備了自行安裝資料庫的能力,在這裡我隻寫一個面向Windows使用者的學習環境搭建文檔。

分為三個部分,使用者可以自由選擇。

如果你想深入的學習PostgreSQL,建議搭建PostgreSQL on Linux的環境。如果你隻是想将資料庫使用在日常的應用開發工作中,有也不需要PG的其他附加插件的功能,那麼你可以選擇PostgreSQL on Win的環境搭建。

如果你不想搭建本地的PostgreSQL,那麼你可以使用雲資料庫服務,比如阿裡雲RDS for PostgreSQL。

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#%E6%9C%AC%E7%AB%A0%E5%A4%A7%E7%BA%B2 本章大綱

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#%E4%B8%80postgresql-on-win%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA 一、PostgreSQL on Win環境搭建

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#1-%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82 1 環境要求

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#2-%E4%B8%8B%E8%BD%BDpostgresql%E5%AE%89%E8%A3%85%E5%8C%85 2 下載下傳PostgreSQL安裝包

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#3-%E8%A7%A3%E5%8E%8Bpostgresql%E5%AE%89%E8%A3%85%E5%8C%85 3 解壓PostgreSQL安裝包

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#4-%E4%B8%8B%E8%BD%BDpgadmin%E5%AE%89%E8%A3%85%E5%8C%85%E5%8F%AF%E9%80%89 4 下載下傳pgadmin安裝包(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#5-%E5%AE%89%E8%A3%85pgadmin%E5%8F%AF%E9%80%89 5 安裝pgadmin(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#6-%E8%A7%84%E5%88%92%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95 6 規劃資料檔案目錄

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#7-%E5%88%9D%E5%A7%8B%E5%8C%96%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4 7 初始化資料庫叢集

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#8-%E9%85%8D%E7%BD%AEpostgresqlconf 8 配置postgresql.conf

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#9-%E9%85%8D%E7%BD%AEpg_hbaconf%E5%8F%AF%E9%80%89 9 配置pg_hba.conf(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#10-%E5%90%AF%E5%8A%A8%E5%81%9C%E6%AD%A2%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4 10 啟動、停止資料庫叢集

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#11-%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4 11 如何自動啟動資料庫叢集

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#12-%E4%BD%BF%E7%94%A8psql-%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93 12 使用psql 指令行連接配接資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#13-%E6%96%B0%E5%A2%9E%E7%94%A8%E6%88%B7 13 新增使用者

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#14-%E4%BD%BF%E7%94%A8psql%E5%B8%AE%E5%8A%A9 14 使用psql幫助

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#15-%E4%BD%BF%E7%94%A8psql%E8%AF%AD%E6%B3%95%E8%A1%A5%E9%BD%90 15 使用psql文法補齊

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#16-%E4%BD%BF%E7%94%A8psql-sql%E8%AF%AD%E6%B3%95%E5%B8%AE%E5%8A%A9 16 使用psql sql文法幫助

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#17-%E6%9F%A5%E7%9C%8B%E5%BD%93%E5%89%8D%E9%85%8D%E7%BD%AE 17 檢視目前配置

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#18-%E8%AE%BE%E7%BD%AE%E4%BC%9A%E8%AF%9D%E5%8F%82%E6%95%B0 18 設定會話參數

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#19-%E5%9C%A8psql%E4%B8%AD%E5%88%87%E6%8D%A2%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E6%88%96%E6%95%B0%E6%8D%AE%E5%BA%93 19 在psql中切換到另一個使用者或資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#20-%E4%BD%BF%E7%94%A8pgadmin4%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93 20 使用pgadmin4連接配接資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#21-%E6%96%87%E6%A1%A3 21 文檔

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#%E4%BA%8Cpostgresql-on-linux%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA 二、PostgreSQL on Linux(虛拟機)環境搭建

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#1-%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82-1

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#2-%E4%B8%8B%E8%BD%BDlinux%E9%95%9C%E5%83%8F 2 下載下傳Linux鏡像

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#3-%E5%AE%89%E8%A3%85vmware-workstation%E8%AF%95%E7%94%A8%E7%89%88%E6%9C%AC 3 安裝VMware Workstation(試用版本)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#4-%E5%AE%89%E8%A3%85securecrt%E8%AF%95%E7%94%A8%E7%89%88%E6%9C%AC 4 安裝securecrt(試用版本)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#5-%E5%AE%89%E8%A3%85linux%E8%99%9A%E6%8B%9F%E6%9C%BA 5 安裝Linux虛拟機

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#6-%E9%85%8D%E7%BD%AElinux%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%BD%91%E7%BB%9C 6 配置Linux虛拟機網絡

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#7-securecrt%E7%BB%88%E7%AB%AF%E8%BF%9E%E6%8E%A5linux 7 securecrt終端連接配接Linux

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#8-%E9%85%8D%E7%BD%AElinux 8 配置linux

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#9-%E9%85%8D%E7%BD%AEyum%E4%BB%93%E5%BA%93%E5%8F%AF%E9%80%89 9 配置yum倉庫(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#10-%E5%88%9B%E5%BB%BA%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7 10 建立普通使用者

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#11-%E8%A7%84%E5%88%92%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%98%E5%82%A8%E7%9B%AE%E5%BD%95 11 規劃資料庫存儲目錄

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#12-%E4%B8%8B%E8%BD%BDpostgresql%E6%BA%90%E7%A0%81 12 下載下傳PostgreSQL源碼

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#13-%E5%AE%89%E8%A3%85postgresql 13 安裝PostgreSQL

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#14-%E9%85%8D%E7%BD%AElinux%E7%94%A8%E6%88%B7%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F 14 配置linux使用者環境變量

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#15-%E5%88%9D%E5%A7%8B%E5%8C%96%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4 15 初始化資料庫叢集

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#16-%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%BA%93 16 配置資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#17-%E5%90%AF%E5%8A%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4 17 啟動資料庫叢集

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#18-%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93 18 連接配接資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#19-%E5%AE%89%E8%A3%85pgadmin%E5%8F%AF%E9%80%89 19 安裝pgadmin(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#20-%E9%85%8D%E7%BD%AEpgadmin%E5%8F%AF%E9%80%89 20 配置pgadmin(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#21-%E4%BD%BF%E7%94%A8pgadmin%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8F%AF%E9%80%89 21 使用pgadmin連接配接資料庫(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#%E4%B8%89%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93rds-for-postgresql 三、雲資料庫RDS for PostgreSQL

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#1-%E8%B4%AD%E4%B9%B0%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93 1 購買雲資料庫

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#2-%E8%AE%BE%E7%BD%AE%E5%B9%B6%E8%AE%B0%E4%BD%8Frds-for-postgresql%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A0%B9%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81 2 設定并記住RDS for PostgreSQL資料庫根使用者名和密碼

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#3-%E9%85%8D%E7%BD%AE%E7%BD%91%E7%BB%9C 3 配置網絡

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#4-%E9%85%8D%E7%BD%AE%E7%99%BD%E5%90%8D%E5%8D%95 4 配置白名單

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#5-%E6%9C%AC%E5%9C%B0%E5%AE%89%E8%A3%85pgadmin%E5%8F%AF%E9%80%89 5 本地安裝pgadmin(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#6-%E6%9C%AC%E5%9C%B0%E9%85%8D%E7%BD%AEpgadmin%E5%8F%AF%E9%80%89 6 本地配置pgadmin(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#7-%E4%BD%BF%E7%94%A8pgadmin%E8%BF%9E%E6%8E%A5rds-postgresql%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8F%AF%E9%80%89 7 使用pgadmin連接配接RDS PostgreSQL資料庫(可選)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#%E4%B8%80postgresql-on-win%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA-1

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#1-%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82-2

Win 7 x64, 8GB以上記憶體, 4核以上, SSD硬碟(推薦),100GB以上剩餘空間, 可以通路公網(10MB/s以上網絡帶寬)

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#2-%E4%B8%8B%E8%BD%BDpostgresql%E5%AE%89%E8%A3%85%E5%8C%85-1

https://www.postgresql.org/download/windows/

建議下載下傳進階安裝包,不需要安裝,直接使用。

下載下傳win x64的版本(建議下載下傳最新版本)

http://www.enterprisedb.com/products/pgbindownload.do

例如

https://get.enterprisedb.com/postgresql/postgresql-9.6.2-3-windows-x64-binaries.zip

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#3-%E8%A7%A3%E5%8E%8Bpostgresql%E5%AE%89%E8%A3%85%E5%8C%85-1

postgresql-9.6.2-3-windows-x64-binaries.zip

例如解壓到d:\pgsql

bin: 二進制檔案

doc: 文檔

include: 頭檔案

lib: 動态庫

pgAdmin 4: 圖形化管理工具

share: 擴充庫

StackBuilder: 打包庫

symbols: 符号表

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#4-%E4%B8%8B%E8%BD%BDpgadmin%E5%AE%89%E8%A3%85%E5%8C%85%E5%8F%AF%E9%80%89-1

如果PostgreSQL包中沒有包含pgAdmin,建議自行下載下傳一個

建議下載下傳pgadmin4(pgadmin3不再維護)

https://www.pgadmin.org/index.php https://www.postgresql.org/ftp/pgadmin3/pgadmin4/v1.3/windows/

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#5-%E5%AE%89%E8%A3%85pgadmin%E5%8F%AF%E9%80%89-1

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#6-%E8%A7%84%E5%88%92%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95-1

例如将D盤的pgdata作為資料庫目錄。

建立d:\pgdata空目錄。

https://github.com/digoal/blog/blob/master/201704/20170411_01.md#7-%E5%88%9D%E5%A7%8B%E5%8C%96%E6%95%B0%E6%8D%AE%E5%BA%93%E9%9B%86%E7%BE%A4-1

以管理者身份打開cmd.exe

>d:  
  
>cd pgsql  
  
>cd bin  
  
>initdb.exe -D d:\pgdata -E UTF8 --locale=C -U postgres  
  
初始化時,指定資料庫檔案目錄,字元集,本地化,資料庫超級使用者名        

資料庫配置檔案名字postgresql.conf,這個檔案在資料檔案目錄D:\pgdata中。

将以下内容追加到postgresql.conf檔案末尾

listen_addresses = '0.0.0.0'  
port = 1921  
max_connections = 200  
tcp_keepalives_idle = 60  
tcp_keepalives_interval = 10  
tcp_keepalives_count = 6  
shared_buffers = 512MB  
maintenance_work_mem = 64MB  
dynamic_shared_memory_type = windows  
vacuum_cost_delay = 0  
bgwriter_delay = 10ms  
bgwriter_lru_maxpages = 1000  
bgwriter_lru_multiplier = 5.0  
bgwriter_flush_after = 0  
old_snapshot_threshold = -1  
wal_level = minimal
max_wal_senders = 0  # 如果max_wal_senders大于0,需要設定wal_level至少為replica級别。 PG 10開始,max_wal_senders預設值為10,以前的版本預設為0。
synchronous_commit = off  
full_page_writes = on  
wal_buffers = 64MB  
wal_writer_delay = 10ms  
wal_writer_flush_after = 4MB  
checkpoint_timeout = 35min  
max_wal_size = 2GB  
min_wal_size = 80MB  
checkpoint_completion_target = 0.1  
checkpoint_flush_after = 0  
random_page_cost = 1.5  
log_destination = 'csvlog'  
logging_collector = on  
log_directory = 'pg_log'  
log_truncate_on_rotation = on  
log_checkpoints = on  
log_connections = on  
log_disconnections = on  
log_error_verbosity = verbose  
log_temp_files = 8192  
log_timezone = 'Asia/Hong_Kong'  
autovacuum = on  
log_autovacuum_min_duration = 0  
autovacuum_naptime = 20s  
autovacuum_vacuum_scale_factor = 0.05  
autovacuum_freeze_max_age = 1500000000  
autovacuum_multixact_freeze_max_age = 1600000000  
autovacuum_vacuum_cost_delay = 0  
vacuum_freeze_table_age = 1400000000  
vacuum_multixact_freeze_table_age = 1500000000  
datestyle = 'iso, mdy'  
timezone = 'Asia/Hong_Kong'  
lc_messages = 'C'  
lc_monetary = 'C'  
lc_numeric = 'C'  
lc_time = 'C'  
default_text_search_config = 'pg_catalog.english'        

配置pg_hba.conf(可選)

資料庫防火牆檔案名字pg_hba.conf,這個檔案在資料檔案目錄D:\pgdata中。

将以下内容追加到檔案末尾,表示允許網絡使用者使用使用者密碼連接配接你的postgresql資料庫.

host all all 0.0.0.0/0 md5        

 啟動、停止資料庫叢集

使用指令行啟動資料庫叢集

>d:  
  
>cd pgsql  
  
>cd bin  
  
D:\pgsql\bin>pg_ctl.exe start -D d:\pgdata  
正在啟動伺服器程序  
  
D:\pgsql\bin>LOG:  00000: redirecting log output to logging collector process  
HINT:  Future log output will appear in directory "pg_log".  
LOCATION:  SysLogger_Start, syslogger.c:622        

使用指令行停止資料庫叢集

D:\pgsql\bin>pg_ctl.exe stop -m fast -D "d:\pgdata"
等待伺服器程序關閉 .... 完成
伺服器程序已經關閉      

11 如何自動啟動資料庫叢集

配置windows自動啟動服務.

12 使用psql 指令行連接配接資料庫

psql -h IP位址-p 端口-U 使用者名資料庫名

D:\pgsql\bin>psql -h 127.0.0.1 -p 1921 -U postgres postgres 

psql (9.6.2)  

輸入"help" 來擷取幫助資訊.  

postgres=# \dt  

13 新增使用者

建立使用者屬于資料庫操作,先使用psql和超級使用者postgres連接配接到資料庫。

新增一個普通使用者

postgres=# create role digoal login encrypted password 'pwd_digoal';  

CREATE ROLE  

新增一個超級使用者

postgres=# create role dba_digoal login superuser encrypted password 'dba_pwd_digoal';  

新增一個流複制使用者

postgres=# create role digoal_rep replication login encrypted password 'pwd';  

你還可以将一個使用者在不同角色之間切換

例如将digoal設定為超級使用者

postgres=# alter role digoal superuser;  

ALTER ROLE  

檢視已有使用者

postgres=# \du+  

                                 角色清單  

  角色名稱  |                    屬性                    | 成員屬于|描述  

------------+--------------------------------------------+----------+------  

 dba_digoal | 超級使用者                                   | {}       | 

 digoal    | 超級使用者                                   | {}       |  

 digoal_rep | 複制                                       | {}       |  

 postgres  | 超級使用者, 建立角色, 建立DB, 複制, 繞過RLS | {}       |  

14 使用psql幫助

psql有很多快捷的指令,使用\?就可以檢視。

postgres=# \?  

一般性  

  \copyright            顯示PostgreSQL的使用和發行許可條款  

  \errverbose            以最冗長的形式顯示最近的錯誤消息  

  \g [檔案] or;     執行查詢(并把結果寫入檔案或|管道)  

  \gexec                 執行政策,然後執行其結果中的每個值  

  \gset [PREFIX]     執行查詢并把結果存到psql變量中  

  \q            退出psql  

  \crosstabview [COLUMNS] 執行查詢并且以交叉表顯示結果  

  \watch [SEC]          每隔SEC秒執行一次查詢  

幫助  

  \? [commands]          顯示反斜線指令的幫助  

  ...... 

15 使用psql文法補齊

如果你編譯PostgreSQL使用了補齊選項,那麼在psql中按TAB鍵,可以自動補齊指令。

 16 使用psql sql文法幫助

如果你忘記了某個SQL的文法,使用\h 指令即可列印指令的幫助

postgres=# \h create table  

指令:       CREATE TABLE  

描述:       建立新的資料表  

文法:  

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI  

STS ] 表名( [  

  { 列名稱資料_類型[ COLLATE 校對規則] [ 列限制[ ... ] ]  

    | 表限制  

    | LIKE 源表[ like選項... ] }  

    [, ... ] 

] )  

......  

17 檢視目前配置

show 參數名

postgres=# show client_encoding;  

 client_encoding  

-----------------  

 GBK  

(1行記錄)  

檢視pg_settings

postgres=# select * from pg_settings;  

18 設定會話參數

set 參數名=值;

postgres=# set client_encoding='sql_ascii';  

SET  

19 在psql中切換到另一個使用者或資料庫

\c 切換到其他使用者或資料庫

postgres=# \c template1 digoal  

您現在已經連接配接到資料庫"template1",使用者"digoal". 

20 使用pgadmin4連接配接資料庫

pgAdmin4被安裝在這個目錄

d:\pgsql\pgAdmin 4\bin  

輕按兩下pgAdmin4.exe打開pgadmin4(有點耗時,自動啟動HTTPD服務)

點選server,右鍵,建立server.

配置server别名,連接配接資料庫的IP,端口,使用者,密碼,資料庫名

21 文檔

PostgreSQL的安裝包中包含了pgadmin, PostgreSQL的文檔,找到對應的doc目錄,打開index.html。

1 環境要求

Win 7 x64, 8GB以上記憶體, 4核以上, SSD硬碟(推薦),100GB以上剩餘空間, 可以通路公網(10MB/s以上網絡帶寬)

2 下載下傳Linux鏡像

http://isoredirect.centos.org/centos/6/isos/x86_64/ http://mirrors.163.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-minimal.iso

3 安裝VMware Workstation(試用版本)

http://www.vmware.com/cn/products/workstation/workstation-evaluation.html

4 安裝securecrt(試用版本)

securecrt可以用來連接配接Linux終端,友善使用

https://www.vandyke.com/products/securecrt/windows.html

5 安裝Linux虛拟機

打開vmware, 建立虛拟機, 選擇CentOS 6 x64版本.

1. 配置建議:

4G記憶體,40G磁盤,2核以上,NAT網絡模式。

2. 安裝建議:

minimal最小化安裝。

3. root密碼:

記住你設定的root密碼。

4. Linux安裝配置建議

配置主機名,配置網絡(根據你的vmware NAT網絡進行配置),關閉selinux,關閉防火牆或開放ssh端口(測試環境)。

6 配置Linux虛拟機網絡

vmware視窗連接配接linux

例子,192.168.150 請參考你的vmware NAT網絡修改一下。

配置網關

vi /etc/sysconfig/network  

NETWORKING=yes  

HOSTNAME=digoal01  

GATEWAY=192.168.150.2  

配置IP

cat /etc/sysconfig/network-scripts/ifcfg-eth0  

DEVICE=eth0  

TYPE=Ethernet  

UUID=d28f566a-b0b9-4bde-95e7-20488af19eb6  

ONBOOT=yes  

NM_CONTROLLED=yes  

BOOTPROTO=static  

HWADDR=00:0C:29:5D:6D:9C  

IPADDR=192.168.150.133  

PREFIX=24  

DNS1=192.168.150.2  

DEFROUTE=yes  

IPV4_FAILURE_FATAL=yes  

IPV6INIT=no  

NAME="System eth0"  

配置DNS

cat /etc/resolv.conf  

nameserver 192.168.150.2  

重新開機網絡服務

service network restart  

添加一個session,連接配接到Linux虛拟機。

8 配置linux

1. /etc/sysctl.conf

vi /etc/sysctl.conf  

追加到檔案末尾  

kernel.shmall = 4294967296  

kernel.shmmax=135497418752  

kernel.shmmni = 4096  

kernel.sem = 50100 64128000 50100 1280  

fs.file-max = 7672460  

fs.aio-max-nr = 1048576  

net.ipv4.ip_local_port_range = 9000 65000  

net.core.rmem_default = 262144  

net.core.rmem_max = 4194304  

net.core.wmem_default = 262144  

net.core.wmem_max = 4194304  

net.ipv4.tcp_max_syn_backlog = 4096  

net.core.netdev_max_backlog = 10000  

net.ipv4.netfilter.ip_conntrack_max = 655360  

net.ipv4.tcp_timestamps = 0  

net.ipv4.tcp_tw_recycle=1  

net.ipv4.tcp_timestamps=1  

net.ipv4.tcp_keepalive_time = 72   

net.ipv4.tcp_keepalive_probes = 9   

net.ipv4.tcp_keepalive_intvl = 7  

vm.zone_reclaim_mode=0  

vm.dirty_background_bytes = 40960000  

vm.dirty_ratio = 80  

vm.dirty_expire_centisecs = 6000  

vm.dirty_writeback_centisecs = 50  

vm.swappiness=0  

vm.overcommit_memory = 0  

vm.overcommit_ratio = 90  

生效

sysctl -p  

2. /etc/security/limits.conf

vi /etc/security/limits.conf   

* soft    nofile  131072 

* hard    nofile  131072 

* soft    nproc   131072 

* hard    nproc   131072 

* soft    core    unlimited 

* hard    core    unlimited 

* soft    memlock 500000000  

* hard    memlock 500000000  

3. /etc/security/limits.d/*

rm -f /etc/security/limits.d/*  

4. 關閉selinux

# vi /etc/sysconfig/selinux   

SELINUX=disabled  

SELINUXTYPE=targeted  

5. 配置OS防火牆

(建議按業務場景設定,我這裡先清掉)

iptables -F  

配置範例

# 私有網段  

-A INPUT -s 192.168.0.0/16 -j ACCEPT  

-A INPUT -s 10.0.0.0/8 -j ACCEPT  

-A INPUT -s 172.16.0.0/16 -j ACCEPT  

重新開機linux。

reboot  

9 配置yum倉庫(可選)

在linux虛拟機中,找一個有足夠空間的分區,下載下傳ISO鏡像

wget

http://mirrors.163.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso http://mirrors.163.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD2.iso

建立ISO挂載點目錄

mkdir /mnt/cdrom1  

mkdir /mnt/cdrom2  

挂載ISO

mount -o loop,defaults,ro /u01/CentOS-6.8-x86_64-bin-DVD1.iso /mnt/cdrom1  

mount -o loop,defaults,ro /u01/CentOS-6.8-x86_64-bin-DVD2.iso /mnt/cdrom2  

備份并删除原有的YUM配置檔案

mkdir /tmp/yum.bak  

cd /etc/yum.repos.d/  

mv * /tmp/yum.bak/  

新增YUM配置檔案

vi local.repo  

[local-yum]  

name=Local Repository  

baseurl=file:///mnt/cdrom1  

enabled=1  

gpgcheck=0  

重新整理YUM緩存

yum clean all  

測試

yum list  

yum install createrepo   -- 友善後面測試  

修改YUM配置,修改路徑為上層目錄

baseurl=file:///mnt/  

建立YUM索引

cd /mnt/  

createrepo .  

重新整理YUM緩存,測試

yum install vim  

10 建立普通使用者

useradd digoal  

11 規劃資料庫存儲目錄

假設/home分區有足夠的空間, /home/digoal/pgdata規劃為資料檔案目錄

Filesystem      Size Used Avail Use% Mounted on  

/dev/sda3        14G 5.7G  7.2G  45% /  

12 下載下傳PostgreSQL源碼

https://www.postgresql.org/ftp/source/

su - digoal  

https://ftp.postgresql.org/pub/source/v9.6.2/postgresql-9.6.2.tar.bz2

13 安裝PostgreSQL

安裝依賴包

root使用者下,使用yum安裝依賴包  

yum -y install coreutils glib2 lrzsz mpstat dstat sysstat e4fsprogs xfsprogs ntp readline-devel zlib-devel openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make smartmontools flex bison perl-devel perl-Ext  

Utils* openldap-devel jadetex  openjade bzip2  

編譯安裝PostgreSQL

digoal使用者下,編譯安裝PostgreSQL  

tar -jxvf postgresql-9.6.2.tar.bz2  

cd postgresql-9.6.2  

./configure --prefix=/home/digoal/pgsql9.6  

make world -j 8  

make install-world  

14 配置linux使用者環境變量

digoal使用者下,配置環境變量

vi ~/.bash_profile  

追加  

export PS1="$USER@`/bin/hostname -s`-> " 

export PGPORT=1921  

export PGDATA=/home/digoal/pgdata  

export LANG=en_US.utf8  

export PGHOME=/home/digoal/pgsql9.6  

export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH  

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

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

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

export PGHOST=$PGDATA  

export PGUSER=postgres  

export PGDATABASE=postgres  

alias rm='rm -i'  

alias ll='ls -lh'  

unalias vi  

重新登入digoal使用者,配置生效

exit  

15 初始化資料庫叢集

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

16 配置資料庫

配置檔案在$PGDATA目錄中

1. 配置postgresql.conf

listen_addresses = '0.0.0.0'  

port = 1921  

max_connections = 200  

unix_socket_directories = '.'  

tcp_keepalives_idle = 60  

tcp_keepalives_interval = 10  

tcp_keepalives_count = 10  

shared_buffers = 512MB  

dynamic_shared_memory_type = posix  

vacuum_cost_delay = 0  

bgwriter_delay = 10ms  

bgwriter_lru_maxpages = 1000  

bgwriter_lru_multiplier = 10.0  

bgwriter_flush_after = 0   

old_snapshot_threshold = -1  

backend_flush_after = 0   

wal_level = replica  

synchronous_commit = off  

full_page_writes = on  

wal_buffers = 16MB  

wal_writer_delay = 10ms  

wal_writer_flush_after = 0   

checkpoint_timeout = 30min   

max_wal_size = 2GB  

min_wal_size = 128MB  

checkpoint_completion_target = 0.05    

checkpoint_flush_after = 0    

random_page_cost = 1.3   

log_destination = 'csvlog'  

logging_collector = on  

log_truncate_on_rotation = on  

log_checkpoints = on  

log_connections = on  

log_disconnections = on  

log_error_verbosity = verbose  

autovacuum = on  

log_autovacuum_min_duration = 0  

autovacuum_naptime = 20s  

autovacuum_vacuum_scale_factor = 0.05  

autovacuum_freeze_max_age = 1500000000  

autovacuum_multixact_freeze_max_age = 1600000000  

autovacuum_vacuum_cost_delay = 0  

vacuum_freeze_table_age = 1400000000  

vacuum_multixact_freeze_table_age = 1500000000  

datestyle = 'iso, mdy'  

timezone = 'PRC'  

lc_messages = 'C'  

lc_monetary = 'C'  

lc_numeric = 'C'  

lc_time = 'C'  

default_text_search_config = 'pg_catalog.english'  

shared_preload_libraries='pg_stat_statements'  

2. 配置pg_hba.conf

host all all 0.0.0.0/0 md5  

17 啟動資料庫叢集

pg_ctl start  

18 連接配接資料庫

psql  

Type "help" for help.  

postgres=#   

19 安裝pgadmin(可選)

在windows 機器上,安裝pgadmin

https://www.pgadmin.org/download/windows4.php

20 配置pgadmin(可選)

參考章節1

21 使用pgadmin連接配接資料庫(可選)

1 購買雲資料庫

https://www.aliyun.com/product/rds/postgresql

2 設定并記住RDS for PostgreSQL資料庫根使用者名和密碼

在RDS 控制台操作。

3 配置網絡

在RDS 控制台操作,配置連接配接資料庫的URL和端口。

4 配置白名單

在RDS 控制台操作,配置來源IP的白名單,如果來源IP為動态IP,白名單設定為0.0.0.0。

(資料庫開放公網連接配接有風險,請謹慎設定,本文僅為測試環境。)

5 本地安裝pgadmin(可選)

6 本地配置pgadmin(可選)

7 使用pgadmin連接配接RDS PostgreSQL資料庫(可選)