PostgreSQL 与 Slony-I 的安装配置
公司主要使用的是 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: postgresql, slony
Posted in Technology | No Comments »