Londiste3 Install

1 minute read

背景

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的依赖包.

=== 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库了.

修改环境变量

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的位置是否正确

[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报错的问题.

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  

参考

http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.5.tar.gz

http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

http://skytools.projects.postgresql.org/skytools-3.0/

http://skytools.projects.pgfoundry.org/pgq

http://skytools.projects.pgfoundry.org/doc

http://skytools.projects.pgfoundry.org/api

https://github.com/markokr/skytools

Flag Counter

digoal’s 大量PostgreSQL文章入口