Próbowałem Postgres-XC i jeszcze nie implementuje pełnego SQL (jak SERIAL)
Postgres-R wygląda interesująco, ale według twórców „nie jest gotowy do produkcji”.
Więc użyłem pgpool-II 3.0.1. Tak, działa ładnie. Ale o ile widzę, dotyczy to tylko 2 węzłów PG.
Czy jest coś, co jest rzeczywiście gotowe do produkcji ORAZ zdolne do pracy z wieloma węzłami PG?
replication
postgresql
mrkafk
źródło
źródło
Odpowiedzi:
Czy rozważałeś Bucardo ? To asynchroniczny multimaster. Nie do końca się przyjął i nie jest ogólnym rozwiązaniem, ale warto spróbować.
źródło
Muszę się zgodzić z oceną Petera: W tej chwili nie ma naprawdę dobrej replikacji wielu wzorców dla Postgres. (Wykonywanie prawdziwej replikacji wieloskładnikowej jest bardzo trudnym problemem i nie jestem zakochany w żadnym z dostępnych rozwiązań.)
Cribbing listę Wikipedii potencjalnych rozwiązań, które możesz chcieć zbadać:
źródło
Jest to silnie zorientowane na Javę, ale natywne interfejsy API klienta bazy danych można łączyć ze źródłami danych JDBC. Tungsten Myosotis jest przykładem MySQL pochodzącym z mostkowania JDBC.
Wolfram Enterpriese jest dobry dla asynchronicznego multi-master. Myślę, że to działa na MySQL, PostgreSQL i Oracle. Może działać jako samodzielny lub osadzony w aplikacji Java. Widziałem, jak działa dla MySQL, ale twierdzą, że PostgreSQL. Ich komponent Replicator jest oprogramowaniem typu open source, ale pełne rozwiązanie ma więcej części i wymaga kosztów licencji. Firma Continuent pierwotnie miała sekwencję synchroniczną dla wielu masterów, ale porzuciła ją i zamiast tego stworzyła Tungsten dla asynchronicznej multi-master - uważają skalowanie za bardziej strategiczne przedsiębiorstwo niż synchroniczna spójność ACID. Tungsten jest napisany w Javie, dlatego oferują Myosotis do łączenia natywnych klientów baz danych.
SymmetricDS jest dobry dla asynchronicznego z wieloma masterami. Jest to oprogramowanie typu open source. Instaluje / odinstalowuje wyzwalacze do przechwytywania aktualizacji, zamiast rejestrowania bin. Może działać jako samodzielny lub osadzony w aplikacji Java.
HA-JDBC jest dobry dla synchronizacji z wieloma masterami. Zastępuje starsze niedziałające oprogramowanie, takie jak C-JDBC i Sequoia. Jest to oprogramowanie typu open source. Wykorzystuje zatwierdzanie dwufazowe i działa w PostgreSQL, MySQL, Oracle, SQL Server, Derby, Sybase i wielu innych za pośrednictwem dialektów. Jest przeznaczony głównie do osadzania, więc osadzony w aplikacji Java w celu połączenia go z PostgreSQL. Rozproszone blokady, sekwencje, czas, rand itd. Są obsługiwane przez jGroups z Redhat / JBoss. Jedną z fajnych funkcji jest tryb szeregowy zamiast transakcji równoległej, jeśli aplikacja napotkała zakleszczenia i nie obsługuje wycofywania. Z powodzeniem użyłem tego trybu „szeregowego”, aby ponownie zainstalować starszą aplikację, która nie obsługiwała klastra DB, więc brakowało kodu ponownej próby transakcji. Tryb szeregowy uratował dzień i uniknął nieprzyjemnego przepisywania.
H2 jest dobry dla synchronizacji z wieloma masterami. Jest to oprogramowanie typu open source. Obsługuje autonomiczne bazy danych lub klastry korzystające z zatwierdzania dwufazowego, podobnego do architektury HA-JDBC, ale wszystko jest w jednym, zamiast wymagać dodatkowego komponentu do zatwierdzania dwufazowego. Nie jestem pewien, czy sam dystrybuuje blokady, czy zależy od innych firm, takich jak jGroups lub Hazelcast.
Każda replikacja oparta na JDBC dla PostgreSQL i innych baz danych wymaga macierzystego mostu JDBC, chyba że aplikacja jest już napisana w Javie. W przypadku MySQL Tungsten Enterprise oferuje opcjonalny komponent o nazwie Myosotis. Z powodzeniem wykorzystałem to do połączenia PHP / Perl / C / mysqlclient z JDBC, gdzie źródłem danych JDBC było źródło danych proxy HA-JDBC wskazujące na 4-węzłowy klaster MySQL / InnoDB.
Tungsten obsługuje PostgreSQL w komponentach Replicator i Router, ale nie ma pewności co do komponentu Myosotis. Może. Komponenty replikatora / routera wolframu są przeznaczone do pracy asynchronicznej z wieloma masterami, ale Myosotis może połączyć cię z alternatywnym back-endem JDBC, takim jak HA-JDBC lub H2.
Jeśli istnieje mostek PostgreSQL natywny dla mostu JDBC, chciałbym o nim usłyszeć. Teoretycznie można łączyć dowolną bazę danych ze sterownikiem JDBC typu 4. JDBC typu 4 mówi natywny protokół bazy danych, podobnie jak natywny interfejs klienta dla tej bazy danych, dlatego powinno istnieć odwzorowanie natywnych wywołań typu jeden do jednego na wywołania JDBC.
źródło
Odpowiedź na to brzmi: nie.
źródło
Używam londiste przez ostatnie 2 lata do replikacji wielostanowiskowej w postgresql.
Umieszczasz tabele w kolejkach za pomocą pg_queue i możesz subskrybować tyle baz danych, ile chcesz w każdej kolejce, replikacja jest atomowa według kolejki i bardzo elastyczna.
Możesz przeczytać o londiste tutaj ( http://pgfoundry.org/projects/skytools/ ), to jest to, czego używają Skype dla swojego klastra, również go stworzyli, więc jest podwójnie fajnie :)
źródło
Jeśli nadal jesteś zainteresowany, wypróbuj ten: http://www.symmetricds.org/ (tylko Java)
źródło
Znalazłem użyteczny system replikacji „multi-master”:
zdobądź RabbitMQ http://www.rabbitmq.com/ - to oprogramowanie pośredniczące w wiadomościach.
skonfiguruj klaster Rabbit MQ w Rabbit.
utwórz kolejkę dla każdego węzła w klastrze i powiąż je z wymianą typu „fanout”.
W ten sposób wiadomość wysyłana do dowolnego węzła i dowolnej kolejki jest replikowana do wszystkich innych węzłów. Mam do tego działający kod!
źródło