2010-07-08 8 views
5

Jaki jest sposób na poradzenie sobie z niedostępnością bazy danych i przekierowanie zapytań z niedostępnego slave na inny w Django 1.2?Jaki jest sposób radzenia sobie z niepowodzeniem połączenia z bazą danych w Django 1.2?

Btw, okazało się, że to zostało omówione: http://code.djangoproject.com/wiki/MultipleDatabaseSupport#Requirements (patrz „przezroczysty obsługi awarii bazy danych”)

UPD> używam backend PostgreSQL (prawdopodobnie będzie korzystać z basenu pg lub inny klaster potgres) pod Linuksem

+0

Przypuszczam, że jest sposób, aby to zrobić jakoś poprzez router bazy danych, ale jak? – DataGreed

Odpowiedz

4

Jeśli korzystasz z backendu PostgreSQL i jesteś w systemie Linux/BSD itp., Rozważ użycie pgpool: http://www.pgpool.net/ To narzędzie obsługuje połączenia z serwerem DB, więc łączysz się tylko z pgpool. Nie musisz już wprowadzać więcej logiki. Wystarczy połączyć się z pgpool, a nie z samym PostgreSQL.

+0

Hm, thx, przyjrzę się temu głębiej. A co z konfiguracją django? Czy pgpool może być używany z psycopg tak samo, jak z normalną bazą danych PostgreSQL? – DataGreed

+1

@DataGreed - yes pgpool nasłuchuje na innym porcie, to wszystko. Twój projekt Django używa tego portu, więc pgpool działa jako przezroczysty serwer proxy dla bazy danych. – mawimawi

+0

dziękuję, mawimawi – DataGreed

0

Istnieje również serwer proxy dla MySQL, MySQL Proxy. Użytkownik łączyłby się z proxy, a ten serwer proxy wiedziałby, jak obsługiwać przełączanie awaryjne. W przypadku serwera proxy MySQL jest on przeznaczony do pracy awaryjnej, więc oczekuję, że będzie stabilny i wiedział, jak radzić sobie z awariami :)

+0

Należy zauważyć, że tutaj Proxy MySQL wciąż znajduje się w wersji alfa i nie jest gotowe na envy produkcyjne. – cevaris

2

Niestety, w tej chwili nie ma możliwości skorzystania z funkcji DATABASE_ROUTERS w celu obsługi niedostępna baza danych, będziesz musiał użyć zewnętrznego narzędzia, jak sugerowali inni.

Powiązane problemy