LINUX.ORG.RU

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


0

0

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

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



Проверено: Shaman007 ()

Ответ на: комментарий от anonymous

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

в MySQL есть вложенные подзапросы ? типа:

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

Знаю, что пример дурацкий, просто интересно...

anonymous
()
Ответ на: комментарий от anonymous

ну. а как по-вашему следует? и то что в mysql триггеров нету так это отнюдь не плюс ему :)

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: Просветите неграмотного от anonymous

> 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
()
Ответ на: комментарий от anonymous

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
()
Ответ на: комментарий от anonymous

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

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

Nik
()

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от Nik

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

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

anonymous
()
Ответ на: комментарий от Nik

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

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

WindowsUser ★★
()
Ответ на: комментарий от Nik

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

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

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от WindowsUser

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

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

Nik
()

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

LX ★★
()
Ответ на: комментарий от anonymous

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

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

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

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

Nik
()
Ответ на: Просветите неграмотного от anonymous

Да, пример действительно дурацкий. Но вот если в вложенном подселекте
было бы агрегирование, он был бы уже не дурацким. Например, можно
представить себе табличку, в которой храняться версии лицевого счёта
(типично для систем учёта, где надо отслеживать состояное объектов
во времени), причём номер счёта в колонке 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

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

iliyap ★★★★★
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

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

Nik
()
Ответ на: комментарий от anonymous

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

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

Nik
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от Nik

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

KRoN73 ★★★★★
()
Ответ на: комментарий от iliyap

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

Odysseos
()
Ответ на: комментарий от anonymous

nw

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

mumpster ★★★★★
()
Ответ на: комментарий от iliyap

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 ....
по-моему это у Грубера пример рассматривается?

mumpster ★★★★★
()
Ответ на: nw от mumpster

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

anonymous
()
Ответ на: комментарий от anonymous

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

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



anonymous
()
Ответ на: комментарий от anonymous

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

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

realloc ★★★★
()
Ответ на: комментарий от anonymous

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

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

Nik
()
Ответ на: комментарий от realloc

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

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

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

Dubrovsky
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.