¿Qué son exactamente los archivos iblog en mysql?

15

Me gustaría entender estos archivos ibdata, ya que estos juegan un papel vital en el procedimiento de recuperación de fallos. No pude encontrar los recursos adecuados en la web para esto.

Uday
fuente

Respuestas:

17

ibdata1

El archivo ibdata1 es el espacio de tabla del sistema para la infraestructura de InnoDB.

Contiene varias clases de información vital para InnoDB

  • Páginas de datos de tabla
  • Páginas de índice de tabla
  • Diccionario de datos
  • Datos de control de MVCC
    • Deshacer espacio
    • Segmentos de reversión
  • Memoria intermedia de doble escritura (páginas escritas en segundo plano para evitar el almacenamiento en caché del sistema operativo)
  • Insertar memoria intermedia (cambios en los índices secundarios)

Haga clic aquí para ver una representación pictórica

Puede divorciar las páginas de datos e índices de ibdata1 habilitando innodb_file_per_table . Esto hará que cualquier tabla InnoDB recién creada almacene datos e páginas de índice en un .ibdarchivo externo .

Ejemplo

  • datadir es / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;crea /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table habilitado, Páginas de datos / índice almacenadas en /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table deshabilitado, Páginas de datos / índice almacenadas en ibdata1

No importa dónde esté almacenada la tabla InnoDB, la funcionalidad de InnoDB requiere buscar metadatos de tabla y almacenar y recuperar información MVCC para admitir el cumplimiento de ACID y el aislamiento de transacciones .

Aquí están mis artículos anteriores sobre la separación de datos de tablas e índices de ibdata1

iBlog archivos (aka ib_logfile0, ib_logfile1)

Si usted quiere saber lo que el ib_logfile0y ib_logfile1es de, que son los registros de rehacer InnoDB. Nunca deben borrarse o redimensionarse hasta que se haya producido un apagado normal completo de mysqld . Si mysqld falla alguna vez, simplemente inicie mysqld. Leerá ib_logfile0y ib_logfile1comprobará cualquier cambio de datos que no se haya publicado en el búfer de doble escritura ibdata1. Reproducirá (rehacerá) esos cambios. Una vez que se reproducen y almacenan, mysqld se prepara para nuevas conexiones de base de datos.

RolandoMySQLDBA
fuente
¿Cómo se retendrá el espacio en estos archivos de registro ...? Quiero preguntar ... "para nuevas transacciones innodb cómo se usarán los mismos archivos de registro si se llenan por completo ..."
Uday
Mi comentario anterior es sobre los archivos ib_log ....
Uday
1
@ Uday El espacio no se retendrá en los archivos iblog hasta que el búfer de registro se vacíe. Es un proceso dinámico, donde el espacio de registro se ocupa y se libera en función de los cambios de transacción detenidos registrados en el búfer de registro. Estos archivos de registro se ocupan por completo, siempre que realiza grandes cargas de datos, lo que conduce a errores de Innodb que indican "InnoDB: que excede la capacidad del grupo de registro"., Lo que significa que el tamaño del archivo de registro debería ser mayor para hacer cosas. Espero que mi explicación aclare tu duda.
Gopinath
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdy innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1debería ser al revés, ¿no?
rabudde
1
@rabudde Ya está arreglado. Gracias de nuevo !!!
RolandoMySQLDBA