How to Restore the Database and Move Your MU Online Server
Learn how to safely restore your MU Online SQL database and migrate your entire server to a new machine without data loss or extended downtime.
Overview and When to Use This Guide
Moving a MU Online private server to a new machine — or recovering from a failed drive — involves two closely related operations: restoring a SQL Server database backup and reconfiguring all server components to point at the correct data source on the new host. Both tasks are straightforward when approached in order, but skipping steps or rushing the sequence is the most common cause of corrupted characters, missing items, and authentication failures after a migration.
This guide covers the full workflow from pre-migration preparation through post-migration validation. It assumes you are running a Season 6 or later server package on Windows Server with Microsoft SQL Server 2012 or newer.
Step 1 — Preparing for the Migration
Before touching any files or databases, gather the following information and assets from the source machine.
Checklist for the source machine:
- Full
.bakbackup file of the MuOnline database (see below for how to create one) - The entire server directory tree (GameServer, ConnectServer, JoinServer, DataServer folders)
- Any custom configuration files:
GameServer.ini,ServerInfo.xml,MuConfig.xml - Firewall rules and opened ports list (typically 55901, 55902, 44405, 55980)
- The SQL Server instance name,
salogin credentials, and any custom SQL logins used by server components - Windows Firewall and antivirus exclusion lists so you can replicate them on the new machine
Creating a full database backup on the source machine:
Open SQL Server Management Studio (SSMS), right-click the MuOnline database, choose Tasks → Back Up. Set the backup type to Full and choose a destination path. Click OK and wait for the operation to complete.
Alternatively, run the following query in SSMS:
-- Full backup of the MuOnline database
-- Replace C:\Backup\ with your actual destination path
BACKUP DATABASE [MuOnline]
TO DISK = N'C:\Backup\MuOnline_Full.bak'
WITH
FORMAT, -- → overwrites any existing backup set in the file
INIT, -- → starts a fresh media set
NAME = N'MuOnline-Full Database Backup',
COMPRESSION, -- → reduces file size significantly
STATS = 10; -- → prints progress every 10 percent
-- Verify the backup is readable before transferring
RESTORE VERIFYONLY
FROM DISK = N'C:\Backup\MuOnline_Full.bak';
Copy the verified .bak file and the entire server directory to an external drive or a shared network location accessible from the new machine.
Step 2 — Installing SQL Server on the New Machine
The new machine needs a compatible SQL Server instance before you can restore the database. Install SQL Server using the same edition or a newer one than the source machine. During setup, pay attention to these settings:
- Instance name: Use the same instance name as the source if your configuration files reference it by name (e.g.,
.\SQLEXPRESSor.\MSSQLSERVER). If you change it, you will need to update every config file afterward. - Authentication mode: Select Mixed Mode so that SQL Server authentication (
salogin) works alongside Windows authentication. - sa password: Set a strong password and record it securely. Every server component will need it.
- TCP/IP protocol: Open SQL Server Configuration Manager after installation, navigate to SQL Server Network Configuration → Protocols for [instance], and enable TCP/IP. Set the port to 1433 under IP Addresses → IPAll.
Restart the SQL Server service after enabling TCP/IP.
> [!WARNING] > Do not skip enabling TCP/IP. MU Online server components connect to SQL Server over the network stack even when running on the same machine. Without TCP/IP enabled, connection attempts from GameServer and related processes will fail silently or produce misleading timeout errors.
Step 3 — Restoring the Database Backup
Transfer the .bak file to a local path on the new machine (e.g., C:\Backup\MuOnline_Full.bak). Open SSMS, connect to the new instance, and run the restore:
-- Restore the MuOnline database on the new machine
-- Adjust physical file paths to match your new machine's SQL Server data directory
RESTORE DATABASE [MuOnline]
FROM DISK = N'C:\Backup\MuOnline_Full.bak'
WITH
MOVE N'MuOnline' TO N'C:\MSSQL\Data\MuOnline.mdf', -- → primary data file
MOVE N'MuOnline_log' TO N'C:\MSSQL\Data\MuOnline_log.ldf', -- → transaction log
REPLACE, -- → overwrites an existing database with the same name if present
STATS = 5; -- → progress every 5 percent
If you are unsure of the logical file names stored inside the backup, run this first:
RESTORE FILELISTONLY
FROM DISK = N'C:\Backup\MuOnline_Full.bak';
-- → returns columns: LogicalName, PhysicalName, Type (D=data, L=log)
Use the LogicalName values from that output in the MOVE clauses above.
After the restore completes, verify row counts in critical tables to confirm data integrity:
USE MuOnline;
SELECT 'AccountCharacter' AS TableName, COUNT(*) AS Rows FROM AccountCharacter
UNION ALL
SELECT 'Character', COUNT(*) FROM Character
UNION ALL
SELECT 'warehouse', COUNT(*) FROM warehouse;
Step 4 — Recreating SQL Logins and Permissions
Database users from the backup are restored, but the server-level SQL logins that map to them are not — they live in the master database and are not included in a single-database backup. You must recreate them manually.
-- Create the login used by GameServer (adjust name and password)
CREATE LOGIN [muonline_user] WITH PASSWORD = 'YourStrongPassword123!';
-- Map it to the database user restored from the backup
USE MuOnline;
ALTER USER [muonline_user] WITH LOGIN = [muonline_user];
-- Confirm the user has the correct role
EXEC sp_addrolemember N'db_owner', N'muonline_user';
> [!TIP] > If you use the sa account directly in your configuration files (common in older server packages), you only need to ensure the sa login is enabled and the password matches what you recorded during SQL Server setup. Check this under Security → Logins → sa → Properties → Status in SSMS.
Step 5 — Updating Server Configuration Files
Every server component stores its SQL connection details in a configuration file. Open each file in a text editor and replace the old machine's IP address or instance name with the new one.
Common files and the settings to change:
GameServer\GameServer.ini
→ DB_IP = 127.0.0.1 (use 127.0.0.1 if SQL runs on same machine)
→ DB_Port = 1433
→ DB_ID = muonline_user
→ DB_PW = YourStrongPassword123!
ConnectServer\ServerInfo.xml
→ <ServerIP>NEW_MACHINE_IP</ServerIP>
→ <GameServerPort>55901</GameServerPort>
JoinServer\JoinServer.ini
→ ServerIP = NEW_MACHINE_IP
→ ServerPort= 55906
Search every .ini, .xml, and .cfg file in the server directory for the old IP address using a recursive find:
findstr /s /i "OLD_IP_ADDRESS" E:\Server\*.*
Replace every occurrence before starting any service.
Step 6 — Validating the Migration
Start services in the correct order and watch each log file before proceeding to the next:
- DataServer — wait for "DB Connection OK" in its log
- JoinServer — wait for "Listening on port 55906"
- ConnectServer — wait for "Ready"
- GameServer — wait for all maps to load ("MapServerManager: OK")
Connect a test client, log in with a known account, verify character positions, inventory, and warehouse contents. Check the event log for SQL timeout warnings during the first few minutes of operation.
SSMS → Management → SQL Server Logs) for the first 24 hours. Any orphaned session or login mismatch errors will appear here and are much easier to diagnose while the migration is fresh.Once the new server is confirmed stable, update DNS records or distribute the new IP address to players, and decommission the old machine only after at least 48 hours of clean operation.
Perguntas frequentes
Can I restore a backup from a different SQL Server version?
In most cases yes, but only moving forward — you can restore a backup made on SQL Server 2008 into SQL Server 2019, but not the other way around. If you need to move to an older version, use the script-based export method (Tasks → Generate Scripts) instead of a direct .bak restore.
What should I do if the restore fails with a 'logical file name' error?
This error means the logical names inside the .bak file do not match what SQL Server expects. Open the restore dialog, go to the Files tab, and manually map each logical name to a physical path on the new machine. Alternatively, run RESTORE FILELISTONLY FROM DISK = 'C:\\backup.bak' to see the exact names stored inside the file.
Do I need to stop the MU Online services before making a backup?
For a clean, consistent backup it is strongly recommended to stop all GameServer, ConnectServer, and JoinServer processes first. A hot backup taken while the server is running may capture transactions in an inconsistent state, leading to orphaned records or corrupted account data after a restore.
How do I update the connection strings after moving to a new machine?
Every component that connects to SQL Server — GameServer, WebServer, event scripts — reads its connection string from its own configuration file (typically GameServer.ini, MuConfig.xml, or similar). Search each file for the old server IP or instance name and replace it with the new one. Restart each service individually and check its log file before starting the next.