Cómo Migrar Servidor de MU Online entre Diferentes Hostings
Guía completa para migrar tu servidor MU Online entre VPS o proveedores de hosting, incluyendo backup de SQL Server, archivos de configuración y checklist de validación post-migración.
Migrar un servidor de MU Online entre diferentes proveedores de hosting es una de las tareas más críticas en la administración de servidores privados. Una migración mal ejecutada puede resultar en pérdida de datos de personajes, corrupción de inventarios y tiempo de inactividad prolongado. Esta guía cubre el proceso completo, desde el backup hasta la prueba final.
Requisitos Previos
Antes de comenzar, ten lo siguiente disponible:
- Acceso administrativo (RDP o SSH) tanto al VPS de origen como al de destino
- SQL Server Management Studio (SSMS) instalado en ambas máquinas
- Espacio en disco suficiente en el destino (mínimo 2x el tamaño actual de los datos)
- Una ventana de mantenimiento definida (notifica a tus jugadores con anticipación)
Paso 1: Cerrar el Servidor en el Origen
En el servidor de origen, cierra los procesos en el orden correcto:
- Cierra GameServer.exe primero (espera a que la ventana se cierre completamente)
- Cierra DataServer.exe
- Cierra EventServer.exe (si se utiliza)
- Cierra ConnectServer.exe al final
Confirma que ningún proceso GameServer.exe permanezca activo mediante el Administrador de Tareas o PowerShell:
Get-Process -Name "GameServer","DataServer","ConnectServer","EventServer" -ErrorAction SilentlyContinue
Si la lista retorna vacía, continúa con el siguiente paso.
Paso 2: Backup de la Base de Datos SQL Server
Abre SSMS en el VPS de origen y ejecuta el backup completo de las bases de datos necesarias. Las bases de datos estándar de MuServer Season 6 son MuOnline, Mu_Log y, dependiendo de la versión, MuWebzen:
-- Backup de la base de datos principal
BACKUP DATABASE [MuOnline]
TO DISK = N'C:\Backup\MuOnline_migracion.bak'
WITH FORMAT, INIT, NAME = N'MuOnline-Full Backup', COMPRESSION, STATS = 10;
-- Backup de la base de datos de logs
BACKUP DATABASE [Mu_Log]
TO DISK = N'C:\Backup\Mu_Log_migracion.bak'
WITH FORMAT, INIT, NAME = N'Mu_Log-Full Backup', COMPRESSION, STATS = 10;
-- Backup de la base de datos web (si existe)
BACKUP DATABASE [MuWebzen]
TO DISK = N'C:\Backup\MuWebzen_migracion.bak'
WITH FORMAT, INIT, NAME = N'MuWebzen-Full Backup', COMPRESSION, STATS = 10;
COMPRESSION para reducir el tamaño de los archivos .bak entre un 60-70%. En bases de datos con muchos personajes, esto puede ahorrar horas de tiempo de transferencia.Paso 3: Backup de los Archivos del Servidor
Además de la base de datos, copia toda la estructura de directorios del servidor. Los directorios esenciales son:
C:\MuServer\
├── ConnectServer\
├── GameServer\
│ ├── Data\
│ │ ├── Events\ (Blood Castle, Devil Square, Chaos Castle, etc.)
│ │ ├── Maps\
│ │ └── ServerInfo.cfg
│ └── Setup.ini
├── DataServer\
└── EventServer\
Usa PowerShell para comprimir todo en un único archivo:
Compress-Archive -Path "C:\MuServer\*" -DestinationPath "C:\Backup\MuServer_archivos.zip" -CompressionLevel Optimal
Transfiere los archivos de C:\Backup\ al VPS de destino mediante SFTP, FileZilla o RoboCopy:
robocopy "C:\Backup\" "\\IP_NUEVO_VPS\C$\Backup\" /E /Z /LOG:C:\robocopy_log.txt
Paso 4: Preparar el VPS de Destino
En el VPS de destino, instala SQL Server (misma versión que el origen) y configura las dependencias:
- Instala SQL Server con autenticación mixta (SA habilitado)
- Instala el Visual C++ Redistributable compatible con tu versión de MuServer
- Instala el .NET Framework necesario (generalmente 3.5 o 4.0)
- Configura el Firewall de Windows para permitir los puertos necesarios:
# Puerto de SQL Server
netsh advfirewall firewall add rule name="SQL Server" dir=in action=allow protocol=TCP localport=1433
# Puerto del ConnectServer (predeterminado Season 6)
netsh advfirewall firewall add rule name="ConnectServer" dir=in action=allow protocol=TCP localport=44405
# Puerto del GameServer
netsh advfirewall firewall add rule name="GameServer" dir=in action=allow protocol=TCP localport=55901
ConnectServer.cfg y Setup.ini para confirmar los valores reales de tu servidor.Paso 5: Restaurar la Base de Datos en el Destino
En SSMS del VPS de destino, restaura los backups:
-- Restaurar base de datos principal
RESTORE DATABASE [MuOnline]
FROM DISK = N'C:\Backup\MuOnline_migracion.bak'
WITH MOVE N'MuOnline' TO N'C:\SQLData\MuOnline.mdf',
MOVE N'MuOnline_log' TO N'C:\SQLData\MuOnline_log.ldf',
RECOVERY, REPLACE, STATS = 10;
-- Restaurar base de datos de logs
RESTORE DATABASE [Mu_Log]
FROM DISK = N'C:\Backup\Mu_Log_migracion.bak'
WITH MOVE N'Mu_Log' TO N'C:\SQLData\Mu_Log.mdf',
MOVE N'Mu_Log_log' TO N'C:\SQLData\Mu_Log_log.ldf',
RECOVERY, REPLACE, STATS = 10;
Después de restaurar, vuelve a crear el login de SQL Server utilizado por MuServer y asócialo a las bases de datos:
-- Crear login (reemplaza 'muserver_user' y 'TuContrasenaFuerte123!' con tus valores)
CREATE LOGIN [muserver_user] WITH PASSWORD = N'TuContrasenaFuerte123!', CHECK_POLICY = OFF;
-- Mapear a la base de datos MuOnline
USE [MuOnline];
CREATE USER [muserver_user] FOR LOGIN [muserver_user];
EXEC sp_addrolemember N'db_owner', N'muserver_user';
-- Mapear a la base de datos Mu_Log
USE [Mu_Log];
CREATE USER [muserver_user] FOR LOGIN [muserver_user];
EXEC sp_addrolemember N'db_owner', N'muserver_user';
Paso 6: Actualizar Configuraciones con el Nuevo IP
Este es el paso donde falla la mayoría de las migraciones. Debes actualizar el IP en tres lugares distintos:
6.1 — GameServer/Setup.ini
[Connect]
DBAddr=127.0.0.1 ; IP del SQL Server (127.0.0.1 si es local)
DBPort=1433
DBID=muserver_user
DBPass=TuContrasenaFuerte123!
[GameServer]
ServerCode=0
ServerPort=55901
ConnectServerIP=127.0.0.1 ; IP del ConnectServer (local o IP externo del nuevo VPS)
6.2 — ConnectServer/ConnectServer.cfg
[CONNECT_SERVER]
Port=44405
MaxUser=10000
[SERVER_LIST]
Server0=127.0.0.1,55901,0,Servidor1
6.3 — Actualizar tabla en la base de datos
USE [MuOnline];
-- Actualizar IP del servidor en la tabla de configuración
UPDATE T_GameServerInfo
SET ServerIp = '0.0.0.0' -- Usa 0.0.0.0 para aceptar todas las interfaces
WHERE ServerCode = 0;
-- Verificar el resultado
SELECT ServerCode, ServerIp, ServerPort FROM T_GameServerInfo;
ServerIp = '0.0.0.0' en la tabla T_GameServerInfo evita problemas de binding de IP cuando el servidor cambia de dirección. El IP externo real es administrado por el ConnectServer.Paso 7: Extraer y Posicionar Archivos del Servidor
# Extraer archivos del servidor en el VPS de destino
Expand-Archive -Path "C:\Backup\MuServer_archivos.zip" -DestinationPath "C:\MuServer\" -Force
Verifica la integridad de los directorios críticos:
C:\MuServer\GameServer\Data\Events\BloodCastle\ → archivos .bmd y .bmd2
C:\MuServer\GameServer\Data\Events\DevilSquare\ → archivos de configuración del evento
C:\MuServer\GameServer\Data\Maps\ → archivos de mapa .att y .obj
Paso 8: Inicio y Validación
Inicia los procesos en el orden correcto en el VPS de destino:
- DataServer.exe → espera el mensaje "DataServer Started"
- EventServer.exe → espera la confirmación de conexión
- ConnectServer.exe → espera "ConnectServer Ready"
- GameServer.exe → espera "GameServer Ready" y confirmación de conexión a SQL
Checklist de Validación Post-Migración
Ejecuta estas consultas para confirmar la integridad de los datos:
USE [MuOnline];
-- Verificar total de cuentas
SELECT COUNT(*) AS TotalCuentas FROM MEMB_INFO;
-- Verificar total de personajes
SELECT COUNT(*) AS TotalPersonajes FROM Character;
-- Verificar guilds activas
SELECT COUNT(*) AS TotalGuilds FROM Guild WHERE G_Score > 0;
-- Probar un personaje específico
SELECT Name, cLevel, Money, MapNumber FROM Character WHERE Name = 'NombreDelPersonaje';
GameServer/Log/GameServer.log. Los errores "DB Connection Failed" indican un problema con las credenciales en Setup.ini. Los errores "ConnectServer Timeout" indican un problema de IP/puerto en ConnectServer.cfg.Solución de Problemas Comunes
Error: "Cannot open database MuOnline requested by the login" → El usuario SQL fue creado pero no mapeado a la base de datos. Vuelve a ejecutar el bloque CREATE USER y sp_addrolemember del Paso 5.
Error: "GameServer cannot connect to ConnectServer" → Verifica que el IP en Setup.ini sección [GameServer] campo ConnectServerIP apunte a la dirección correcta. En servidores locales usa 127.0.0.1.
Los personajes aparecen pero los inventarios están vacíos → Generalmente indica que la base de datos Mu_Log no fue restaurada o que DataServer usa configuraciones de conexión antiguas. Revisa DataServer/DataServer.ini.
Los eventos no inician en los horarios correctos → Compara la zona horaria de Windows entre el VPS antiguo y el nuevo (tzutil /g). Ajusta con tzutil /s "SA Eastern Standard Time" si es necesario.
Perguntas frequentes
¿Necesito apagar el servidor durante la migración?
Sí. Para garantizar la consistencia de la base de datos, GameServer, ConnectServer y DataServer deben estar completamente cerrados antes de iniciar el backup de SQL Server. Migrar con el servidor activo puede resultar en datos corruptos o transacciones incompletas.
¿Qué versión de SQL Server debo instalar en la VPS nueva?
Usa la misma versión que la VPS de origen siempre que sea posible. Las migraciones entre versiones (ej: 2008 → 2019) son posibles, pero requieren verificar la compatibilidad de collation (se recomienda Latin1_General_CI_AS) y restaurar con WITH RECOVERY.
¿Debo actualizar todos los IPs en los archivos de configuración?
Sí. Debes actualizar ConnectServer/ConnectServer.cfg, GameServer/Data/ServerInfo.cfg y la tabla T_GameServerInfo en la base de datos MuOnline. El IP antiguo en ConnectServer impedirá que los clientes se conecten al nuevo servidor.
¿Qué hacer si GameServer no puede conectar a SQL Server después de la migración?
Verifica el archivo GameServer/Setup.ini — las entradas DBAddr, DBPort, DBID y DBPass deben reflejar las credenciales de la nueva instancia de SQL Server. También verifica que SQL Server Browser esté activo y que el puerto 1433 esté permitido en el firewall de Windows.