Общ преглед на Skytools:
Skytools е приложение, базирано на Python, идва с пакет от три неща PgQ, Londiste &Walmgr и също така изисква драйвера на Python-Postgres „psycopg2“.
- PGQ:Неговият механизъм за опашка, изграден с pl/pgsql с phython рамка отгоре.
- Londiste:Инструмент за репликация, написан на Phyton, използващ PgQ като транспортьор на събития.
- Walmgr :Създава настройка за WAL архивиране.
Няма да описвам много тук по отношение на процеса на демон за репликация londiste и т.н., защото можете да намерите най-добрия урок относно Skytools(PgQ/Londiste/WalMgr) в тази връзка http://skytools.projects.postgresql.org/doc/.
По принцип моята демонстрация включва как да продължите с репликацията на Londiste с PostgreSQL 9.0 заедно със стъпките за инсталиране. Казвам, че документацията на Skytools и PostgreSQL Wiki (http://wiki.postgresql.org/wiki/Londiste_Tutorial) е нещо повече, за да си играете с репликацията на Londiste.
Предварителни изисквания с връзки за изтегляне :
- PostgreSQL – PostgreSQL 9.0 http://www.enterprisedb.com/products-services-training/pgdownload
- skytools – skytools-2.1.12.tar.gz http://pgfoundry.org/frs/download.php/2872/skytools-2.1.12.tar.gz
- psycopg2 – psycopg2-2.4.2.tar.gz http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-2.4.2.tar.gz
Моята демонстрация включва следното:-
OS :RHEL 6 32 bit
DB версия:PostgreSQL 9.0
Два клъстера и база данни:londiste_provider на 5432, Londiste_subscriber на 5433
Таблица:Една таблица (ltest)
Местоположение на .ini файл:/opt/skytools-2.1.12/scripts
Местоположение на Skytools:/opt/skytools-2.1.12
Местоположение на PG 9.0:/opt/PostgreSQL/9.0/
пред>Като проста демонстрация с една таблица, опитах с RHEL 6 32bit/PostgreSQL 9.0 с два клъстера в моя локална кутия. Ще трябва да го настроите според действителните изисквания.
Забележка: Преди да продължа напред с настройката, бих искал да напомня, че всички инсталации на източник трябва да са като root потребител и след инсталирането тези директории трябва да притежават потребителски разрешения на Postgres.
Стъпка 1.
Инсталирайте PostgreSQL 9.0 и създайте два клъстера с команда INITDB и се уверете, че работят на 5432 и 5433 всеки. (Не забравяйте, че е стар факт, че с командата INITDB директорията pg_log няма да бъде създадена под Data_directory, трябва да я създадете изрично.)Стъпка 2.
Инсталирайте skytools, като изтеглите от горната връзка. Най-добрата му практика да съхранява всички източници в едно общо стандартно местоположение. Използвах „/usr/local/src“ и skytools под „/opt/“. Сега конфигурирайте skytools с PostgreSQL 9.0 „pg_config“.# tar -xvf skytools-2.1.12.tar.gz
# cd /usr/local/src/skytools-2.1.12
# ./configure --prefix=/opt/skytools -2.1.12 --with-pgconfig=/opt/PostgreSQL/9.0/bin/pg_config
# направи
# направи инсталиранеЗабележка: След инсталацията ще видите два важни модула за принос (pgq &londiste) под местоположението за принос на PostgreSQL. По принцип тези два приноса ви дават функционалността на londiste репликация.
# cd /opt/PostgreSQL/9.0/share/postgresql/contrib
# ll lond*
-rw-r--r--. 1 корен корен 29771 11 януари 13:24 londiste.sql
-rw-r--r--. 1 root root 27511 11 януари 13:24 londiste.upgrade.sql
# ll pgq*
-rw-r--r--. 1 корен корен 4613 11 януари 13:24 pgq_ext.sql
-rw-r--r--. 1 корен корен 1170 януари 11 13:24 pgq_lowlevel.sql
-rw-r--r--. 1 корен корен 69798 11 януари 13:24 pgq.sql
-rw-r--r--. 1 корен корен 3940 11 януари 13:24 pgq_triggers.sql
-rw-r--r--. 1 root root 54182 януари 11 13:24 pgq.upgrade.sqlСтъпка 3.
Инсталирайте psycopg2, това е phyton-postgres драйвер, който е необходим за skytools. Понякога тези драйвери няма да идват с python, така че ето стъпките за инсталиране.# tar -xvf psycopg2-2.4.2.tar.gz
# cd psycopg2-2.4.2
# python setup.py install --prefix=/usr/local
# python setup.py build_ext --pg-config /opt/PostgreSQL/9.0/bin/pg_configСтъпка 4.
Дайте собствеността върху Postgres на skytools и място за инсталиране на postgres. Това гарантира, че всички файлове/изпълними файлове са с потребителски разрешения на Postgres.# chown -R postgres:postgres /opt/skytools-2.1.12
# chown -R postgres:postgres /opt/PostgreSQL/9.0/Стъпка 5.
Задайте LD_LIBRARY_PATH &PYTHONPATH и стартирайте двата новосъздадени клъстера. Можете да ги поставите в .bash_profile на потребител на postgres като постоянно решение.$export PYTHONPATH=/opt/skytools-2.1.12/lib/python2.6/site-packages/
$export LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr /lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
или
$ vi .bash_profile
експортиране на PYTHONPATH=/opt/skytools-2.1.12/lib/ python2.6/site-packages/
експортиране LD_LIBRARY_PATH=/opt/PostgreSQL/9.0/lib:/usr/lib:/usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE:
:wq
$ . .bash_profile (изпълни, за да влезе в сила новите настройки)
Сега стартирайте двата клъстера
$ pg_ctl -o "-p 5432" -D /opt/PostgreSQL/9.0/ начало на данните
$ pg_ctl -o "-p 5433" -D /opt/PostgreSQL/9.0/data_1 началоСтъпка 6.
Създайте две бази данни, londiste_provider в 5432 и londiste_subscriber в 5433. Създайте една таблица с име на първичен ключ 'ltest' в две бази данни и ВЪВЕТЕ някои данни в таблицата londiste_provider (ltest) и по-късно при завършване на настройката за репликация трябва да видите тези INSERT данни от страната на londiste_subscriber.Може да не се нуждаете от CRETAE TABLE от подчинена страна, вместо това можете да използвате изхвърляне/възстановяване на структура, като използвате pg_dump/pg_restore, ако имате много таблици.
На 5432
psql -p 5432 -c "създаване на база данни londiste_provider;"
psql -p 5432 londiste_provider
londiste_provider=# създаване на таблица ltest(id int първичен ключ);
londiste_provider=# вмъкване в ltest VALUES (generate_series(1,10));
INSERT 0 10
На 5433
psql -p 5433 -c "създаване на база данни londiste_subscriber;"
psql -p 5433 londiste_subscriber
londiste_subscriber=# създаване на таблица ltest(id int първичен ключ);Стъпка 7.
Създайте два .ini файла, един за londiste(londiste.ini) и друг за PgQ ticker(pgq_ticker.ini). Можете също да намерите примерните .ini файлове от основната инсталация на skytools. Например:- местоположение „/opt/skytools-2.1.12/share/doc/skytools/conf“.Стъпка 8.
Създайте две директории за регистрационни файлове и PID файлове и ги насочете в параметрите на londiste.ini и pgq_ticker.ini.$ cd /opt/PostgreSQL/9.0
$ mkdir log pidСтъпка 9 .
Започнете репликацията с .ini файлове, първо инсталирайте londiste на доставчик и абонат и след това стартирайте тикера (PgQ) за репликиране на таблиците.Инсталирайте londiste на доставчик и абонат с команди по-долу една по една:
$ cd /opt/skytools-2.1.12/bin
$ ./londiste.py ../scripts/londiste.ini доставчик инсталира
2012-01-12 14:56:03,667 11073 INFO plpgsql е инсталиран
2012-01-12 14:56:03,674 11073 INFO txid_current_snapshot е инсталиран
2012-01-12 14:56:03,675 11073
ИНФОРМАЦИЯ- /> 102 pg 14:56:03,676 11073 ИНФОРМАЦИЯ Четене от /opt/skytools-2.1.12/share/skytools/pgq.sql
2012-01-12 14:56:03,816 11073 ИНФОРМАЦИЯ- />0101
Инсталиране на londiste -12 14:56:03,816 11073 ИНФОРМАЦИЯ Четене от /opt/skytools-2.1.12/share/skytools/londiste.sql
-bash-4.1$ ./londiste.py ../scripts/ Инсталиране на абонати на londiste.ini
2012-01-12 14:56:17,871 11081 INFO plpgsql е инсталиран
2012-01-12 14:56:17,872 11081 INFO Инсталиране на londiste
1-012- 12 14:56:17,873 11081 ИНФОРМАЦИЯ Четене от /opt/skytools-2.1.12/share/skytools/londiste.sql
-->Сега инсталирайте PqQ и стартирайте тикер с .ini файл.
-bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini install
2012-01-11 16:45:03,219 6348 INFO plpgsql е инсталиран
2012-01-11 16:45:03,225 6348 ИНФОРМАЦИЯ txid_current_snapshot е инсталиран
2012-01-11 16:45:03,228 6348 INFO pgq е инсталиран
-bash.4p1.g. .py -d ../scripts/pgqadm.ini ticker -d
-->Добавяне на таблицата към доставчик и абонат за репликация.
-bash-4.1$ . /londiste.py ../scripts/londiste.ini доставчик добавете ltest
2012-01-12 15:03:39,583 11139 ИНФОРМАЦИЯ Добавяне на public.ltest
-bash-4.1$ ./ londiste.py ../scripts/londiste.ini абонат добавете ltest
2012-01-12 15:03:47,367 11146 ИНФО Проверка на public.ltest
2012-01-12 15:03:47,3484 INFO 111 Добавяне на public.ltestСлед добавяне стартирайте репликацията на таблицата.
-bash-4.1$ ./londiste.py ../ scripts/londiste.ini replay -d
Забележка:Опцията "-d" е да стартирате демоните londiste/PgQ във фонов режим.Тук завършете настройката за репликация. Сега трябва да видите данните от таблицата „ltest“ на подчинената страна (т.е. на порт 5433).
Стъпка 10.
Сега нека разберем какво се е случило във фонов режим на таблица/регистрационни файлове/pids/data и т.н., Да видим един по един.Информация за регистрационните файлове:
Структура на таблицата след репликация:
Състояние на опашката за събития
Състоянието на репликацията може да се провери с помощта на pgq, както следва:--bash-4.1$ ./pgqadm.py ../scripts/pgqadm.ini status
Версия на Postgres:9.0.1 Версия PgQ:2.1.8
Опашка за събития Ротация Ticker TLag
----------------------------------------------------- ---------------------------------
londiste.реплика 3/7200s 500/3s/60s 6s
------------------------------------------------------- -------------------------------
Потребителско изоставане LastSeen
---- -------------------------------------------------- ------------------------
londiste.replica:
myfirstlondiste 6s 6s
------- -------------------------------------------------- ---------------------Забележка: Има много добри опции с помощните програми на Londiste и PGQ за извършване на научноизследователска и развойна дейност.
Надяваме се всички да имате успешна настройка за репликация на Londiste. Моля, публикувайте вашите коментари, които са високо оценени. До скоро с още публикации.