El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Tutoriais

Mantenimiento Regular de Servidor de MU: Backup, Updates y Rutina

Aprende a crear rutinas de backup automatizado, aplicar updates con seguridad y mantener tu servidor MU Online estable y actualizado.

EQ Equipo ViciadosMU · Actualizado el 3 jul 2026 · ⏱ 12 min de lectura

Por Qué el Mantenimiento Regular es Crítico

Un servidor privado de MU Online acumula datos, logs y fragmentación de base de datos a un ritmo acelerado. Sin mantenimiento periódico, enfrentarás lentitud progresiva, corrupción de datos de personajes y fallos en eventos como Blood Castle y Devil Square. Esta guía cubre los procedimientos esenciales que todo administrador necesita ejecutar semanalmente.


Parte 1: Backup de la Base de Datos

Paso 1 — Identificar las bases de datos del servidor

Tu servidor MU utiliza típicamente dos bases de datos principales en SQL Server:

  • MuOnline — datos de personajes, cuentas, ítems, guilds
  • MeShop (o WebShop) — tienda online, cash points, transacciones

Abre SQL Server Management Studio (SSMS) y conéctate al servidor local (localhost o .\SQLEXPRESS).

Paso 2 — Crear backup manual mediante T-SQL

Ejecuta lo siguiente en SSMS (Query → New Query):

-- Backup completo de la base de datos MuOnline
BACKUP DATABASE [MuOnline]
TO DISK = 'C:\Backups\MuOnline_Full_' + 
          CONVERT(VARCHAR, GETDATE(), 112) + '.bak'
WITH FORMAT, COMPRESSION, STATS = 10;

-- Backup completo de la base de datos MeShop
BACKUP DATABASE [MeShop]
TO DISK = 'C:\Backups\MeShop_Full_' + 
          CONVERT(VARCHAR, GETDATE(), 112) + '.bak'
WITH FORMAT, COMPRESSION, STATS = 10;
Dica: Crea la carpeta C:\Backups\ antes de ejecutar el script. El parámetro COMPRESSION reduce el tamaño del archivo hasta en un 70%, lo que es esencial para no llenar el disco rápidamente.

Paso 3 — Automatizar con SQL Server Agent

  1. En SSMS, expande SQL Server Agent → Jobs → New Job
  2. En General, asígnale el nombre: Backup_Diario_MuOnline
  3. En Steps → New Step:
  • Type: Transact-SQL script (T-SQL)
  • Pega el script del Paso 2
  1. En Schedules → New Schedule:
  • Frequency: Daily
  • Time: 03:00:00 (horario de menor tráfico)
  1. Haz clic en OK para guardar el job
Nota: Si estás usando SQL Server Express, SQL Server Agent no está disponible. Usa el Programador de tareas de Windows con un archivo .bat que llame a sqlcmd.

Paso 4 — Script .bat para backup mediante Programador de tareas (Express)

Crea C:\Scripts\backup_mu.bat:

@echo off
SET HORA=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
sqlcmd -S localhost\SQLEXPRESS -Q "BACKUP DATABASE [MuOnline] TO DISK='C:\Backups\MuOnline_%HORA%.bak' WITH FORMAT, COMPRESSION"
sqlcmd -S localhost\SQLEXPRESS -Q "BACKUP DATABASE [MeShop] TO DISK='C:\Backups\MeShop_%HORA%.bak' WITH FORMAT, COMPRESSION"
echo Backup completado el %DATE% %TIME% >> C:\Logs\backup_log.txt

En el Programador de tareas: Crear tarea → Desencadenadores → Diario → 03:00Acciones → Iniciar un programa → apunta a C:\Scripts\backup_mu.bat.


Parte 2: Backup de los Archivos del Servidor

Paso 5 — Estructura de directorios a preservar

Los directorios críticos varían según la versión, pero en Season 6 estándar son:

C:\MuServer\
  ├── GameServer\
  │   ├── Data\          ← configuraciones de monstruos, mapas, drops
  │   ├── GameServer.ini ← archivo de configuración principal
  │   └── *.cfg          ← archivos de configuración de eventos
  ├── ConnectServer\
  │   └── ConnectServer.ini
  ├── DataServer\
  │   └── DataServer.ini
  └── EventServer\
      └── EventServer.cfg

Paso 6 — Script de backup de archivos

Crea C:\Scripts\backup_files.bat:

@echo off
SET DEST=C:\Backups\Files\%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
mkdir "%DEST%"
xcopy "C:\MuServer\GameServer\Data\" "%DEST%\GameServer\Data\" /E /Y /Q
xcopy "C:\MuServer\GameServer\*.ini" "%DEST%\GameServer\" /Y /Q
xcopy "C:\MuServer\GameServer\*.cfg" "%DEST%\GameServer\" /Y /Q
xcopy "C:\MuServer\ConnectServer\" "%DEST%\ConnectServer\" /E /Y /Q
xcopy "C:\MuServer\DataServer\" "%DEST%\DataServer\" /E /Y /Q
echo Backup de archivos: %DATE% %TIME% >> C:\Logs\backup_log.txt
Atenção: Guarda los backups en un disco separado del servidor o en almacenamiento externo. Un backup en el mismo disco no protege contra fallos de hardware.

Parte 3: Limpieza y Optimización de la Base de Datos

Paso 7 — Eliminar logs y personajes inactivos

Los logs acumulados ralentizan las consultas e inflan la base de datos. Ejecuta mensualmente:

-- Eliminar logs de conexión con más de 90 días
DELETE FROM MuOnline.dbo.T_Log_Connectinfo
WHERE ConnectDate < DATEADD(DAY, -90, GETDATE());

-- Eliminar logs de chat con más de 30 días
DELETE FROM MuOnline.dbo.T_Log_Chat
WHERE LogDate < DATEADD(DAY, -30, GETDATE());

-- Eliminar cuentas que nunca iniciaron sesión después de 180 días del registro
DELETE FROM MuOnline.dbo.MEMB_INFO
WHERE mail_chek = '0'
AND memb_joindate < DATEADD(DAY, -180, GETDATE());
Dica: Siempre ejecuta un SELECT COUNT(*) con la misma cláusula WHERE antes del DELETE para confirmar cuántos registros se eliminarán.

Paso 8 — Reconstruir índices fragmentados

-- Verificar la fragmentación de los índices
SELECT 
    OBJECT_NAME(ips.object_id) AS TableName,
    i.name AS IndexName,
    ips.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID('MuOnline'), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.avg_fragmentation_in_percent > 30
ORDER BY ips.avg_fragmentation_in_percent DESC;

-- Reconstruir todos los índices de la base de datos MuOnline
USE MuOnline;
EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD WITH (ONLINE = OFF)';

Paso 9 — Reducir el log de transacciones

USE MuOnline;
-- Truncar el log de transacciones
BACKUP LOG [MuOnline] TO DISK = 'NUL';
DBCC SHRINKFILE (MuOnline_log, 1);

Parte 4: Aplicación de Updates del Servidor

Paso 10 — Procedimiento seguro de actualización de archivos

Nunca reemplaces archivos con el servidor en línea. Sigue esta secuencia:

  1. Anuncia el mantenimiento en tu sitio web/Discord con 30 minutos de anticipación
  2. Guarda el estado actual: ejecuta CHECKPOINT en SSMS
  3. Detén los servicios en el orden correcto:
  • Cierra GameServer.exe
  • Cierra EventServer.exe
  • Cierra DataServer.exe
  • Cierra ConnectServer.exe
  1. Haz backup de los archivos que serán reemplazados (Paso 6)
  2. Aplica los nuevos archivos
  3. Inicia los servicios en orden inverso: ConnectServer → DataServer → EventServer → GameServer

Paso 11 — Aplicar scripts SQL de actualización

Cuando el update incluye cambios en la base de datos (nuevas tablas, columnas o datos):

-- Siempre usa una transacción para poder revertir en caso de error
BEGIN TRANSACTION;

-- Ejemplo: agregar columna para un nuevo sistema
ALTER TABLE MuOnline.dbo.Character
ADD NewSystemPoints INT NOT NULL DEFAULT 0;

-- Ejemplo: insertar nuevos ítems en la tabla base de ítems
INSERT INTO MuOnline.dbo.Item_serial (Item_index, Item_name, Item_level)
VALUES (512, 'Nuevo Item', 0);

-- Si todo salió bien, confirma
COMMIT TRANSACTION;

-- Si hubo un error, revierte con:
-- ROLLBACK TRANSACTION;
Atenção: Los scripts SQL de actualizaciones de terceros deben leerse línea por línea antes de ejecutarlos. Los scripts mal escritos pueden eliminar tablas enteras o corromper datos de personajes.

Paso 12 — Verificar archivos de configuración después de un update

Tras una actualización, revisa los archivos .ini y .cfg para detectar nuevos parámetros que puedan haberse añadido. Compara el archivo nuevo con tu backup:

fc "C:\Backups\GameServer_anterior\GameServer.ini" "C:\MuServer\GameServer\GameServer.ini" > C:\Logs\diff_ini.txt

Parte 5: Rutina de Mantenimiento Semanal

Lista de verificación semanal recomendada

Lunes:
  [x] Revisar logs de error del GameServer (GameServer\Log\)
  [x] Verificar espacio disponible en disco (mínimo 20% libre)
  [x] Confirmar que los backups automáticos se ejecutaron correctamente

Miércoles:
  [x] Verificar conectividad: ConnectServer respondiendo en el puerto 44405
  [x] Revisar la tabla T_Log_Hack en busca de intentos de exploit
  [x] Monitorear el uso de memoria de GameServer.exe

Viernes:
  [x] Backup manual completo antes del fin de semana
  [x] Verificar eventos programados (Blood Castle, Devil Square)
  [x] Probar restauración de backup en entorno separado (mensual)

Paso 13 — Monitorear eventos automáticos

Verifica que los horarios de los eventos sean correctos en GameServer\Data\Events\ o a través de la base de datos:

-- Verificar la configuración de horarios de Blood Castle
SELECT * FROM MuOnline.dbo.EventSchedule
WHERE EventName LIKE 'BloodCastle%'
ORDER BY EventTime;

-- Reiniciar el contador de Blood Castle si se bloquea
UPDATE MuOnline.dbo.EventSchedule
SET EventStatus = 0, CurrentCount = 0
WHERE EventName = 'BloodCastle';
Nota: En algunas versiones de MuServer, los eventos se configuran directamente en GameServer\Data\Events\BloodCastle.ini con los horarios en formato HH:MM. Consulta la documentación de la versión específica de tu servidor.

Solución de Problemas Comunes

GameServer no inicia después de un update: Revisa GameServer\Log\Error.log. La causa más común es una incompatibilidad de versión de DLL. Restaura las DLLs desde tu backup anterior.

Base de datos creciendo rápidamente: Ejecuta EXEC sp_spaceused en cada tabla para identificar la más grande. En general, T_Log_Connectinfo y T_Log_Chat son las responsables; aplica el DELETE del Paso 7.

ConnectServer no acepta conexiones: Verifica que el puerto 44405 esté abierto en el firewall de Windows y en el router. Usa netstat -an | findstr 44405 para confirmar que está escuchando.

Personajes desapareciendo tras reiniciar: Indica que el GameServer se está cerrando sin guardar. Agrega un tiempo de espera antes del cierre: usa el comando de guardado forzado en la consola del GameServer antes de cerrar el proceso.

Perguntas frequentes

¿Con qué frecuencia debo hacer backup de la base de datos?

Lo ideal es tener un backup incremental diario y un backup completo semanal. Para servidores activos, considera ejecutar backups cada 6 horas usando SQL Server Agent Jobs o un script .bat programado en el Programador de tareas de Windows.

¿Puedo aplicar updates de archivos con el servidor en línea?

Nunca reemplaces archivos del GameServer/ con el servidor en funcionamiento. Siempre detén todos los servicios (GameServer, ConnectServer, DataServer, EventServer) antes de reemplazar cualquier ejecutable o archivo .ini de configuración.

¿Qué hacer si la base de datos se corrompe después de un update SQL?

Ejecuta DBCC CHECKDB('MuOnline') en SQL Server Management Studio para verificar la integridad. Si hay errores, restaura el backup más reciente y aplica el script SQL nuevamente línea por línea para identificar el comando problemático.

¿Cómo verificar si el GameServer está consumiendo demasiada memoria?

En el Administrador de tareas (Ctrl+Shift+Esc), monitorea el proceso GameServer.exe. Un consumo superior a 2 GB en servidores Season 6 con menos de 200 jugadores indica un memory leak. Programa un reinicio automático mediante el Programador de tareas a las 04:00 como medida preventiva.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados