systemadmin.es > Backup > bacula: sql_create.c Lock wait timeout exceeded; try restarting transaction

bacula: sql_create.c Lock wait timeout exceeded; try restarting transaction

En un servidor de bacula nos podemos encontrar con un error similar al siguiente:

Fatal error: sql_create.c:860 Fill File table Query failed: INSERT INTO File (...): ERR=Lock wait timeout exceeded; try restarting transaction

Se trata de un error al insertar en la base de datos, en este caso MySQL. El mensaje Lock wait timeout exceeded; try restarting transaction corresponde a una transacción que ha estado esperando para obtener un recurso (por defecto 50 segundos) y al no obtenerlo se ha cancelado la transacción. Esto provoca que el job de bacula no acabe correctamente.

Al tener los siguientes condicionantes:

  • Se trata de una base de datos MySQL dedicada exclusivamente a Bacula
  • El nivel de paralelismo es bajo. Aunque se ejecuten jobs en paralelo, están todos los daemons de bacula en el mismo equipo, por lo que tampoco se puede exagerar con un único equipo

Podemos aumentar tranquilamente el timeout sin que tengamos que preocuparnos que luego pueda provocar el bloqueo completo de la base de datos por saturación:

mysql> set global innodb_lock_wait_timeout=200;
Query OK, 0 rows affected (0.03 sec)

Evidentemente, cada cambio que se realice en caliente se deberá definir en el my.cnf para evitar perder el cambio al reiniciar el MySQL:

# grep lock_w /etc/my.cnf 
innodb_lock_wait_timeout = 200

2 comments to “bacula: sql_create.c Lock wait timeout exceeded; try restarting transaction”

  1. buen aporte

  2. Gracias, había activado el “batch insert” y estaba teniendo estos problemas.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>