【IT168 技术文档】
最近在做一些开源的数据库项目,到现在也有快两年了,当初做选择时还是在mysql与Postgresql 之间比较了下,当时感觉两者都差不多,各有优缺点,一句话也难说清,由于当时有现有的上线系统在使用postgresql db 所以最后也就选择了后者。
一开始找资料时真是难呀!首先也是先来ITPUB来找的,找半天终于算是找到了一些关于postgresql 的初步介绍,连个完整安装也没找到,不过感觉有的自己想要的还是没有,比如replication,cluster 等等,后来只好硬着头皮去postgresql 的官方网站看英文的原档了,(http://www.postgresql.org/),好在自己以前有点数据库的概念,(以前做过oracle 的管理)感觉postgresql 的架构有很多方面和oracle 的都一样,比如归档备份这一块,都是产生archive file 来进行备份的,当时看到这个就感觉很亲切,心想这开源的还挺厉害的,连oarcle 的一些应用技术它都有,后来想想开源还是有开源的好处的,发展快,更新快,新技术应用的快,不像商业的数据库,它要从很多方面考虑商业赢利的运作,从而在技术更新方面有时侯就显得落后了一点儿,不过各有所长吧。
总之当时就是觉得postgresql 的这方面的资料太少了,自己也只是共享一下学习到的一点微薄知识,也算是共同学习探讨一下,也希望本土的一些小型企业如果想从降低IT成本来考虑的话,我感觉postgresql 的确是一个不错的选择,感觉它的速度还是挺快的,如果你说mysql也不错,是的很不错,有个朋友是在藤讯做的,听说他们那里有很多系统就是建立在mysql上的,而且数据量还是挺 大的,不过大家要注意mysql 现在已被甲骨文收购了,可见其前途已是渺茫(只是个人之见),其它先不多说了,下面我就先从postgresql 的最基础写起,首先是安装了,其次是一个简单的操作,然后说说自己拿postgresql 与mssql做的一个性能比较,再谈谈postgresql 的备份与恢复,最后是性能调优方面,我想这些应该是学习一个数据库最基础的了,也是大家都想要了解的了,如果大家还有兴趣的话可以看看我们做的一个专案:mssql 向postgresql 的移转。
序列:
I. Postgresql的安装
II. Postgresql 的简单操作
III. Postgresql 与 Mssql 性能比较
IV. Postgresql 的备份与恢复
V. Postgresql 性能调优
VI. 基于Mssql 的数据库向Postgresql 的转移
I. Postgresql的安装
1. 建立系统平台,我的是 Centos 5.2 (Linux version 2.6.18-92.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)) #1 SMP Tue Jun 10 18:49:47 EDT 2008)我大致查了下只要是在linux 上安装的都着不多,只要区分好32位与64位就好了,我都是采用源码编译安装,感觉这样安装的话db 会更稳定些,只是个人感觉了,你也可以下载RPM包进行安装,这里只介绍源码编译的安装了。
1.1 首先下载postgresql db 安装文件从下面网站:http://www.postgresql.org/ftp/source/v8.4.2/ 选择文件postgresql-8.4.2.tar.gz进行下载;
1.2 解压下载文件
# tar -zxvf postgresql-8.4.2.tar.gz
2. 安装编译DB源文件所需的OS软件包gcc, 你可以把yum 设好,只需要yum install gcc 就可以了 (安装这个主要是为了可以compile)
3. 创建postgres 用户(由于postgresql db 是基于postgres 这个os 用户的,所以必需先创建)
# useradd postgres
4. 授权给postgres 读取postgresql-8.4.2/的权限
# chown -R postgres.postgres postgresql-8.4.2/
5. 切换用户到postgres
# su -l postgres
6. 设置DB安装的环境变量
$ export PGDATA=/usr/local/
$ export LD_LIBRARY_PATH=/usr/local/pgsql/lib
7. 进入到解压文件所在的目录
$ cd postgresql-8.4.2/
8. 编译安装
$ ./configure --enable-thread-safety --without-zlib --without-readline --with-perl
这里稍微介绍下,首先要注意/configure 前面有个点的,后面的所带的参数大家可以在官方网站查到各个参数的作用,我主要说一个with-perl 这个主要是为了使DB在安装完以后支持perl 语言的使用,你可以在DB里创建用 Perl 写的存储过程等等,它还可以支持功能强大的pl/perlu,pl/tcl 等等。
9. $ make
10. 这一步要注意切换到root 下来做
$ su root
# make install
11.切换到目录 /usr/local/pgsql 创建资料夹data,用于存放初始化的数据库,
# cd /usr/local/pgsql
# mkdir data
12. 授权给postgres 读取data资料夹的权限
# chown -R postgres /usr/local/pgsql/data
13. 切换用户到postgres (注意从此以后只要是操作DB的就在postgres 用户下)
# su -l postgres
14. 初始化数据库
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
到此数据库就算是安装完成了,这个写的有点详细,也许有点罗了吧,本人做事有时是比较细的,每个环节都要弄的清清楚楚,以前看别人有的写的贴子,就一段命令,看到每行不知什么作用,总是迷迷糊糊的,也算是解新手之迷吧,尤其是新学linux 的,这点我当初也是深有体会的。
II. Postgresql 的简单操作
1.上一节说了下安装,下面简单说下它的连接与使用,首先需要启动数据库
(以下操作都是在postgres 用户下进行的)
$ pg_ctl start
2. 连接数据库
$ psql
这样连接进来的是数据库的默认DB: postgres,输入英文字母l可以显示所以已经建立的数据库
postgres=# l
其中数据库名postgres ,tempalte0,template1都是初始化DB后自动建立起来的,这跟oracle 里面的系统表呀等等类似,用于维护其本身运作所必需的一些系统文件。
3. 创建新的数据库,首先退出连接介面,其实在这个介面也是可以建立的 我们比较喜欢在系统下建立,也是出于安全的考虑,
$ createdb test
test 为自己创建的DB名
4. 连接指定的数据库
$ psql test
在这个介面就可以下一些数据库的命令了,比如查表呀,select * from table, 等等一些DDL,DML数据库操作语句了,说到这里也许你要问了有没有运行在windows 上的一些客户端软件了,postgresql 的官方网站提供了一个pgadminIII的客户端软件,虽然不是太好用,有一些bug ,但想想这一切都是免费的也可以原谅了,如下图
注意host 一栏是输入DB 所在机器的IP
配置客户端连接时首先要确定你的linux 上的防火墙是关闭的,要不然你是连不进去的,再就是配置pg_hba.conf 这个数据库的配置文件里的几个参数,如下
cd /usr/local/pgsql/data/
vi pg_hba.conf
查看你的IP是哪一段把它加进去;
再就是配置postgresql.conf
vi postgresql.conf
修改listen_addresses,port 这两个参数如上所示,这样你就可以从远端连入你的postgresql db 了。
由于工作原因,今天就先到这里了,后面我会接着写下面的几个项目,祝虎年好运,但愿能给新手一点帮助。
路慢慢其修远兮,吾将上下而求索!