Leí esta pregunta La replicación maestro / esclavo MySQL no funciona y su respuesta:
El uso de bases de datos esclavas apenas se implementa en el núcleo de Drupal. Si está desarrollando sus propios módulos, las llamadas a db_query deben especificar que desean utilizar la base de datos esclava utilizando la matriz $ options. Vea DatabaseConnection :: defaultOptions para saber cómo configurar esta matriz.
¿Hay alguna manera sin matar gatitos hackeando el núcleo para obtener db_query()
y db_select()
hacer más consultas SELECT esclavas?
Por defecto, estas funciones consultarán al maestro a menos que se le indique específicamente que consulte al esclavo (consulte su API). Debe escribir db_query($query, $args, array('target' => 'slave'))
para consultar al esclavo y el núcleo (y todos los módulos) no están escritos para lograr esto.
Solo buscar (ver la parte esclava) y el agregador parece aprovechar esto.
Editar: 25 de octubre
Vi que pressflow 7 está fuera, pero no estoy seguro de si ayuda mucho en este momento.
No he encontrado algo relevante, así que intentemos una pequeña recompensa para ayudar a obtener una respuesta.
Editar: 31 de octubre
. Estoy principalmente preocupado por los comentarios de Crell sobre este tema: ¿Qué hacer con los esclavos? .
Principalmente, ¿hay problemas si envío SELECT
consultas al esclavo, qué sucede con los retrasos en la replicación y el hecho de que tal vez quiera hacer un node_load()
poco después de guardar un nuevo nodo?
fuente
SELECT
consultas? ¿Cómo lidiar con los retrasos en la replicación y el hecho de que cargar un nodo justo después de guardarlo puede causar problemas?El módulo AutoSlave redirige las
SELECT
consultas a bases de datos replicantes de solo lectura y tiene en cuenta el retraso de la replicación.Según los documentos del módulo, solo utiliza el replicante de solo lectura cuando se cumplen todas las condiciones siguientes:
fuente
por lo que escuché en el reciente Drupal BADcamp Pressflow es el camino a seguir si desea configuraciones maestro / esclavo. Estarás limitado a Mysql como DB. Además, verifique el " grupo de alto rendimiento " en do
fuente
A pesar de todo el increíble trabajo realizado en la capa de abstracción de la base de datos en Drupal 7, esto sigue siendo sorprendentemente difícil de hacer con el núcleo de Drupal listo para usar. Como otros han mencionado, AutoSlave es una opción, aunque no una que he intentado debido a mi obstinada negativa a creer que debería ser tan difícil hacerlo.
Una solución más simple que he encontrado es la siguiente. Para enrutar todos
SELECT
los correos electrónicos al servidor esclavo, cree un archivo tituladoselect.inc
dentro delincludes/database/mysql
directorio central con el siguiente contenido:Existen algunos riesgos con este método:
SELECT
y los dirigirá al esclavo, lo que indudablemente causará problemas si tiene algún retraso en la replicación. Lee esa oración de nuevo.includes/database/mysql/select.inc
, su archivo se sobrescribiría durante la actualización, y tendría que comenzar a mantener su propia versión parcheada de select.inc que se envía con el núcleo de Drupal.Si no tiene ningún servidor esclavo especificado en settings.php, el código anterior no causará ningún problema. Todavía se degradará con gracia al uso del servidor maestro .
fuente
target => 'slave'
opción establecida, se ejecutará en la conexión predeterminada. Es un dolor, no es más fácil establecer el objetivo de conexión más fácilmente en elquery_alter
nivel.