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.
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)
Step 1: Shut Down the Server on the Source
On the source server, close processes in the correct order:
- Close GameServer.exe first (wait for the window to close completely)
- Close DataServer.exe
- Close EventServer.exe (if used)
- 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;
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:
- Install SQL Server with mixed authentication (SA enabled)
- Install the Visual C++ Redistributable compatible with your MuServer version
- Install the .NET Framework required (usually 3.5 or 4.0)
- 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
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;
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:
- DataServer.exe → wait for the "DataServer Started" message
- EventServer.exe → wait for confirmed connection
- ConnectServer.exe → wait for "ConnectServer Ready"
- 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';
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.