Tag: slony

PostgreSQL 与 Slony-I 的安装配置

April 22nd, 2010

公司主要使用的是 PostgreSQL 数据库,最近人员变动,我需要尽快掌握数据库实时备份的相关知识,一旦 master 数据库服务器出现故障,可以迅速的切换到 slave 数据库。本文档的测试环境,如下表:

Master 192.168.0.194 Slave 192.168.0.199
操作系统 Fedora 12 Ubuntu 9.10
PostgreSQL 8.4.3 8.4.2
SlonyI 1.2.20 1.2.20

文档结构主要分为下面几个部分:

  • 安装相关的软件包
  • 配置 master 和 slave 数据库
  • SlonyI 的同步测试
  • 数据库切换
  • Schema 改动
  • 常见问题
  • 参考文档

安装相关的软件包
~~~~~~~~~~~~~
+ Fedora

sudo yum install postgresql-server

PostgreSQL 装好后会自动创建一个名为 postgres 的数据库管理员用户,此用户没有密码,可用 root su 过去。

$ su -l postgres
$ initdb

用root启动postgresql

$ sudo service postgresql start
$ sudo yum install pgadmin3

修改postgresql.conf,是外部client可以通过tcp访问

$ vi /var/lib/pgsql/data/postgresql.conf

在 #listen_addresses = ‘localhost’ 前面增加一行

listen_addresses = '*'

使同一网段的所有用户可以无须密码验证的使用 pgadmin 进行连接,修改 pg_hba.conf 文件

$ vi /var/lib/pgsql/data/pg_hba.conf

在文件最后增加一行

host    all         all         192.168.0.1/24        trust

注:上面的配置只是为了方便测试,生产环境不能这样配置,需要重启数据库

fedora默认的防火墙策略是拦截5432端口请求,修改iptables,让外部主机可以访问postgresql端口

$ sudo vi /etc/sysconfig/iptables

在 -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 的下一行增加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

重启防火墙

$ sudo service iptables restart

slony编译需要 pg_config,所以需要安装 postgresql-devel 包,否则在 ./configure 会提示未找到 pg_config

$ sudo yum install postgresql-devel

pg_config 可以输出 postgresql 的安装路经

checking for pg_config... /usr/bin/pg_config
pg_config says pg_bindir is /usr/bin/
pg_config says pg_libdir is /usr/lib/
pg_config says pg_includedir is /usr/include/
pg_config says pg_pkglibdir is /usr/lib/pgsql/
pg_config says pg_includeserverdir is /usr/include/pgsql/server/
checking for correct version of PostgreSQL... 8.4
pg_config says pg_sharedir is /usr/share/pgsql/

安装 bison 和 flex,否则 gmake all 时会报 Missing yacc parser.y parser.c 之类的错

$ sudo yum install bison flex

下载 slony 源码及文档,并用root安装

$ wget http://www.slony.info/downloads/1.2/source/slony1-1.2.20-docs.tar.bz2
$ wget http://www.slony.info/downloads/1.2/source/slony1-1.2.20.tar.bz2
$ su
$ tar -vxjf slony1-1.2.20.tar.bz2
$ ./configure
$ gmake all
$ gmake install

+ Ubuntu
需要安装的软件包和 fedora 类似,具体的包名可能有点差别,openssh-server 开启 ssh 服务,方便远程控制。

$ sudo aptitude update
$ sudo aptitude install openssh-server
$ sudo aptitude install postgresql
$ sudo aptitude install pgadmin3

装完后默认已经执行了 initdb,由于ubuntu 没有 root 用户,所以 sudo -i 到postgres

$ sudo -i -u postgres

这里可能有字符集的问题,见常见问题部分。
和 fedora 一样,修改 postgresql.conf,是外部 client 可以通过 tcp 访问

$ vi /etc/postgresql/8.4/main/postgresql.conf

在 #listen_addresses = ‘localhost’ 前面增加一行

listen_addresses = '*'

同样需要修改 pg_hba.conf 文件

$ sudo vi /etc/postgresql/8.4/main/pg_hba.conf

在文件最后增加一行

host    all         all         192.168.0.1/24        trust

重启postgresql

$ sudo -i -u postgres /etc/init.d/postgresql-8.4 restart

参考前面 fedora下的 slony 配置,安装下面几个包

$ sudo aptitude install postgresql-server-dev-8.4
$ sudo aptitude install bison flex

pg_config的输出如下:

checking for pg_config... /usr/bin/pg_config
pg_config says pg_bindir is /usr/lib/postgresql/8.4/bin/
pg_config says pg_libdir is /usr/lib/
pg_config says pg_includedir is /usr/include/postgresql/
pg_config says pg_pkglibdir is /usr/lib/postgresql/8.4/lib/
pg_config says pg_includeserverdir is /usr/include/postgresql/8.4/server/
checking for correct version of PostgreSQL... 8.4
pg_config says pg_sharedir is /usr/share/postgresql/8.4/

slony的安装和 fedora 一样,注意ubuntu 中用make,不是 gmake

$ wget http://www.slony.info/downloads/1.2/source/slony1-1.2.20.tar.bz2
$ sudo tar -vxjf slony1-1.2.20.tar.bz2
$ cd slony1-1.2.20
$ sudo ./configure
$ sudo make all
$ sudo make install

默认slony被安装至 /usr/lib/postgresql/8.4/bin/ 目录下。

Tags: ,
Posted in Technology | No Comments »