Сначала необходимо всё правильно поставить. SkyTools есть в репозиториях
постгреса для CentOS, но проблема заключается в том, что в этом пакете не
включены дополнительные модули, а именно Pgq_LowLevel. Поэтому сделал следующее:
Скачал последнюю версию skytools с сайта
https://developer.skype.com/SkypeGarage/DbProjects/SkyTools , сконфигурировал,
скомпилировал, и взял оттуда лишь модули для питона Pgq_LowLevel, затем
поставил пакет(благо версии пакета в репозитории и модулей совпали) и
скопировал модули pgq_lowlevel.so, pgq_triggers.so, logtriga.so в /usr/lib/pgsql/.
Всё дальше можно переходить к репликации.
Теперь все нижеследующие действия будут проходить от пользователя postgres и
только на мастер сервере, но нужно учесть, что на слэйв сервер был доступ для
пользователя владеющего базой данных, то есть должна выполняться команда:
psql -h slave.server.r -U your_user -d your_database
Сначала нам нужно установить pgqadmin. Создаём любой файл следующего содержания
[pgqadm]
job_name = your_cluster_name
db = dbname=your_database_name
# how often to run maintenance [seconds]
maint_delay = 600
# how often to check for activity [seconds]
loop_delay = 0.1
logfile = ~/log/%(job_name)s.log
pidfile = ~/pid/%(job_name)s.pid
далее мы устанавливаем pgq и создаём очередь.
$ pgqadm.py yaour_file install
$ pgqadm.py -d your_file ticker
$ pgqadm.py your_file create your_queue
$ pgqadm.py your_file register your_queue your_consumer
теперь когда создана очередь, мы можем начать нашу репликацию. Создаём файл
/etc/londiste_your_cluster_name.ini вида:
[londiste]
job_name = your_cluster_name
provider_db = dbname=your_database
subscriber_db = dbname=your_database port=5432 host=slave.server.r user=files_testing password=your_password
# it will be used as sql ident so no dots/spaces
pgq_queue_name = your_queue
logfile = /tmp/%(job_name)s.log
pidfile = /tmp/%(job_name)s.pid
Когда файл создан запускаем londiste
londiste.py /etc/londiste_your_cluster_name.ini provider install
londiste.py /etc/londiste_your_cluster_name.ini subscriber install
Добавляем таблицы для репликации
londiste.py /etc/londiste_your_cluster_name.ini provider add table1 table2 table3
londiste.py /etc/londiste_your_cluster_name.ini subscriber add table1 table2 table3
londiste.py -d /etc/londiste_your_cluster_name.ini replay
Все !
|