MariaDB max_allowed_packet: cómo ajustar el tamaño de los paquetes
MariaDB max_allowed_packet es una variable de sistema que establece el tamaño máximo de los paquetes de datos entre la base de datos y la aplicación. Si trabajas con archivos pesados, numerosos registros o consultas SQL largas, puedes encontrarte con límites si no ajustas este valor correctamente.
¿Qué es MariaDB max_allowed_packet?
La variable de sistema max_allowed_packet es uno de los parámetros de configuración más importantes en MariaDB y MySQL, ya que influye directamente en la estabilidad y fiabilidad de las transferencias de datos. Esta variable define el tamaño máximo de un paquete de datos que un cliente, como una aplicación o un script SQL, puede enviar a un servidor MariaDB o recibir de este. El valor predeterminado varía según el sistema, la distribución o la versión de MariaDB.
En MariaDB, un paquete de datos agrupa instrucciones SQL y contenidos que se transmiten entre servidor y cliente a través de la red. Si una instrucción SQL, por ejemplo, un INSERT con numerosos valores o un BLOB (Binary Large Object), supera el tamaño máximo configurado, el servidor rechaza la operación. En esos casos suele aparecer el siguiente error:
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytessqlEste parámetro protege al servidor frente a solicitudes excesivamente grandes que podrían saturar los recursos o provocar inestabilidad. Al mismo tiempo, ofrece a los administradores la posibilidad de ajustar el tamaño permitido a las necesidades concretas de su entorno.
Es importante saber que tanto el servidor como el cliente tienen su propio valor de max_allowed_packet. La transmisión solo será posible si ambos aceptan paquetes del mismo tamaño. Por ejemplo, si el servidor está configurado en 64 MB, pero el cliente en solo 16 MB, cualquier paquete superior a 16 MB fallará igualmente.
- vCPU económico con núcleos dedicados
- Flexible y sin periodo mínimo contractual
- Soporte experto 24/7
Sintaxis de MariaDB max_allowed_packet
MariaDB permite ajustar max_allowed_packet tanto de forma temporal como permanente. La sintaxis varía según el caso de uso:
Cambiar max_allowed_packet temporalmente para una sesión
Si solo quieres modificar el valor de max_allowed_packet en una conexión concreta, puedes hacerlo de manera temporal a nivel de sesión:
SET SESSION max_allowed_packet = 67108864;sqlEste comando eleva el límite a 64 MB, pero únicamente para la conexión activa del cliente.
Cambiar max_allowed_packet globalmente (a nivel de servidor) en tiempo de ejecución
Si deseas ajustar max_allowed_packet en todo el servidor, debes definir el valor de forma global:
SET GLOBAL max_allowed_packet = 67108864;sqlCon este comando, MariaDB aplica el nuevo valor a todas las conexiones futuras. Las sesiones ya abiertas no se ven afectadas. La configuración se mantiene hasta que se reinicie el servidor, por lo que resulta adecuada para ajustes persistentes durante la ejecución.
Casos de uso típicos de max_allowed_packet
En muchos escenarios, el valor predeterminado de max_allowed_packet puede quedarse corto rápidamente. En procesos con gran volumen de datos o en tareas automatizadas, un límite demasiado bajo provoca errores o interrupciones. Estos son algunos casos habituales en los que conviene ajustarlo:
- Importación de grandes volcados SQL: al restaurar un backup o un dump de base de datos con muchos datos, el valor predeterminado suele ser insuficiente. Aumentar este valor evita que el proceso se interrumpa.
- Procesamiento de objetos binarios grandes (BLOB): aplicaciones que almacenan archivos binarios (por ejemplo, PDF, imágenes o archivos ZIP) suelen requerir un valor mayor de
max_allowed_packet. - Inserción de numerosos valores en un único
INSERT: cuando se escriben grandes cantidades de datos en una sola sentencia, como en procesos ETL o cargas masivas, el tamaño de los paquetes aumenta considerablemente. - Aplicaciones web con formularios dinámicos o cargas de archivos: frameworks que generan automáticamente sentencias SQL extensas pueden alcanzar fácilmente el límite si no se ajusta el parámetro.
No obstante, no conviene aumentar max_allowed_packet más de lo necesario, ya que puede repercutir en el consumo de memoria y la estabilidad. En la mayoría de los entornos productivos, un valor entre 16M y 64M es suficiente. Solo en casos especiales, como las migraciones de bases de datos, resulta útil configurar un tamaño más elevado.
Ejemplo de uso de max_allowed_packet
Imagina que gestionas una aplicación web en la que los usuarios pueden subir archivos PDF de hasta 64 MB directamente a la base de datos. Con el valor estándar de 4 MB esto no sería posible. Para garantizar un funcionamiento estable, debes ajustar la configuración.
Abre el archivo /etc/mysql/my.cnf en Linux o my.ini en Windows y añade lo siguiente bajo la sección [mysqld]:
max_allowed_packet=64MtxtReinicia el servidor MariaDB:
sudo systemctl restart mariadbbashComprueba el nuevo valor:
SHOW VARIABLES LIKE 'max_allowed_packet';sqlEl resultado será el siguiente:
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| max_allowed_packet | 67108864 |
+---------------------+----------+sqlDe esta forma, la aplicación podrá procesar paquetes de hasta 64 MB sin problemas. De este modo evitas errores, mejoras la estabilidad y garantizas un funcionamiento fluido incluso en transferencias de gran tamaño.
- Arquitectura de primera gestionada por expertos
- Soluciones flexibles adaptadas a tus necesidades
- Seguridad máxima en centros de datos con certificación ISO

