Brazil's biggest MU Online portal — since 2003
Tutorial Advanced Tutoriais

How to Migrate MU Online Server Between Different Hostings

Complete guide to migrating your MU Online server between VPS or hosting providers, covering SQL Server database backup, configuration files, and a post-migration validation checklist.

VI ViciadosMU Team · Updated on 3 jul 2026 · ⏱ 12 min read

Migrating a MU Online server between different hosting providers is one of the most critical tasks in private server administration. A poorly executed migration can result in character data loss, inventory corruption, and extended downtime. This guide covers the complete process, from backup to final testing.

Prerequisites

Before starting, have the following ready:

  • Administrative access (RDP or SSH) to both the source and destination VPS
  • SQL Server Management Studio (SSMS) installed on both machines
  • Sufficient disk space on the destination (minimum 2x the current data size)
  • A defined maintenance window (notify your players in advance)
Atenção: Never perform backups while the server is running. Close all MuServer processes before any database backup operation to avoid inconsistencies in character and guild data.

Step 1: Shut Down the Server on the Source

On the source server, close processes in the correct order:

  1. Close GameServer.exe first (wait for the window to close completely)
  2. Close DataServer.exe
  3. Close EventServer.exe (if used)
  4. Close ConnectServer.exe last

Confirm no GameServer.exe process remains active via Task Manager or PowerShell:

Get-Process -Name "GameServer","DataServer","ConnectServer","EventServer" -ErrorAction SilentlyContinue

If the list returns empty, proceed to the next step.


Step 2: SQL Server Database Backup

Open SSMS on the source VPS and run a full backup of the required databases. The standard databases for MuServer Season 6 are MuOnline, Mu_Log, and, depending on the version, MuWebzen:

-- Backup of the main database
BACKUP DATABASE [MuOnline]
TO DISK = N'C:\Backup\MuOnline_migration.bak'
WITH FORMAT, INIT, NAME = N'MuOnline-Full Backup', COMPRESSION, STATS = 10;

-- Backup of the log database
BACKUP DATABASE [Mu_Log]
TO DISK = N'C:\Backup\Mu_Log_migration.bak'
WITH FORMAT, INIT, NAME = N'Mu_Log-Full Backup', COMPRESSION, STATS = 10;

-- Backup of the web database (if it exists)
BACKUP DATABASE [MuWebzen]
TO DISK = N'C:\Backup\MuWebzen_migration.bak'
WITH FORMAT, INIT, NAME = N'MuWebzen-Full Backup', COMPRESSION, STATS = 10;
Dica: Use the COMPRESSION option to reduce .bak file sizes by 60-70%. On databases with many characters, this can save hours of transfer time.

Step 3: Backup of Server Files

In addition to the database, copy the entire server directory structure. The essential directories are:

C:\MuServer\
  ├── ConnectServer\
  ├── GameServer\
  │   ├── Data\
  │   │   ├── Events\          (Blood Castle, Devil Square, Chaos Castle, etc.)
  │   │   ├── Maps\
  │   │   └── ServerInfo.cfg
  │   └── Setup.ini
  ├── DataServer\
  └── EventServer\

Use PowerShell to compress everything into a single archive:

Compress-Archive -Path "C:\MuServer\*" -DestinationPath "C:\Backup\MuServer_files.zip" -CompressionLevel Optimal

Transfer the files from C:\Backup\ to the destination VPS via SFTP, FileZilla, or RoboCopy:

robocopy "C:\Backup\" "\\NEW_VPS_IP\C$\Backup\" /E /Z /LOG:C:\robocopy_log.txt

Step 4: Prepare the Destination VPS

On the destination VPS, install SQL Server (same version as the source) and configure the dependencies:

  1. Install SQL Server with mixed authentication (SA enabled)
  2. Install the Visual C++ Redistributable compatible with your MuServer version
  3. Install the .NET Framework required (usually 3.5 or 4.0)
  4. Configure Windows Firewall to allow the necessary ports:
# SQL Server port
netsh advfirewall firewall add rule name="SQL Server" dir=in action=allow protocol=TCP localport=1433

# ConnectServer port (Season 6 default)
netsh advfirewall firewall add rule name="ConnectServer" dir=in action=allow protocol=TCP localport=44405

# GameServer port
netsh advfirewall firewall add rule name="GameServer" dir=in action=allow protocol=TCP localport=55901
Nota: Ports 44405 and 55901 are the most common defaults in Season 6, but verify your ConnectServer.cfg and Setup.ini files to confirm the actual values used by your server.

Step 5: Restore the Database on the Destination

In SSMS on the destination VPS, restore the backups:

-- Restore main database
RESTORE DATABASE [MuOnline]
FROM DISK = N'C:\Backup\MuOnline_migration.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;

-- Restore log database
RESTORE DATABASE [Mu_Log]
FROM DISK = N'C:\Backup\Mu_Log_migration.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;

After restoring, recreate the SQL Server login used by MuServer and associate it with the databases:

-- Create login (replace 'muserver_user' and 'YourStrongPassword123!' with your values)
CREATE LOGIN [muserver_user] WITH PASSWORD = N'YourStrongPassword123!', CHECK_POLICY = OFF;

-- Map to MuOnline database
USE [MuOnline];
CREATE USER [muserver_user] FOR LOGIN [muserver_user];
EXEC sp_addrolemember N'db_owner', N'muserver_user';

-- Map to Mu_Log database
USE [Mu_Log];
CREATE USER [muserver_user] FOR LOGIN [muserver_user];
EXEC sp_addrolemember N'db_owner', N'muserver_user';

Step 6: Update Configuration Files with the New IP

This is the step where most migrations fail. You need to update the IP address in three different places:

6.1 — GameServer/Setup.ini

[Connect]
DBAddr=127.0.0.1        ; SQL Server IP (127.0.0.1 if local)
DBPort=1433
DBID=muserver_user
DBPass=YourStrongPassword123!

[GameServer]
ServerCode=0
ServerPort=55901
ConnectServerIP=127.0.0.1  ; ConnectServer IP (local or new VPS external IP)

6.2 — ConnectServer/ConnectServer.cfg

[CONNECT_SERVER]
Port=44405
MaxUser=10000

[SERVER_LIST]
Server0=127.0.0.1,55901,0,Server1

6.3 — Update the database table

USE [MuOnline];

-- Update server IP in the configuration table
UPDATE T_GameServerInfo
SET ServerIp = '0.0.0.0'   -- Use 0.0.0.0 to accept all interfaces
WHERE ServerCode = 0;

-- Verify the result
SELECT ServerCode, ServerIp, ServerPort FROM T_GameServerInfo;
Dica: Setting ServerIp = '0.0.0.0' in the T_GameServerInfo table prevents IP binding issues when the server changes addresses. The real external IP is managed by the ConnectServer.

Step 7: Extract and Position Server Files

# Extract server files on the destination VPS
Expand-Archive -Path "C:\Backup\MuServer_files.zip" -DestinationPath "C:\MuServer\" -Force

Verify the integrity of the critical directories:

C:\MuServer\GameServer\Data\Events\BloodCastle\    → .bmd and .bmd2 files
C:\MuServer\GameServer\Data\Events\DevilSquare\    → event configuration files
C:\MuServer\GameServer\Data\Maps\                  → map files .att and .obj

Step 8: Start Up and Validate

Start the processes in the correct order on the destination VPS:

  1. DataServer.exe → wait for the "DataServer Started" message
  2. EventServer.exe → wait for confirmed connection
  3. ConnectServer.exe → wait for "ConnectServer Ready"
  4. GameServer.exe → wait for "GameServer Ready" and SQL connection confirmation

Post-Migration Validation Checklist

Run these queries to confirm data integrity:

USE [MuOnline];

-- Check total accounts
SELECT COUNT(*) AS TotalAccounts FROM MEMB_INFO;

-- Check total characters
SELECT COUNT(*) AS TotalCharacters FROM Character;

-- Check active guilds
SELECT COUNT(*) AS TotalGuilds FROM Guild WHERE G_Score > 0;

-- Test a specific character
SELECT Name, cLevel, Money, MapNumber FROM Character WHERE Name = 'CharacterName';
Atenção: If GameServer starts but disconnects in a loop, check the file GameServer/Log/GameServer.log. "DB Connection Failed" errors indicate a problem with credentials in Setup.ini. "ConnectServer Timeout" errors indicate an IP/port problem in ConnectServer.cfg.

Common Troubleshooting

Error: "Cannot open database MuOnline requested by the login" → The SQL user was created but not mapped to the database. Re-run the CREATE USER and sp_addrolemember block from Step 5.

Error: "GameServer cannot connect to ConnectServer" → Check that the IP in Setup.ini under [GameServer] field ConnectServerIP points to the correct address. On local servers use 127.0.0.1.

Characters appear but inventories are empty → This usually indicates the Mu_Log database was not restored or DataServer is using old connection settings. Check DataServer/DataServer.ini.

Events do not start at the correct times → Compare the Windows timezone between the old and new VPS (tzutil /g). Adjust with tzutil /s "E. South America Standard Time" if needed.

Perguntas frequentes

Do I need to shut down the server during migration?

Yes. To guarantee database consistency, GameServer, ConnectServer, and DataServer must be fully stopped before starting the SQL Server backup. Migrating with the server running can result in corrupted data or incomplete transactions.

Which SQL Server version should I install on the new VPS?

Use the same version as the source VPS whenever possible. Cross-version migrations (e.g., 2008 → 2019) are possible but require verifying collation compatibility (Latin1_General_CI_AS is recommended) and restoring with WITH RECOVERY.

Do all IP addresses in configuration files need to be updated?

Yes. You must update ConnectServer/ConnectServer.cfg, GameServer/Data/ServerInfo.cfg, and the T_GameServerInfo table in the MuOnline database. Leaving the old IP in ConnectServer will prevent clients from connecting to the new server.

What should I do if GameServer cannot connect to SQL Server after migration?

Check the file GameServer/Setup.ini — the DBAddr, DBPort, DBID, and DBPass entries must reflect the new SQL Server instance credentials. Also verify that SQL Server Browser is running and that port 1433 is allowed in Windows Firewall.

VI

ViciadosMU Team

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

Keep reading

Related articles