1. PostgreSQL on Linux 最佳部署手册:
  2. 宁卫通信
  3. 资料中心
  4. PostgreSQL
  5. PostgreSQL on Linux 最佳部署手册

PostgreSQL on Linux 最佳部署手册

原文作者为德哥,digoal ``` 背景 数据库的安装一直以来都挺复杂的,特别是Oracle,现在身边都还有安装Oracle数据库赚外快的事情。 PostgreSQL其实安装很简单,但是那仅仅是可用,并不是好用。很多用户使用默认的方法安装好数据库之后,然后测试一通性能,发现性能不行就不用了。 原因不用说,多方面没有优化的结果。 PostgreSQL数据库为了适应更多的场景能使用,默认的参数都设得非常保守,通常需要优化,比如检查点,SHARED BUFFER等。 本文将介绍一下PostgreSQL on Linux的最佳部署方法,其实在我的很多文章中都有相关的内容,但是没有总结成一篇文档。 安装常用包

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-ExtUtils* openldap-devel

配置OS内核参数



vi /etc/sysctl.conf \#add by digoal.zhou

fs.aio-max-nr = 1048576

fs.file-max = 76724600

kernel.core_pattern= /data01/corefiles/core_%e_%u_%t_%s.%p

# /data01/corefiles事先建好,权限777

kernel.sem = 4096 2147483647 2147483646 512000

# 信号量, ipcs -l 或 -u 查看,每16个进程一组,每组信号量需要17个信号量。

kernel.shmall = 107374182

# 所有共享内存段相加大小限制(建议内存的80%)

kernel.shmmax = 274877906944

# 最大单个共享内存段大小(建议为内存一半), >9.2的版本已大幅降低共享内存的使用

kernel.shmmni = 819200

# 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段

net.core.netdev_max_backlog = 10000

net.core.rmem_default = 262144

# The default setting of the socket receive buffer in bytes.

net.core.rmem_max = 4194304

# The maximum receive socket buffer size in bytes

net.core.wmem_default = 262144

# The default setting (in bytes) of the socket send buffer.

net.core.wmem_max = 4194304

# The maximum send socket buffer size in bytes.

net.core.somaxconn = 4096

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.tcp_keepalive_intvl = 20

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.tcp_keepalive_time = 60

net.ipv4.tc