2010-07-08 10 views
5

¿Qué es una forma de manejar la indisponibilidad de la base de datos y redireccionar las consultas de esclavo no disponible a otro en Django 1.2?¿Cuál es una forma de manejar la falla de conexión de la base de datos en Django 1.2?

Por cierto, me di cuenta, que fue discutido: http://code.djangoproject.com/wiki/MultipleDatabaseSupport#Requirements (consulte "Manejo de forma transparente el fracaso de base de datos")

UPD> utilizo backend PostgreSQL (probablemente va a utilizar la piscina pg o algún otro grupo potgres) bajo Linux

+0

Supongo que hay una manera de hacerlo de alguna manera a través del enrutador de la base de datos, pero ¿cómo? – DataGreed

Respuesta

4

Si está utilizando un backend de PostgreSQL y está en un sistema Linux/BSD etc., considere usar pgpool: http://www.pgpool.net/ Esta utilidad maneja las conexiones al servidor de bases de datos por usted, por lo que solo se conecta a pgpool. No es necesario que implemente más lógica. Simplemente conéctate a pgpool, no a PostgreSQL.

+0

Hm, thx, voy a profundizar en esto. ¿Qué pasa con la configuración de django? ¿Se puede usar pgpool con psycopg como una base de datos PostgreSQL normal? – DataGreed

+1

@DataGreed - sí pgpool escucha en un puerto diferente, eso es todo. Su proyecto Django usa este puerto, por lo que pgpool funciona como un proxy transparente para el db. – mawimawi

+0

gracias, mawimawi – DataGreed

0

También hay un proxy para MySQL, MySQL Proxy. Se conectaría al proxy, y ese proxy sabría cómo manejar el failover. En el caso de MySQL Proxy, está diseñado para failover, por lo que espero que sea estable y sepa cómo manejar fallas :)

+0

Solo para observar aquí MySQL Proxy todavía está en alfa y no está listo para envs de producción. – cevaris

2

Desafortunadamente, de momento no hay forma de usar la característica DATABASE_ROUTERS para manejar una base de datos no disponible, deberá usar una herramienta externa como otros han sugerido.

Cuestiones relacionadas