Pregunta

¿Por qué se ahorraría algo que no se puede recuperar más adelante? Cuál es el punto?

¿Fue útil?

Solución

Es útil en un entorno replicado en todas las sentencias SQL se ejecutan en todos los nodos, pero solo quiere que algunos nodos en realidad almacenar el resultado. Se trata de un caso de uso dado en la documentación: http: //dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html

Otros usos indicados en la documentación incluyen:

  • Verificación de la sintaxis del archivo de volcado.
  • Medición de la sobrecarga desde el registro binario, mediante la comparación de rendimiento utilizando BLACKHOLE con y sin activar el registro binario.
  • BLACKHOLE es esencialmente un “no-op” motor de almacenamiento, por lo que se podría utilizar para encontrar el rendimiento cuellos de botella no relacionados con el motor de almacenamiento en sí.

Otros consejos

Suponga que tiene dos equipos, cada uno ejecutando un servidor MySQL. Uno de computación anfitriones la base de datos primaria, y la segunda hosts una replicante esclavo que se utiliza como una copia de seguridad.

Además supongamos que el servidor primario contiene algunas bases de datos o tablas que no desea respaldar. Quizás están tablas de caché de alta pérdida de clientes y no importa si no pierden su contenido. Por lo tanto, para ahorrar espacio en disco y evitar el uso innecesario de la CPU, la memoria y el disco IO, se utiliza el opciones de replicación para configurar el esclavo de ignorar las declaraciones que afectan a las tablas que no desea una copia de seguridad.

Sin embargo, desde los filtros de replicación sólo se les aplican en el servidor esclavo , los binlogs para todos instrucciones ejecutadas en el servidor maestro todavía necesitan ser transmitidos por la red. Hay ser ancho de banda desperdiciado aquí; el servidor maestro está enviando binlogs para las transacciones que el esclavo simplemente se va a tirar a la basura después de recibir ellos. Podemos hacerlo mejor, y evitar el uso de ancho de banda innecesario?

Sí, podemos, y ahí es donde el motor BLACKHOLE entra en juego. En la página mismo equipo que el servidor maestro se está ejecutando en, corremos un segundo, proceso mysqld ficticia, éste tendrá lugar un BLACKHOLE base de datos. Configuramos este proceso ficticio para replicar desde binlog del proceso principal, con las mismas opciones de replicación que el esclavo real, y para producir un binlog propia. binlog del proceso ficticio ahora sólo contiene las declaraciones que las necesidades reales de esclavos, y no se ha hecho ningún trabajo real más allá de la filtración de los estados no deseados de la binlog (ya que se trata de utilizar el motor BLACKHOLE). Por último, configuramos el verdadero esclavo de replicar desde binlog del proceso simulado, en lugar de binlog del proceso principal original. Ahora hemos eliminado el tráfico de red innecesario entre los dos equipos que alojan los servidores maestro y esclavo.

Esta configuración es lo que se describe e ilustra (mucho más concisamente) por este párrafo y el diagrama de los documentos Blackhole :

Suponga que su aplicación requiere del lado esclavo reglas de filtrado, pero la transferencia de todos los datos de registro binario de los primeros resultados de esclavos en exceso de tráfico. En tal caso, es posible configurar en el host maestro un proceso esclavo “ficticia”, cuyo motor de almacenamiento por defecto es BLACKHOLE, representado como sigue:

Diagrama del escenario descrito anteriormente

Además de la filtración, la documentación también crípticamente indicio de que el uso de un servidor BLACKHOLE con binlogging habilitado "puede ser útil como un repetidor ... mecanismo de" . Este caso de uso se enriquezca menos en la documentación, pero es posible imaginar un escenario en el que esto tendría sentido. Por ejemplo, suponga que tiene un montón de servidores esclavos, todos en los equipos de una red local con conexiones locales rápidas entre sí, que todos necesitamos para replicar grandes cantidades de datos desde un esclavo remoto que sólo puede ser conectado a en internet. Usted no quiere tener a todos ellos duplicados directamente desde el cuadro principal, desde entonces, de que está recibiendo los mismos datos varias veces a lo largo y usar varias veces más ancho de banda de Internet que tiene que hacerlo. Pero supongamos que también no quiere tener sólo uno de sus esclavos existentes replicar desde el maestro y los otros replicar fuera de ese esclavo, tal vez debido a sus esclavos se están ejecutando en mucho menos fiable máquinas que el maestro o se están ejecutando algunos otros procesos que pueden matar a la caja por el consumo de toda su CPU o la memoria, y que no quieren correr el riesgo de un fallo de software o hardware en el takin esclavo intermediag abajo de su red de esclavos conjunto. ¿Qué hace usted?

Una solución de compromiso podría ser la introducción de una caja adicional en su red de esclavos para que actúe como intermediario, optimizado para la fiabilidad y el rendimiento en lugar de para el almacenamiento. Darle una unidad SSD pequeña, fiable y ejecutar nada en ella, aparte de un proceso de mysqld replicar desde el maestro a distancia, y tienen que producir binlogs que los otros esclavos pueden suscribirse. Y, por supuesto, la creación de este esclavo intermedia para utilizar el motor BLACKHOLE, de modo que no necesita espacio de almacenamiento.

Tanto este y el esclavo filtrado intermedio se describe en detalle en la documentación son casos de borde; la mayoría de los usuarios de MySQL no se encontrarán en situaciones en las que podría beneficiarse del uso de cualquiera de estas estrategias, permiten suficientes beneficios solo para justificar hacer el trabajo para ellos en realidad creó. Pero al menos en teoría, el motor BLACKHOLE se puede utilizar para crear un nodo intermedio de una red de replicar los esclavos como una estrategia de conservación de ancho de banda, sin necesidad de que el nodo para realmente almacenar los datos en el disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top