postgreSQL安裝

一、安裝

https://wiki.postgresql.org/wiki/Detailed_installation_guides

安裝可以選擇yum+rpm包安裝、源碼安裝的方式,我是使用yum進行的安裝,安裝的時候需要保證對應依賴的安裝包都存在了,否則就會報錯。

如下是我的安裝過程,我使用的是centos6.4的操作系統環境。

 

yum安裝

1、  首先需要安裝repo套件

wget http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm

rpm -Uvh pgdg-centos93-9.3-1.noarch.rpm

2、  檢查依賴包

uuid, unixODBC,libtool-ltdl因爲我這裏這些包在PXE安裝的時候都已經存在了,未單獨安裝。


3、安裝server模塊

yum配置中修改baseurl爲如下值即可,注意需要配置好dns和防火牆,否則無法訪問。

baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/

       http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/

然後執行yum list postgres*

                   yuminstall postgresql93-server

其他模塊可以根據自己的需要選擇安裝(postgresql93-libs postgresql93-contrib postgresql93-odbc

 

下載rpm包安裝(centos6.4+pgsql9.3.2)

前提:確認openssluuid, unixODBC, libtool-ltdl依賴包都安裝OK

wKiom1P6DinB3beGAADa--nIVD8089.jpg

安裝postgresql93-libs之前需要對openssl進行升級,否則會報錯,如下。

wKioL1P6D1-RiiCcAAC8O52DL9k336.jpg

安裝postgresql93-contrib-9.3.2-1PGDG.rhel6.x86_64.rpm之前需要安裝uuid包,否則會報錯:

wKioL1P6D47DbxyNAABzwJDHcX4409.jpg

rpm -ihU --quiet uuid-1.6.1-10.el6.x86_64.rpm;

 

wKiom1P6DpOySJjAAARGMILKOMo970.jpg

二、postgreSQL初始化

1、initdb

在安裝完成pgsql以後,需要做初始化,生成初始的配置文件、數據庫等。

默認數據文件路徑:/var/lib/pgsql/data/,可在初始化的時候指定數據文件路徑,在環境變量中設置PGDATA的值。

方法一:service postgresql-9.3 initdb (root用戶)

方法二:/usr/pgsql-9.3/bin/pg_ctl  -D  /home/pgsql/9.3/data/ start postgres 用戶)

wKioL1P6D_Pi5DbIAAFlDW4mj3o418.jpg

方法三:/etc/init.d/postgresql-9.3 initdb (root用戶)

注意:在使用類似方法一的形式進行初始化的時候沒法修改數據文件的路徑,需要修改/etc/init.d/postgresql-9.3裏面PGDATA的值,具體其他方法還有待進一步測試。

 

2、修改配置文件$PGDATA/postgresql.conf

 

2.1、重新加載,部分參數需要重啓才能生效。

①、select pg_reload_conf();

②、ps -ef | grep postmaster | grep -v grep | xargs kill -HUP

③、pg_ctl  reload

2.2listen_address=* ,監聽所有端口

2.3$PGDATA/pg_hba.conf配置文件,誰可以訪問數據庫,可做數據庫權限控制。

# TYPE DATABASE  USER  CIDR-ADDRESS METHOD

2.4max_connections 最大連接數

2.5shared_buffers  25%內存

2.6、空閒空間映射設置(FSM

2.7、日誌

log_destination

log_directory  log目錄

log_filename= postgresql-%a.log  log文件名

log_line_prefix='%t:%r:%u@d: [%p] : '

log_statement    none/ddl/mod/all四種

log_min_duration_statement =1000 (毫秒,即超過一秒的查詢會記錄日誌)  + auto_explain模塊

2.8VACUUM , autovaccum

2.9maintenance_work_mem=5%*total_mem比排序使用更大內存的操作。

2.10autovacuum_max_workers  

      autovacuum_naptime   

2.11default_statistics_target  新版默認100,建議設置50-100,加大會延長分析的時間?

2.12checkpoint_segments 默認爲3,增加可提高大容量導入的速度。建議10以上, 10-32

2.13checkpoint_timeout 默認5min

2.14checkpoint_completion_target默認0.5

2.15wal_buffers = 16M

2.16wal_sync_method 謹慎設置

2.17shared_buffers 25%內存

2.18effective_cache_size50%-70%內存

2.19synchronous_commit 同步提交,相關參數:wal_writer_delay200s

2.20random_page_cost

2.21work_mem 排序用 可達GB級,不宜太大

2.22log_line_prefix ='%t [%p] : [%l-1] user=%u,db=%d,remote=%r '

2.23shared_preload_libraries= 'auto_explain'

      custom_variables_classes = 'auto_explain'

      auto_expain.log_min_duration = '1s'

 

3、系統參數配置

vm.swapines=0
vm.overcommit_memory=2

sysctl配置,保證共享內存足夠的大:

$ getconf PAGE_SIZE
4096  --4KB 頁面大小
$ getconf _PHYS_PAGES
8215683 --物理內存的頁面數

shmall --小於物理內存頁面數(1/2物理內存頁面數)

shmmax --shmall * 頁面大小(默認4KB

kernel.sem = 250 32000 32 128



附:32G內存+postgreSQL9.3.2對應postgresql.conf示例


listen_addresses = '*'

shared_buffers = 8GB

work_mem = 128MB

maintenance_work_mem = 480MB

effective_cache_size = 20GB

log_min_duration_statement = 300

log_line_prefix = ' %m DB:%d FROM:%u@%r SESS:%c:%l -> '

log_connections = on

log_disconnections = on

log_statement = 'ddl'

escape_string_warning = off

default_statistics_target = 400

constraint_exclusion = on

max_connections = 100

standard_conforming_strings=off

log_filename = 'postgresql-DAY%d.log'


#WAL Setting

#wal_level = minimal

wal_level = hot_standby

archive_mode = on # allows archiving to be done # (change requires restart)

archive_timeout = 300

max_wal_senders = 3

archive_command = 'rsync -a %p TESTSERVER::wal/ff/%f'

fsync = off

full_page_writes = off

checkpoint_segments = 256

checkpoint_timeout = 60min

checkpoint_completion_target = 0.9

autovacuum = on

autovacuum_analyze_scale_factor = 0.1

autovacuum_analyze_threshold = 50

autovacuum_vacuum_cost_delay = 30ms

autovacuum_vacuum_cost_limit = 30

autovacuum_vacuum_scale_factor = 0.1

autovacuum_vacuum_threshold = 50

log_autovacuum_min_duration = 30

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章