¿Alguna vez es seguro configurar innodb_flush_log_at_trx_commit=0?

¿Alguna vez es seguro configurar innodb_flush_log_at_trx_commit=0?

Tengo un servidor (Dell PE2950) con un caché de escritura respaldado por batería en el controlador raid.

¿Es seguro para mí configurar innodb_flush_log_at_trx_commit=0 en un servidor mysql con archivos de datos almacenados en un volumen raid0?

¿Habría una respuesta diferente si el volumen fuera raid1/5/10?

¡Gracias!

Respuesta1

Si le preocupa perder datos, no es seguro. Según el manual, es posible que se haya confirmado una transacción, pero que aún no se haya escrito en el disco, ya que solo está en la memoria. Esto significa que una falla de mysqld o del sistema operativo o un corte de energía pueden causar la pérdida de transacciones.

En algunos sistemas, puede estar bien perder transacciones, siempre y cuando una transacción se pierda por completo o se conserve por completo. En ese caso, puede desactivar esta configuración.

La relevancia del controlador RAID respaldado por batería es el almacenamiento en caché de escritura segura en el controlador. Si el controlador almacenara en caché las escrituras pero perdiera energía, sin batería, perdería los datos en la caché de escritura. Pero MySQL ya esperaría que esto estuviera seguro en el disco. Por tanto, la batería permite el uso seguro del almacenamiento en caché de escritura en el controlador RAID. Por lo general, el controlador tiene una configuración para desactivar automáticamente el almacenamiento en caché de escritura si el nivel de la batería es demasiado bajo.

El nivel RAID no es directamente relevante. Si los datos están en el disco, están en el disco. Si se corta la energía, será seguro. Donde los niveles de RAID sí importan es si un disco muere, un modo de falla completamente diferente. En caso de que sea RAID0, obviamente hay una pérdida instantánea de todos los datos. En el caso de RAID5, puede continuar con un gran impacto en el rendimiento. Con RAID1/10 puede continuar con un impacto de rendimiento muy pequeño.

Pero no confunda RAID con una copia de seguridad. Hay docenas de modos de falla para un servidor de base de datos y RAID maneja solo uno de ellos: falla del disco. Su sistema de archivos podría fallar, podría borrar datos accidentalmente, sus archivos de datos podrían romperse debido a un oscuro error de MySQL. Por lo tanto, no olvide mantener copias de seguridad de los datos importantes utilizando mysqldump. Nunca copie los archivos de datos, a menos que MySQL esté detenido, ya que pueden ser inconsistentes.

Respuesta2

Para mayor seguridad y rendimiento, debe tener innodb_flush_log_at_trx_commit=1 y RAID 10.

Salud

información relacionada