When I see your monsters, I see your pain, tell me your issuesmake, I will chase them away, I will be your lighthouse anytime.
最近听到一个理论就是幸存者理论,故事是这样的,美军的飞机在对日的战争中损失惨重,所以军方想统计到底怎么才能提高战斗中飞机的存活率,他们对返回航母的飞机进行了详细细致的研究,发现所有的飞机都是在机身上有很多弹孔,机翼上和螺旋桨上很少有弹孔,经过这一研究,最终得出的结论是,应该给机身上装上更厚的装甲。
事实是这样的吗? 那些被击毁的飞机,被调查研究了吗,是不是可以认为凡是被击中机翼和螺旋桨的飞机,生存率更低,反倒是应该加固那些地方。为什么要说这个故事,因为总是听见有人说,你听说谁用了POSTGRESQL吗? 没有。 我也不想多做解释,因为上面的故事懂汉字的应该都能明白我在说什么。
POSTGRESQL 安装中其实也有类似的问题,就是都觉得安装POSTGRESQL 很简单,只要编译一下,在初始化一下就完事了。 事实上是这样的吗? 所以还是好好钻研一下怎么能装好一个POSTGRESQL ,做一个好的基础。
1 你使用的make 的版本应该高于 3.8
2 你使用的GCC 应该至少是 c89-compliant
3 perl 语言的版本应该至少是 Perl5.8.3 以上
4 openssl 的版本要在0.98及以上,需要安装zlib 库
5 大页内存必须被打开
6 检查systcl 中使用大内存后后台刷新脏页的比例,如果比例过大可能会产生数据库使用中的内存抖动
vm.dirty_background_bytes = 0
7 配置合适的系统变量
export PGPORT = 5432
export PGDATA= /pgdata/data
export LANG = en_US.utf8
export PGHOME = /usr/local/postgre
export LD_LIBRARY_PATH = $PGHOME/lib:/usr/lib:/usr/lib64:$LD_LIBRARY_PATH
export DATE=`date '"%Y%m%d%H%M"'
export PATH=$PGHOME/bin:$PATH
export PGUSER=postgre
export PGDATABASE=postgre
8 接触LINUX 部分对数据库大的限制
* soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
9 编译,编译的过程主导部分主要的目录的确认和部分关键后期不能更改的参数
./configure --prefix=/usr/local/postgre --bindir=/usr/local/postgre/bin --sysconfdir=/etc/ --datarootdir=/pgdata/data --with-pgport=5432 --with-segsize=4 --enable-dtrace
make world
make install
10 调整到 postgre 下进行数据库的初始化
initdb -D /pgdata/udata -U postgre -X /pgdata/log
启动数据库
pg_ctl -D /pgdata/udata -l logfile start
11 创建初始化数据库
createdb postgre
12 执行psql 就可以直接进入到postgresql 的数据库世界了
Now you can into your database monster, PG
(以上假设你使用的postgre 作为启动账号,当然你的PGDATA也要chown,这里就不在bulabula)