Для начала — можно глянуть партрицирование больших таблиц(например, коментарии, логи пользователей). Если же данные все актуально выбираются (например, таблица юзеров) — шардинг.
Что мешает слейву забрать логи после того как сеть не перестала «лагать»?
P.S. WAL логи — это файлы с изменениями в бд сброшеные в отдельную папку (а то вдруг вы про другое думаете)
Вещь то хорошая, но как утилита для репликации её стоить брать в последнюю очередь (при INSERT нужно лочить таблицы, синхронная, при нагрузке упадут все, а не только мастер). Вообще лучше делать так, что бы приложение и не знало есть там кластер или нет, и работало с минимальным изменением кода.
1. Нет. Создается точная копия инстанса PostgreSQL.
2. Слейвы накатывают с WAL логов данные, так что то что успел сбросить мастер перед падением будет на все слейвах (рано или поздно). Так что они всегда при падении мастера синхронны в данных (Не сразу, может зависить от настроек кластера).
3. Одной команды нет, но возможность есть.
2010-08-25 17:25:16 UTC ERROR remoteWorkerThread_1: SYNC aborted
postgres[8785]: [5-1] ERROR: Slony-I: alterTableForReplication(): Table with id 902113 not found
postgres[8785]: [5-2] CONTEXT: SQL statement «SELECT „_maincluster“.alterTableForReplication(tab_id) from „_maincluster“.sl_table where tab_set in (select set_id from „_maincluster“.sl_set where set_origin = „_maincluster“.getLocalNodeId('_maincluster'))»
[5-3] #011PL/pgSQL function «ddlscript_complete» line 9 at PERFORM
[5-4] STATEMENT: select "_maincluster".ddlscript_complete(4521, $1::text, -1);
P.S. WAL логи — это файлы с изменениями в бд сброшеные в отдельную папку (а то вдруг вы про другое думаете)
В будущем заменим Londiste на стриминг репликацию.
2. Слейвы накатывают с WAL логов данные, так что то что успел сбросить мастер перед падением будет на все слейвах (рано или поздно). Так что они всегда при падении мастера синхронны в данных (Не сразу, может зависить от настроек кластера).
3. Одной команды нет, но возможность есть.
репликация+шардинг = кластеризация :)
А точно не наоборот???
2010-08-25 17:25:16 UTC ERROR remoteWorkerThread_1: SYNC aborted
postgres[8785]: [5-1] ERROR: Slony-I: alterTableForReplication(): Table with id 902113 not found
postgres[8785]: [5-2] CONTEXT: SQL statement «SELECT „_maincluster“.alterTableForReplication(tab_id) from „_maincluster“.sl_table where tab_set in (select set_id from „_maincluster“.sl_set where set_origin = „_maincluster“.getLocalNodeId('_maincluster'))»
[5-3] #011PL/pgSQL function «ddlscript_complete» line 9 at PERFORM
[5-4] STATEMENT: select "_maincluster".ddlscript_complete(4521, $1::text, -1);