LINUX.ORG.RU
 
emacs

Настройка репликации в PostgreSQL с помощью системы Slony-I


0

0

Краткое описание настройки репликации базы данных СУБД PostgreSQL с главного сервера на один ведомый сервер. Рассмотрен процесс добавления ещё одного ведомого узла в имеющийся репликационный кластер.

>>> Подробности

ЗАСТАВЬ КОМПЬЮТЕР ПОЛИВАТЬ ОГОРОД

автоматизация своими руками: электроприборы под контролем компьютера
beware of programmers who carry screwdrivers!
http://www.unicontrollers.com/products/unc01x

[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Ого, репликацию сделали? Догоняем MySQL! Неплохо! Уже неплохо.

anonymous ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Репликация на триггерах? М-да...

anonymous ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

О, как раз тем кто тут усиленно кричал что вот в mysql есть репликация а в посте нету.

Ну а по функционалу мускулю до постгреса как раком до китая :( Да и по надёжности тоже :(

anonymous ()
[#] Ответ на: Просветите неграмотного от anonymous 30.03.2005 16:07:47  

Re: Просветите неграмотного

> select id,(select name from t2 where id=t1.id) as name from t1;

select t1.id,t2.name from t1 left join t2 on t1.id=t2.id;

Нету в 4.0.x вложенных запросов. Зато в мануале красочно и со спецэффектами описывается, что вложенные запросы нахрен не нужны, потому что их в 99% можно заменить на join'ы, а 1% придумали враги. Кстати, хочу посмотреть тот самый 1%, что-то он мне всё не попадается.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:18:09  

Re: Просветите неграмотного

update saldos set begintime=connects.begintime, endtime=connects.endtime where saldos.connectid in ( select connectid from (select connectid, count(*) as sc from connects inner join saldos using(connectid) group by connectid) A where sc<2) and saldos.connectid=connects.connectid;

anonymous ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

> Ну а по функционалу мускулю до постгреса как раком до китая :( Да и по надёжности тоже :(

А вот про надёжность не надо. Когда применяются - оба работают как часы. (Только собирайте стабильную ветку, а не хрен знает что). Но уж если что-то грохнется, MySQL потом поднять гораздо легче.

Да, кстати. Как поднять дамп (самим Постгресом и сгенерённый), в котором триггеры начинают друг с другом драться, а потом мешают пройти кучке insert'ов?

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:18:09  

Re: Просветите неграмотного

и таких запросов могу наприводить уйму. У меня есть еще selectы размером в страницу. Да можно зделать программку, которая делает один запрос, потом другой, и т.д., а потом сводит, но это не рулез. Так что mysqlю еще нужно расти и расти

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:20:31  

Re: Просветите неграмотного

ого. да-а, вложенность update-select на join'ах не решается =) но то, что ты приводишь в пример, использует ф-цию in(). это в MySQL есть, начиная с 4.1.х.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:26:34  

Re: Просветите неграмотного

Реализуй при помощи in. Я mysqlом пользуюсь и зн. что в нем есть.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:23:26  

Re: Просветите неграмотного

> У меня есть еще selectы размером в страницу.

Написанных руками? или генерируемых каким-то злобным ORMом? В первом случае - респект и пожелание больше так не перетруждаться.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:23:26  

Re: Просветите неграмотного

> и таких запросов могу наприводить уйму. У меня есть еще selectы размером в страницу. Да можно зделать программку, которая делает один запрос, потом другой, и т.д., а потом сводит, но это не рулез. Так что mysqlю еще нужно расти и расти

зачем такие запросы писать? По хорошему логика должна на стороне applications сервера отрабатываться.

Кстати, в MySQL кроме репликации есть еще и кластеризация. В постгресе к сожалению ее пока нет.

* ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Граздане, обратите внимание: вокруг _только_ анонимусы, и флейма нет =)

anonymous ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Из жизни. За несколько лет работы с mysql я в совершенстве научился использовать myisamchk. И он нормально спасает в большинстве случаев.

Параллельно использовалась СУБД на postgres, так я до сих пор не знаю что с ним делать если "табличка поломается" Такое впечатление что там этого не бывает. Конечно, чисто субъективные ощущения, но всё же :)

Бекапы рулят. Знаю.

Про дамп чёрт знает, обычно всё без проблем. Да и мешать триггер не может, когда он срабатывает, INSERT уже должен пройти.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:28:54  

Re: Просветите неграмотного

> Написанных руками? нет они генеряться программно. Но сам факт что для реализации результирующей таблицы нужны вложенные запросы.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от Nik 30.03.2005 16:29:00  

Re: Просветите неграмотного

> зачем такие запросы писать? По хорошему логика должна на стороне applications сервера отрабатываться.

Это вторая часть это предложения есть ответ на твой вопрос. :)

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от Nik 30.03.2005 16:29:00  

Re: Просветите неграмотного

> зачем такие запросы писать? По хорошему логика должна на стороне applications сервера отрабатываться.

Скорость уже не важна?

** ()
[#] Ответ на: Re: Просветите неграмотного от Nik 30.03.2005 16:29:00  

Re: Просветите неграмотного

>>> Кстати, в MySQL кроме репликации есть еще и кластеризация. В постгресе к сожалению ее пока нет.

Гон по двум пунктам:

1. Есть в мускуле. Да, есть. Только платная и закрытая.

2. Так и в постгресе тоже есть.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:39:37  

Re: Просветите неграмотного

а как востанавливают пломаные наблички на постре и мыскуле ? и как они там ломаются ? например в оракле есть медиа файлуре, тогда только из бэкапа + логи, если не медиа то автоматом из лога, а у этих как ? что делает myisamchk?

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от WindowsUser 30.03.2005 16:36:58  

Re: Просветите неграмотного

> Скорость уже не важна?

важна application server гораздо проще кластеризуется

* ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

И что вы все тут заладили, мускулю расти да расти, нафига ему расти то? А может мне например нравится что он "маленький" и без наворотов? Захочу навороты - всеравно оракл возьму, чесс слово.

** ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:39:37  

Re: Просветите неграмотного

> Гон по двум пунктам: 1. Есть в мускуле. Да, есть. Только платная и закрытая. 2. Так и в постгресе тоже есть.

вот это как раз гон

1. бесплатная и открытая. Идет в 4.1. Единственный надостаток класеризации в MySQL - вся база должна умещаться в памяти.

2. а где про нее можно почитать?

* ()
[#] Ответ на: Просветите неграмотного от anonymous 30.03.2005 16:07:47  

Re: Просветите неграмотного

Да, пример действительно дурацкий. Но вот если в вложенном подселекте
было бы агрегирование, он был бы уже не дурацким. Например, можно
представить себе табличку, в которой храняться версии лицевого счёта
(типично для систем учёта, где надо отслеживать состояное объектов
во времени), причём номер счёта в колонке acctid, диапазон актуальности данной версии счёта в полях from и till. А вам нужно получть последнюю
актуальную версию на диапазон r_from r_till:

select *
from accounts a,
     (select acctid, max(from) as from
     from accounts
     where from < r_till and till > r_from
     group by acctid) lasta
where a.acctid = lasta.acctid and a.from = lasta.from

Кто скажет, как такой запрос сделать без вложенного селекта?

* ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:39:37  

Re: Просветите неграмотного

> Гон по двум пунктам: 1. Есть в мускуле. Да, есть. Только платная и закрытая.

В самом деле платная? закрытая? А у меня она в главе 17 официального мануала по MySQL. ничего не закрыто. :)

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:39:37  

Re: Просветите неграмотного

в mysql нету вложеный запросов? доки читать надо
http://dev.mysql.com/doc/mysql/en/subqueries.html
и это уже в продакше реализе...
думаете люди просто там будут коммерческий суппорт продовать? там ведь невозможно схалявить или отмазатся, реальная потеря денег и авторитета будет... процедуры и функции скажут красно-глазые? летом они будут в продакшене... не менее важное, что при переходе например от 4.0 к 4.1 не надо дампить всю базу и потом заливать обратно, при больших базах это довольно критично, 5 минут будет апгрейт или 2 часа...

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 17:08:57  

Re: Просветите неграмотного

Как хорошо, что в mysql наконец появились вложенные запросы :)

А теперь еще subj: есть ли в mysql журнал ?

anonymous ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Нет кластеризации в постргесе; даже в восьмерке. По хорошему счtту еt в My тоже нет. Требование "all data must be in ram" слишком ограничивает возможность использования.

Вот у меня база ~35G сейчас. Медленно но верно растет.

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 17:26:37  

Re: Просветите неграмотного

хех. Значит, через пару лет будет не стремно уже использовать mysql для небольших поделок :)

Без обид, но постгрес по фичам и соответствию стандартам на две головы выше, чем mysql. А когда оказалось, что на моей задаче постгри рвет mysql по скорости _в_разы_, то вопрос о используемом SQL-сервере отпал. Правда это было несколько лет назад.

anonymous ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

> По хорошему счtту еt в My тоже нет. Требование "all data must be in ram" слишком ограничивает возможность использования.

Но правда в том, что лучшей реализации во фришных СУБД пока не существует. Так что MySQL пока единственная кластеризуемая база. А если учесть что кластеризация там появилась совсем недавно - то можно надеятся что через некоторе время ее сделают поприличнее.

> Вот у меня база ~35G сейчас. Медленно но верно растет.

Таже фигня. А кластеризация нужна...

* ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

> да и правда -- если вся data помещается в in ram, то нахрена кластеризация вобще нужна ?

Ну вопервых для повышеняи надежности всей системы. Выпадение нескольких узлов кластера не приведет к остановке всей системы. Во вторых - какой-никакай а load-balancing

* ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:23:26  

Re: Просветите неграмотного

такое имхо проще для сопровождения будет на PL\pgSQL сделать

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 17:49:02  

Re: Просветите неграмотного

счаз тоже самое. для веб серверов с небольшой загрузкой и несложной логикой - мускуль рулит. а во всем остальном сливает

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от Nik 30.03.2005 17:04:31  

Re: Просветите неграмотного

> 1. бесплатная и открытая. Идет в 4.1. Единственный надостаток класеризации в MySQL - вся база должна умещаться в памяти.

Круть. Все BLOBы висят в памяти, продуманно, ничего не скажешь...

anonymous ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

А есть ли в MySQL что-нибудь на подобие PostGIS ( http://postgis.refractions.net/ )?

anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:18:09  
KRoN73

Re: Просветите неграмотного

>Нету в 4.0.x вложенных запросов.

Зато в 4.1 есть. И я на нём уже год сижу. Три базы по 1..2Гб, до сотни запросов в секунду...

***** ()
[#] Ответ на: Re: Просветите неграмотного от iliyap 30.03.2005 17:05:05  

Re: Просветите неграмотного

2iliyap * (*) (30.03.2005 17:05:05) Такой запрос, по идее, вообще не заработает - потому как выборка всех полей (посредством *) из двух идентичных таблиц (с точки зрения sql - это две _разные_ таблицы, но с одинаковым набором полей) приведет к конфликту имен полей.

* ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 16:20:31  
mumpster

nw

> update saldos set
> begintime=connects.begintime,endtime=connects.endtime
зверь песец просто. такое ощущение что перед составлением схемы БД и логики программы вообще не думали головой.
херня какая-то. наверняка следствие неправильного проектирования.
ты скажи по-простому чо сделать-то надо? может проще обойдёмся?

***** ()
[#] Ответ на: Re: Просветите неграмотного от iliyap 30.03.2005 17:05:05  
mumpster

nw

> select * from accounts a,(select acctid, max(from) as from
> from accounts where from < r_till and till > r_from group by acctid)
> lasta where a.acctid = lasta.acctid and a.from = lasta.from
> Кто скажет, как такой запрос сделать без вложенного селекта?
а чо, просто join уже не канает? я за такой селект разнос устраивал программеру.
select a.*, lasta.acctid, max(lastid.from) as from from accounts a, accounts lasta where lasta.from <r_till ....
по-моему это у Грубера пример рассматривается?

***** ()
[#] Ответ на: nw от mumpster 30.03.2005 19:56:37  

Re: nw

ага. и так. внимание. "легким движением визарда, ваш сложный навороченный запрос для постгри превращается в сотню офигенно быстрых иннер джоинов для мускуля... превращается... превращается..."

anonymous ()
[#]  
OpenStorm

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

Кто юзал Мастер-ту-Мастер реплику в постгресе? Какой движок лучше юзать?

*** ()
[#] Ответ на: Re: Просветите неграмотного от Nik 30.03.2005 16:29:00  

Re: Просветите неграмотного

Ты не прав это в mysql кластеризацию иоко прикрутили, а в постгресе она уже давно

anonymous ()
[#]  

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

А можно реплицировать в XML хранящийся в MYSQL?

anonymous ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

view и тригеры появились в мускуле в продакшене?
а хранимые процедуры?

для незнающих вебмастеров: это позволяет хранить логику в БД и писать клиенты на разных языках - perl, php, c(++).



anonymous ()
[#] Ответ на: Re: Просветите неграмотного от anonymous 30.03.2005 23:05:09  

Re: Просветите неграмотного

> Ты не прав это в mysql кластеризацию иоко прикрутили, а в постгресе она уже давно

так где все-таки можно почитать про кластеризацию постгреса?

* ()

Re: Настройка репликации в PostgreSQL с помощью системы Slony-I

>view и тригеры появились в мускуле в продакшене? а хранимые процедуры?

>Пока только в девелоперской ветке.

дык не все сразу, хотя обещают в самое ближайшее время что 5.0 будет продакшн, а там глядишь и следущая. Не волнуйся, все будет ;)

* ()