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) 前提:确认openssl、uuid,libtool-ltdl依赖包都安装OK 安装postgresql93-libs之前需要对openssl进行升级,否则会报错,如下。 安装postgresql93-contrib-9.3.2-1PGDG.rhel6.x86_64.rpm之前需要安装uuid包,否则会报错: rpm -ihU --quiet uuid-1.6.1-10.el6.x86_64.rpm; 二、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 用户) 方法三:/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.2、listen_address=* ,监听所有端口 2.3、$PGDATA/pg_hba.conf配置文件,谁可以访问数据库,可做数据库权限控制。 # TYPEDATABASE USER CIDR-ADDRESSMETHOD 2.4、max_connections 最大连接数 2.5、shared_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.8、VACUUM,autovaccum 2.9、maintenance_work_mem=5%*total_mem比排序使用更大内存的操作。 2.10、autovacuum_max_workers autovacuum_naptime 2.11、default_statistics_target 新版默认100,建议设置50-100,加大会延长分析的时间? 2.12、checkpoint_segments 默认为3,增加可提高大容量导入的速度。建议10以上, 10-32 2.13、checkpoint_timeout 默认5min 2.14、checkpoint_completion_target默认0.5 2.15、wal_buffers = 16M 2.16、wal_sync_method 谨慎设置 2.17、shared_buffers 25%内存 2.18、effective_cache_size50%-70%内存 2.19、synchronous_commit 同步提交,相关参数:wal_writer_delay(200s) 2.20、random_page_cost 2.21、work_mem 排序用 可达GB级,不宜太大 2.22、log_line_prefix ='%t [%p] : [%l-1] user=%u,db=%d,remote=%r ' 2.23、shared_preload_libraries= 'auto_explain' custom_variables_classes = 'auto_explain' auto_expain.log_min_duration = '1s' 3、系统参数配置 vm.swapines=0 vm.overcommit_memory=2 sysctl配置,保证共享内存足够的大: $getconfPAGE_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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |