Wednesday, 30 April 2008

Using PostgreSQL YUM Repository in CentOS

PostgreSQL,著名的Open Source数据库系统。现在已开通了自己的YUM Repository,提供官方的rpm。目前,支持包括Fedora(7,8)、Red Hat(4,5)以及CentOS(4,5)的Linux发行版,支持PostgreSQL 7.3, 7.4, 8.0, 8,1, 8,2和8.3版本。这里,介绍一下我在CentOS 5.1里面,升级到PostgreSQL 8.3的过程。


1. 备份现有PostgreSQL数据库

CentOS 5.1提供的PostgreSQL版本,是8.1.11。要升级到PostgreSQL 8.3,属于major upgrade。现有数据文件是不兼容的。必须把数据先dump出来,待升级完成之后,再导入回数据库。

# su - postgres
$ pg_dumpall -c > /var/lib/pgsql/backups/pgsql-backup

2. 停止PostgreSQL Server的运行

# service postgresql stop

3. 备份现有PostgreSQL数据库文件

# mv /var/lib/pgsql /var/lib/pgsql8.1.11

4. 导入PostgreSQL YUM Repository的rpm

# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-4.noarch.rpm
# rpm -ivh pgdg-centos-8.3-4.noarch.rpm

5. 升级PostgreSQL

# yum update

升级到8.3.1,总共更新3个软件包,postgresql、postgresql-libs和postgresql-server,另外安装一个compat-postgresql-libs包。

6. 初始化数据库

# mkdir /var/lib/pgsql
# chown -R postgres:postgres /var/lib/pgsql
# chmod -R 700 /var/lib/pgsql
# service postgresql initdb

其实,PostgreSQL数据库的初始化,具体的内容还是挺复杂的。不仅建立了相应的数据文件,还对目录和文件设置了相应的权限,并设置了PostgreSQL Server的初始参数。详细的内容,可以查阅/var/lib/pgsql下面的log文件。

7. 启动PostgreSQL Server

# service postgresql start

8. Remote Access的设置

大部分情况下,不可能一直在localhost下面使用PostgreSQL。因此,需要设置PostgreSQL提供TCP/IP连接,并作相应的用户认证。

# su - postgres
$ cd data
$ vim postgresql.conf
...
listen_addresses = '*'
port = 5432
...
$ vim pg_hba.conf
...
host all all 10.1.1.0/24 md5
...

设置PostgreSQL监听TCP/IP连接,对10.1.1.0-10.1.1.255的用户,进行md5密码验证。对除此以外的其它用户,不提供服务。

须重新启动PostgreSQL Service,上述PostgreSQL设置的修改,才会生效。

9. 建立用户

缺省情况下,PostgreSQL的超级用户是postgres,密码未知。通常情况下,以普通用户身份来访问PostgreSQL会比较安全。

# su - postgres
$ createuser -P mypguser
...

10. 数据恢复

恢复备份数据,将前面dumpall出来的数据,重新导入数据库。

# su - postgres
$ psql -f /var/lib/pgsql8.1.11/backups/pgsql-backup postgres

11. phpPgAdmin

我也安装了PostgreSQL YUM Repository提供的phpPgAdmin,结果却一直login fail,不知道那里搞错了。:(

0 Comments:

Post a Comment

<< Home