Skytools是一个比较成熟的套件, 包含了pgq, Londiste, wal-manager三大组件.
其中pgq由providers,ticker,consumers组成, provider push events to queue, consumer read events from queue.
ticker则负责把batch queue里面的events.
londiste则是基于pgq的一个PostgreSQL数据库复制套件.
与流复制不同之处在于它是基于pgq的, 需要触发器支持, 复制的最小单位是表. 它不要求复制的数据库版本一致, 也不要求CPU架构一致. 因此适用范围更广. Londiste3 支持级联复制.
下面先介绍一下Londiste3的安装, 以后再逐步深入.
Build和Runtime的依赖包.
1. 安装Python
=== Build dependencies ===
postgresql libpq-dev postgresql-server-dev
python python-dev
=== Runtime dependencies ===
python psycopg2 rsync
1. 安装Python
tar -jxvf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/opt/python2.7.3
make
make install
将python lib目录加入ld.so.conf, 或者使用PYTHONPATH环境变量, 否则python在使用时会报lib缺失.
vi /etc/ld.so.conf, 添加以下行
/opt/python2.7.3/lib
执行ldconfig 刷新ld. 然后再执行ldconfig -p就能看到新安装的python的lib库了.
修改环境变量
应用环境变量 .
查看python位置是否正确
2. 安装PostgreSQL
3. 安装psycopg2
4. 安装skytools
5. 测试londiste3
vi ~/.bash_profile
export MANPATH=/opt/python2.7.3/share/man:$MANPATH
export PATH=/opt/python2.7.3/bin:$PATH
export PYTHONPATH=/opt/python2.7.3/lib:$PYTHONPATH
应用环境变量 .
. ~/.bash_profile
查看python位置是否正确
which python
/opt/python2.7.3/bin/python
2. 安装PostgreSQL
tar -jxvf flex-2.5.35.tar.bz2
cd flex-2.5.35
./configure && make && make install
tar -jxvf postgresql-9.1.3.tar.bz2
cd postgresql-9.1.3
./configure --prefix=/opt/pgsql --with-pgport=1921 --with-perl --with-python --with-openssl --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety --with-wal-blocksize=16
make world
sudo make install-world
3. 安装psycopg2
tar -zxvf psycopg2-2.4.5.tar.gz
cd psycopg2-2.4.5
python setup.py build_ext --pg-config /opt/pgsql/bin/pg_config build
python setup.py build_ext --pg-config /opt/pgsql/bin/pg_config install
4. 安装skytools
tar -zxvf skytools-3.0.2.tar.gz
cd skytools-3.0.2
./configure --prefix=/opt/skytools3.0.2 --with-pgconfig=/opt/pgsql/bin/pg_config
make
make install
5. 测试londiste3
查看安装完后python的位置是否正确
在需要使用skytools的操作系统用户下, 修改相应的环境变量
应用环境变量 .
测试londiste3是否可以正常调用
[root@digoal ~]# head -n 1 /opt/skytools3.0.2/bin/londiste3
#!/opt/python2.7.3/bin/python
在需要使用skytools的操作系统用户下, 修改相应的环境变量
vi ~/.bash_profile
export PATH=/opt/skytools3.0.2/bin:/opt/pgsql/bin:$PATH
export PYTHONPATH=/opt/skytools3.0.2/lib/python2.7/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/opt/pgsql/lib:$LD_LIBRARY_PATH
应用环境变量 .
. ~/.bash_profile
测试londiste3是否可以正常调用
[root@digoal ~]# londiste3 -V
londiste3, Skytools version 3.0.2
表示正常.
如果报python的相关错误, 对症解决, 例如import *** 错误,可能要安装缺少的python api. 并且加入到
PYTHONPATH路径中.
【补充】
1. 在第4步骤后面新增一步, 可以解决python import报错的问题.
http://skytools.projects.pgfoundry.org/pgq
https://github.com/markokr/skytools
cd skytools-3.0.2
python setup_pkgloader.py build
python setup_pkgloader.py install
python setup_skytools.py build
python setup_skytools.py install
2. 如果skytools是从git下载的, 还需要安装一些依赖包
yum install -y autoconf automake asciidoc xmlto libtool
【参考】