BysMax

Contenido del curso

Volver al curso

Configuración de MySQL en Traccar 6.14 y copias de seguridad

Guía paso a paso para configurar una base de datos MySQL/MariaDB en Traccar 6.14, configurar copias de seguridad automáticas y optimizar la base de datos.

Emmanuel Díaz Leal Hernández

May 25, 2024
Intermedio

Para proyectos con más de un par de dispositivos en Traccar 6.14, es altamente recomendable migrar de la base de datos H2 por defecto a un motor de bases de datos robusto como MySQL o MariaDB. Esta última versión incluye la optimización de batching de base de datos para escrituras eficientes, lo que reduce de manera drástica el uso de disco y CPU cuando hay múltiples reportes simultáneos.


1. Configuración de MySQL en Traccar

Un problema común al configurar la base de datos es utilizar el host localhost en la cadena de conexión JDBC, lo cual puede dar fallos de resolución en ciertos entornos (especialmente bajo Docker o configuraciones locales restrictivas). Cambiarlo por el bucle de retorno numérico 127.0.0.1 soluciona este problema.

Edita tu archivo de configuración traccar.xml dentro del bloque <properties> de la siguiente manera:

<entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://127.0.0.1:3306/traccar?serverTimezone=UTC&amp;useSSL=false&amp;allowMultiQueries=true&amp;autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF-8&amp;sessionVariables=sql_mode=''</entry>
<entry key='database.user'>traccar1</entry>
<entry key='database.password'>TU_CONTRASEÑA_AQUÍ</entry>

(Asegúrate de que la dirección URL JDBC tenga una sola barra antes del nombre de la base de datos /traccar y no doble barra //).


2. Comandos SQL para crear la Base de Datos y Usuario

Desde tu consola de MySQL o phpMyAdmin, puedes ejecutar la creación del esquema y usuario de la siguiente forma:

CREATE DATABASE traccar;
CREATE USER 'traccar1'@'127.0.0.1' IDENTIFIED BY 'TU_CONTRASEÑA_AQUÍ';
GRANT ALL PRIVILEGES ON traccar.* TO 'traccar1'@'127.0.0.1';
FLUSH PRIVILEGES;

3. Borrado automático de historial viejo

Para evitar que tu disco se llene por exceso de logs de posicionamiento históricos, añade la siguiente directiva en traccar.xml para limpiar registros automáticamente cada 365 días:

<entry key='database.positionsHistoryDays'>365</entry>

4. Copias de seguridad automáticas (Script en Bash para Synology/Linux)

A continuación, te compartimos un script en bash para automatizar las copias de seguridad de todas tus bases de datos mediante mysqldump. Puedes configurarlo para ejecutarse en el Programador de tareas de tu NAS Synology o el servicio cron de Linux.

#!/bin/sh
# Basado en la guía de lowendguide para mysqldump

## VARIABLES PERSONALIZADAS
MYSQL_USER="root"
MYSQL_PASSWORD="tu_password_root"
MYSQL_BACKUP_DIR="/volume1/homes/copiador/MYSQLDUMP"

if [ ! -d $MYSQL_BACKUP_DIR ]; then
    mkdir -p $MYSQL_BACKUP_DIR
fi

chmod -R 700 $MYSQL_BACKUP_DIR

case $1 in
    run)
        BASES_LIST="$(/usr/local/mariadb10/bin/mysql --user=$MYSQL_USER -p$MYSQL_PASSWORD -e 'show databases' | tr -d '| ' | grep -v 'Database' | grep -v 'information_schema' | grep -v 'performance_schema')"
        echo "Respaldando bases de datos MySQL en $MYSQL_BACKUP_DIR"
        for db in $BASES_LIST; do 
            /usr/local/mariadb10/bin/mysqldump --user=$MYSQL_USER -p$MYSQL_PASSWORD --verbose $db | gzip > $MYSQL_BACKUP_DIR/$db.sql.gz
        done
        echo "Respaldadas bases: $(echo $BASES_LIST | tr "\n" "," | sed 's/,$//'; echo '')";;
    clean)
        echo "Borrando backups de bases de datos en $MYSQL_BACKUP_DIR"
        rm -f $MYSQL_BACKUP_DIR/*.sql.gz 2>&1;;
    *)
        echo "Opciones de ejecución: $0 {run|clean}"
esac

Para programar que se ejecute de forma automática, crea una tarea programada con la opción run (ejemplo: /volumen1/scripts/backup.sh run).

Comentarios (0)