2010-01-23 Sat
Author:NinGoo posted on NinGoo.net
PostgreSQL8.x版本的安装已经非常的简单了。EnterpriseDB制作了一键安装的版本,包括FreeBSD/Linux/Mac OS X/Solaris/Windows平台都有。不过即使使用源码编译,也非常的简单。各个版本的源码可以点这里下载。
创建os用户
#useradd -g dba postgres #su - postgres
编译
$tar -zxvf postgresql-8.4.2.tar.gz $cd postgresql-8.4.2 $./configure --prefix=/OPT/postgresql --enable-profiling --with-blocksize=8 --with-wal-blocksize=8 $make && make install
其中with-blocksize指定数据块大小,默认8k,with-wal-blocksize指定日志块大小,默认也是8k。更多编译配置选项,可以通过./configure –help查看。
初始化database,注意PostgreSQL在服务端不支持GBK编码。
$cd /opt/postgresql/bin
$ ./initdb --encoding=utf8 -D /opt/postgresql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale en_US.UTF-8.
The default text search configuration will be set to "english".
creating directory /opt/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /opt/postgresql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.
Success. You can now start the database server using:
./postgres -D /opt/postgresql/data
or
./pg_ctl -D /opt/postgresql/data -l logfile start
初始化完成后,会在 /opt/postgresql/data目录生成数据库的文件,至此,软件安装完毕,数据库创建完毕。
启动数据库
./pg_ctl -D /opt/postgresql/data/ -l /opt/postgresql/log/alert.log start
启动后,可以发现PostgreSQL实例一共运行了5个进程
$ ps -ef | grep postgres postgres 17572 1 0 16:41 pts/2 00:00:00 /opt/postgresql/bin/postgres -D /opt/postgresql/data postgres 17574 17572 0 16:41 ? 00:00:00 postgres: writer process postgres 17575 17572 0 16:41 ? 00:00:00 postgres: wal writer process postgres 17576 17572 0 16:41 ? 00:00:00 postgres: autovacuum launcher process postgres 17577 17572 0 16:41 ? 00:00:00 postgres: stats collector process postgres 18679 20791 0 16:47 pts/2 00:00:00 grep postgres
其中wal writer process是日志写进程。
Related Articles
PermLink: http://www.ningoo.net/html/2010/installpostgresql.html
Add Comments(0) | Follow NinGoo@Twitter | Google Reader
Author:NinGoo posted on NinGoo.net
上个周末,无聊的时候关注了一下PostgreSQL。第一次尝试去安装PostgreSQL,还是好几年前的事了,那是8.0版本刚出来,终于开始原生的支持windows了,所以在自己电脑上折腾了一个。不过那时候也仅限于安装了一次而已,甚至psql的命令行都不知道怎么用。
同样作为开源关系型数据库,MySQL在这几年获得了更多的关注。大量的互联网公司都基于MySQL来构架系统,也导致MySQL DBA开始火热,一大堆年轻有为的同学投入到其中,渐成燎原之势。MySQL数据库火热了,MySQL AB公司却被sun收购,现在又随着sun要投入Oracle的怀抱,而且欧盟已经无条件批准这个收购,只剩下中国和俄罗斯,大局已定。作为商业数据库的绝对老大,Oracle的这次收购,让MySQL的支持者感到了威胁,其创始人甚至发起了一场保护MySQL(有墙),阻击Oracle收购的运动。
这也是PostgreSQL的机会,最近PostgreSQL的开发节奏很快,8.5已经连续出到了alpha3版,在这个版本中,最吸引我的是hot standby,类似于Oracle11g的active data guard,hot standby也可以在恢复的同时提供读服务,而以往版本,PostgreSQL的物理备库warm standby,则只能处于恢复状态,一旦open,则需要重做,比较痛苦。PostgreSQL的很多特性,都和Oracle相当的类似,甚至有一家商业化的公司EnterpriseDB,在致力于将PostgreSQL打包,使得应用程序从Oracle迁移到PostgreSQL更方便,据说80%的Oracle应用代码甚至不需要做修改就能在PostgreSQL运行。因此,我在twitter上说,如果PostgreSQL在人机交互的工具和配置部分,能够更加友好一点,完全是一个影子版本的Oracle。
PostgreSQL也支持mvcc多版本一致性控制。不过其实现的机制,和innodb的方式比较像,而和Oracle的不一样。Oracle是将变化的前映像记录到单独的undo段中,而PostgreSQL则只是将前映像(Tuples)上做个标记,如果是delete,则相当于是逻辑删除,实际的数据还是在原来的段中,如果是insert,相当于先delete,再insert,而且会在原来的记录上加一条指向新记录的指针,形成一个链表,查询的时候需要沿着这个链表找到一致的数据。这样会造成一个问题,一段时间以后,dml操作使得数据段和索引段中都有大量的前映像信息存在,会严重影响数据查询的效率。PostgreSQL的mvcc的这种实现方式,带来的一个好处是回滚非常快,只需要修改前映像上的几个标志位即可,而不像oracle需要从undo段将前映像再复制回来。但是,这种方便回滚,却会损失查询性能的设计思路,真的比较诡异。PostgreSQL中有一个专门用来清理这些旧版本数据的程序,叫做vacuum。在以前的版本中,需要定期执行vacuum来优化数据存储结构。这对于DBA来说,无疑是一件痛苦的事情。直到8.1版本,引入了autovacuum,系统可以自动来进行这些清理工作,终于人性化了一点点。
在8.3版本,引入了一个新的特性HOT(Heap Only Tuples),主要的目的是努力避免update造成的性能低下的问题。其实这个HOT,说白了很简单,对于update,要实现mvcc,其机制还是一样的,区别在于select,在沿着链表找一致性数据的过程中,如果发现这个检查过的版本已经没有任何事物在引用了,就会顺便把清理工作做掉,而不是像以前要等vacuum来做。因此这会加大一点select的压力,但前人栽树,后人乘凉,接下来需要访问这些数据的其他select就会快很多了,这和Oracle的延迟块清除其实有些类似的,当然两者的设计目的并不一样。
Related Articles
PermLink: http://www.ningoo.net/html/2010/introduce_to_postgresql.html
Add Comments(1) | Follow NinGoo@Twitter | Google Reader
2010-01-22 Fri
2010-01-21 Thu
作者:Fenng 发布在 dbanotes.net.
前几天 Firefox 升级到 3.5.7 之后频繁崩溃,导致我也很崩溃。说也奇怪,Firefox 这个版本据说主要是解决以前版本的稳定性问题,还说要修复 Top crash 呢,可没想到在我的机器上反而更加的不稳定。开始猜测是一些扩展(Extension)升级带来的问题,把所有的扩展禁止掉,仍然 Crash。另外怪的是,即使使用的时候没问题,一旦退出 Firefox 的时候还是会提示软件有问题而崩溃。那个提交 Crash 报告的界面都快让我条件反射了。
因为 Firefox 是日常工作首选的浏览器,加上翻墙越脊的也很顺手,还不能弃之不用。昨天痛定思痛,决定仔细分析一下到底怎么回事。说也惭愧,尽管是 Firefox 的老用户,倒是没注意到 Firefox 对于 Crash 的反馈处理还是有一套比较不错的机制的。通过 Firefox Crash Reporter ,用户能够比较快速的定位到自己的问题。
提交了崩溃报告之后,在浏览器地址栏输入:
about:crashes
然后点击所提交的 Report ID,经过联机分析之后,会给出很有价值的提示。可以对比多组结果,便于最后确认。查看Crash Report,我的浏览器的两个主要问题是:
- 501429 NEW Gmail tab crash while closing it's tab (caused by Google Talk Plugin)
- 531551 NEW Firefox 3.6 topcrash due to old Acrobat Plugin (nppdf32.dll)
问题和插件(Plugin)有关系,和扩展倒是关系不大。罪魁祸首一个是 Google Talk Plugin ,一个是 Acrobat Plugin,通过 Tools-->Add-ons-->Plugins 将这两个插件关闭。重启动 Firefox ,观察,问题不再复现,泪奔。
尽管不是扩展问题,但还是仔细看了一遍可能会带来问题的 Problematic extensions 列表,看完之后,把 IE Tab 换成了 IE Tab lite。
几点感慨:
- 对于客户端工具,如果追求扩展能力与第三方开发友好性,那么必然损失稳定性。而这个稳定性的损失如果不被用户理解,对产品的推广是比较危险的。
- 国内火狐团队在做什么? 至少作为用户,不知道,也打算用"针对国内用户定制"的产品。
- 其实很多时候解决办法就在那里,只是我们视而不见。
--EOF--
今天已经将 Firefox 升级到 3.6 了,目前稳定性尚可。
有来自火狐中国的朋友留言到"在将来版本的火狐中,整个插件体系被重新设计,所有的插件会在单独的进程中执行,不会影响到Firefox的执行"。这是一个好消息。
最近文章|Recent Articles
本站赞助商:豆瓣网
评论数(10)|添加评论 | 最近作者还说了什么? Follow Fenng@Twitter
本文网址:http://www.dbanotes.net/geek/firefox_crash.html
DBA Notes 理念: 用简约的技术取得最大的收益...
上一篇中的逻辑连接层, 通过一个DBLogicalManager类来实现, 并不是标准的JDBC调用方式, 如果要使现有的程序能很快用上这个功能, 要么更改程序, 要么就去实现一个JDBC Driver类, 让程序透明化. 显然第二种方法很好, 于是就写一个AnySQL JDBC Driver类吧.
JDBC Driver的类名为:
com.lfx.db.AnySQLDriver
使用这个类时, 需要传入一个保存连接配置信息(逻辑库, 物理库)的文件, 只要创建一个类实例就行了.
new com.lfx.db.AnySQLDriver(Sting config_file);
接下来就可以用标准的JDBC来获得逻辑库的连接了, URL规则为:
jdbc:anysql:logical_database_name
比如在批处理中, 要从上一篇的三个Slave库中的一个读取一条记录, 就可以使用如下代码.
try {
Connection db = DriverManager.getConnection("jdbc:anysql:readdb", null);
......
db.close();
}
catch (SQLException sqle)
{
......
}
现在还没有真正投入使用, 只在实验室中测试了一下, 感觉上还可以.
Relative Posts:
据说欧盟即将为Oracle开绿灯,那么看起来一切障碍已经基本扫除。
Oracle也已经宣布了一个日期:1月27日。
Larry将会在1月27日的会议上发布Oracle整合SUN之后的公司战略:
Larry Ellison to Unveil Oracle + Sun Strategy at Company Event on January 27th
网络会议也已经开放注册:
| |||||||||||||||||||
Updates:21日,欧盟批准交易的消息已经发布,剩下的区域是China and Russia,但是大局已定。
Oracle Corporation (NASDAQ: ORCL) announced today that it had received regulatory approval from the European Commission for its acquisition of Sun Microsystems, Inc. Oracle expects unconditional approval from China and Russia and intends to close the transaction shortly.
相关文章|Related Articles
- Oracle收购GoldenGate - 甲骨文到底想做什么
- Oracle 74亿美元购SUN - 彻底改变产业格局
- SUN与Oracle 新的蜜月期
- SUN + Oracle推出Exadata 2 终止与HP的合作
- OLTP Database Machine with Sun FlashFire Technology
评论数量(2)|Add Comments
本文网址:http://www.eygle.com/archives/2010/01/oracle_sun_unveil.html
有天傍晚,爸爸妈妈出去吃饭,剩下Eygle和我一起哄盖小咪,盖小咪找他婆婆,哭,盖老咪抱着他在家楼下走来走去,还哼着歌。盖小咪很安静地听,过了15分钟,睡着了,盖老咪抱着他上楼,轻轻把他放下床,盖小咪马上醒了,哭着找他婆婆。
于是,轮到我用背带背着盖小咪到楼下散步,好重啊~ 真佩服妈妈每天都背着盖小咪走来走去哄睡觉。背带勒得我腰酸背疼胳膊酸。他说要去找婆婆,于是我背着他,在感觉无边的小区里不断上坡下坡,绕过一栋栋屋子,边走边给盖小咪念唐诗。
盖小咪很安静,周围也很安静,每栋屋子都很美,屋内灯火璀璨。路灯照着蜿蜒的沥青路,所有的一切像这里的风一样柔软,谧静得只听见自己的脚步声,心跳声和念唐诗的声音。走了很久。猜想盖小咪睡着了,我就安静下来,往回走。盖小咪突然说:“去找婆婆吧。”然后我又只有转身继续走在不知道通往什么地方的路上。很累,不过,背着盖小咪是多么的温暖。我开始唱歌,过了几分钟,盖小咪说:“不要唱了,不好听。”我说你仔细听听,妈妈唱得挺不错的。盖小咪说:“我不想听。”然后,只好,我又边走边背唐诗。
盖小咪说,腿很疼,于是我稍微蹲下,然后突然起来,把盖小咪往上颠,并且把他的双腿稍微往上抬起,他说:“不疼了。” 他的声音是那么的稚嫩。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
最近,妈妈说盖小咪每晚睡觉前都说:“我们还是看看书吧,不看爸爸又要说我了。” 有时候太困了,他就说:“还是明天起来再看吧~”
现在盖小咪的婆婆背起盖小咪,最初他也挣扎,但过会就不肯下来了,他觉得很暖,他告诉他外婆:“这样很舒服。”
2010-01-20 Wed
作者:Fenng 发布在 dbanotes.net.
在 Alexa 上观测最近的一些数据的变化,发现了一个奇怪的域名: 1e100.net ,全球排名 45 。乍看上去,这个域名非常山寨,不过查询一下,发现这居然是 Google 的域名。Google 的名字是 Googol 这个单词拼错得来的,而 Googol 就是 10100 这个大数。1e100 = 1x10^100 = Googol (refer)。Twitter 上也有网友对此进行了提示。

这么看来,1e100 这样的域名风格倒是很 Google 化。从网上的反馈看,Google 有不少服务都在使用 1e100.net 这个域名,最多的应该是 Google Chrome 浏览器的 Safe Browsing 特性对地址的使用(对 Firefox 也有影响),而且会启用较多的并发连接,所以会有网站对此带来的压力无法承受而屏蔽 Google 的这个服务(refer),此外也让我想起以前 Google Chrome 早期的版本解析 DNS 多少有点慢,不知道是否有相关因果关系。Google 的其它产品包括 Google Toolbar、Google Analytics、YouTube 、FeedBurner 等服务也用这个域名。也有人发现 Google IPV6 地址也是通过这域名在进行测试。不过直接访问 1e100.net 是访问不到的,Google 通过子域名的形式进行使用。
按理说,这种不对外提供服务的地址,Alexa 没必要统计流量的,或许是他们的小失误倒是让我们了解到 Google 的一点有趣的信息。
--EOF--
更多参考:
- Why is goog using 1e100.net? 解释了为什么不是 10e100.net 。
- Google 的 Project 10100 项目。
最近文章|Recent Articles
本站赞助商:豆瓣网
评论数(3)|添加评论 | 最近作者还说了什么? Follow Fenng@Twitter
本文网址:http://www.dbanotes.net/web/1e100_dot_net_google.html
DBA Notes 理念: 用简约的技术取得最大的收益...








