transacción Mysql, sincronización, copia de seguridad

I. Introducción

        Cuando se comparte la resolución de problemas de retraso de sincronización maestro-esclavo en el departamento antes de la resolución de problemas de retraso de sincronización maestro-esclavo de Mysql en línea blog-CSDN de blog de tingmailang , los colegas tienen algunos problemas nuevos y la comprensión de algunos colegas de las transacciones, la sincronización y la copia de seguridad se limita a Internet Algunos blogs y comunidades, no en profundidad y no del todo correcto, haga un análisis aquí

2. Análisis

Por ejemplo:

1. ¿Por qué los datos de la biblioteca esclava no se actualizan en el disco y el búfer cuando la copia de seguridad física está atascada?

2. En el modo semisincrónico, ¿la biblioteca esclava atascada afectará el envío de transacciones de la biblioteca principal?

3. ¿Por qué se recomienda la copia de seguridad lógica LVM para Mysql de alto rendimiento?¿Cómo implementa la duplicación de instantáneas sin bloquear las escrituras en disco?

1. Aquí hay un dibujo simple del módulo maestro-esclavo de Mysql

innodb es un motor configurable de mysql, que es equivalente a un complemento

 

2. Comienza la transacción

Después de que comience la transacción, escriba undolog primero y genere una lista doblemente enlazada en el segmento del espacio de tabla, que es la llamada cadena de versión, que se usa para la reversión de transacciones y MVCC

Redolog registra todos los cambios de la página de datos, por lo que los cambios de deshacer se registrarán para garantizar la persistencia

Modifique los datos de la línea de búfer, el área de búfer se escribirá en el disco mediante varias estrategias, como capacidad y frecuencia de tiempo

 

3. Envío de transacciones

Cuando se confirma la transacción, la biblioteca principal escribe en el binlog, que se indica claramente en "Innodb Storage Engine"

Después de escribir en el binlog, el subproceso de fondo de mysql transfiere los datos a la biblioteca esclava, y la biblioteca principal decide si esperar la respuesta de reconocimiento de acuerdo con el modo de sincronización.Usamos el modo de semisincronización

Después de recibir datos de la biblioteca, escriba en relaylog, otro subproceso asíncrono escribe en el búfer, si log_slave_update está habilitado, también escribirá en el binlog de la biblioteca esclava

 

Analice varias cuestiones a continuación

1. ¿Por qué los datos de la biblioteca esclava no se actualizan en el disco y el búfer cuando la copia de seguridad física está atascada?

La copia de seguridad física es una copia del archivo del disco, por lo que el registro de retransmisión de la biblioteca esclava se escribe normalmente, pero cambiar el archivo del disco desde el registro de retransmisión hará que el archivo se cambie, lo que es mutuamente excluyente con la copia.

2. En el modo semisincrónico, ¿la biblioteca esclava atascada afectará el envío de transacciones de la biblioteca principal?

De hecho, en cualquier modo, la biblioteca principal eventualmente enviará. El tiempo de espera predeterminado es de 10 s. Nuestro dba en línea establece 1 s. Incluso si la biblioteca principal no recibe la señal de reconocimiento cuando expira el tiempo de espera, la transacción se completará

Entonces, ¿cómo es semi-síncrono mejor que asíncrono? Simplemente reduce la probabilidad de una situación, es decir, después de que la biblioteca principal envía, la biblioteca esclava no lo recibe con éxito, pero la biblioteca principal está inactiva y la biblioteca esclava se convertirá en la biblioteca principal. maestro y esclavo serán inconsistentes. (En el caso de los asíncronos, esta posibilidad es mucho mayor que la de los semi-sincrónicos)

Entonces, si la biblioteca maestra de tiempo de espera finaliza automáticamente la transacción y la biblioteca esclava no la ha recibido en este momento, ¿no sigue siendo inconsistente? La biblioteca esclava de mysql enviará su propio gtid a la biblioteca principal. Cuando la biblioteca principal se compare con su propio gtid, descubrirá automáticamente qué falta en la biblioteca y enviará estos binlogs a la biblioteca esclava.

3. ¿Por qué se recomienda la copia de seguridad lógica LVM para Mysql de alto rendimiento?¿Cómo implementa la duplicación de instantáneas sin bloquear las escrituras en disco?

La copia de seguridad lógica LVM se basa en el mecanismo CoupOnWrite de Linux. No copia archivos al realizar la copia de seguridad. Si el disco está escrito, copiará la unidad más pequeña de páginas de datos en forma de abanico a través de subprocesos, es decir, copia en escritura. Por lo tanto, casi no hay conflicto de Will con la escritura, incluso el conflicto de la unidad más pequeña terminará pronto (la persistencia de rdb de redis también se basa en este mecanismo)

3. Resumen

1. Las transacciones de Mysql se realizan mediante undolog y redolog de Innodb. Undolog registra los cambios en los datos de las filas y forma una lista doblemente enlazada en el lado del espacio de la tabla para revertir y MVCC. Redolog registra los cambios en la página de datos para restaurar la situación antes de que mysql colapsara.

2. La sincronización maestro-esclavo de Mysql se divide en tres métodos: sincronización completa, semisincronización y asíncrono, pero no importa cuál sea solo para determinar si la biblioteca principal necesita esperar.

3. La copia de seguridad se divide en copia de seguridad física y copia de seguridad lógica. La copia de seguridad lógica LVM se basa en el mecanismo Coupopwrite de Linux, recomendado por "High Performance Mysql".

Además del análisis anterior de la verificación del funcionamiento real y la investigación sobre "MySQL de alto rendimiento" y "Motor de almacenamiento Innodb", los blogueros y administradores de bases de datos también han pasado por debates en profundidad. Si tiene alguna objeción, bienvenido a discutir.

Supongo que te gusta

Origin blog.csdn.net/m0_69270256/article/details/128311652
Recomendado
Clasificación