O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Tutoriais

Como Atualizar a Versão do MuServer sem Perder Dados

Guia completo para migrar seu MuServer para uma versão mais recente preservando contas, personagens e itens dos jogadores com segurança e sem downtime prolongado.

EQ Equipe ViciadosMU · Atualizado em 3 jul 2026 · ⏱ 12 min de leitura

Atualizar o MuServer de uma versão para outra é uma das operações mais arriscadas na administração de um servidor privado de MU Online. Feita sem planejamento, resulta em perda permanente de dados de jogadores. Feita corretamente, é um processo controlado que leva entre 2 e 4 horas de downtime planejado.

Este guia cobre a migração entre versões compatíveis — por exemplo, de Season 6 Episode 1 para Season 6 Episode 3, ou de Season 9 para Season 12. Migrações entre seasons muito distantes (ex.: S6 para S13) exigem passos adicionais não cobertos aqui e devem ser feitas em etapas intermediárias.

Antes de Começar: Avaliando a Compatibilidade

Nem toda atualização de MuServer é direta. As tabelas do banco de dados mudam entre versões, e arquivos de configuração ganham novas chaves obrigatórias.

Identificando sua versão atual

Abra o arquivo GameServer/GameServer.ini e localize:

[Version]
ServerVersion = 1.04.0
GameVersion   = 0.99.60T

Compare com a versão alvo. Se o GameVersion mudar de forma significativa, haverá mudanças no schema do banco que precisam ser aplicadas antes de iniciar os novos binários.

Identificando os scripts de migração disponíveis

Todo pacote de MuServer inclui uma pasta DBUpdate/ ou SQL/ com scripts de migração numerados. Antes de prosseguir, liste esses scripts:

DBUpdate/
  001_AddColumnResetCount.sql
  002_CreateTableEventRanking.sql
  003_AlterTableCharacter.sql
  004_InsertDefaultEventSchedule.sql

Se o pacote não incluir scripts SQL, você precisará comparar os schemas manualmente no SQL Server Management Studio (SSMS) — compare sys.columns do banco atual versus um banco criado do zero com a nova versão.

Passo 1: Backup Completo — Sem Exceções

Execute no SSMS antes de qualquer outra ação:

-- Backup completo do banco principal com timestamp automático
DECLARE @BackupPath NVARCHAR(500)
SET @BackupPath = 'C:\Backups\MuOnline_pre_update_' +
    REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), ':', '-'), ' ', '_') + '.bak'

BACKUP DATABASE MuOnline
TO DISK = @BackupPath
WITH FORMAT, INIT, COMPRESSION,
     NAME = 'MuOnline Full Backup Pre-Update',
     STATS = 10;

PRINT 'Backup salvo em: ' + @BackupPath

Após o backup, valide que o arquivo não está corrompido:

RESTORE VERIFYONLY FROM DISK = 'C:\Backups\MuOnline_pre_update_2026-07-03_22-00-00.bak';
-- Resultado esperado: "The backup set on file 1 is valid."
Atenção: Se RESTORE VERIFYONLY retornar erro, o backup está corrompido. Não prossiga — investigue o problema de espaço em disco ou permissões antes de continuar.

Além do banco, faça backup dos arquivos de configuração:

xcopy /E /I /Y "C:\MuServer\GameServer\Data" "C:\Backups\GameServer_Data_backup"
xcopy /E /I /Y "C:\MuServer\ConnectServer" "C:\Backups\ConnectServer_backup"
xcopy /E /I /Y "C:\MuServer\DataServer" "C:\Backups\DataServer_backup"
xcopy /E /I /Y "C:\MuServer\EventServer" "C:\Backups\EventServer_backup"

Passo 2: Encerrar Todos os Serviços na Ordem Correta

Desligue na sequência abaixo para evitar escrita de dados corrompidos:

  1. Feche o painel de administração web (se houver)
  2. Encerre GameServer.exe — aguarde o processo sumir do Gerenciador de Tarefas
  3. Encerre EventServer.exe
  4. Encerre DataServer.exe
  5. Encerre ConnectServer.exe
Nota: Se o servidor usa serviços do Windows registrados, pare-os via: net stop MuGameServer, net stop MuDataServer, net stop MuConnectServer. Ajuste os nomes conforme seu setup. Verifique em services.msc que todos estão com status "Parado" antes de continuar.

Passo 3: Criar Banco de Teste e Validar Scripts SQL

Nunca aplique scripts de migração diretamente no banco de produção sem antes testá-los. Restaure uma cópia de teste:

RESTORE DATABASE MuOnline_Teste
FROM DISK = 'C:\Backups\MuOnline_pre_update_2026-07-03_22-00-00.bak'
WITH MOVE 'MuOnline'     TO 'C:\SQLData\MuOnline_Teste.mdf',
     MOVE 'MuOnline_log' TO 'C:\SQLData\MuOnline_Teste_log.ldf',
     REPLACE, STATS = 10;

Com o banco de teste pronto, execute os scripts de migração em ordem numérica. Exemplo de script típico para adicionar coluna nova:

USE MuOnline_Teste;
GO

-- 001_AddColumnResetCount.sql
IF NOT EXISTS (
    SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'Character' AND COLUMN_NAME = 'ResetCount'
)
BEGIN
    ALTER TABLE dbo.Character ADD ResetCount SMALLINT NOT NULL DEFAULT 0;
    PRINT 'OK: Coluna ResetCount adicionada.';
END
ELSE
    PRINT 'SKIP: Coluna ResetCount ja existe.';
GO
Dica: Use sempre IF NOT EXISTS antes de ALTER TABLE ADD COLUMN e IF OBJECT_ID IS NULL antes de CREATE TABLE. Scripts idempotentes podem ser reexecutados sem quebrar o banco, o que é essencial para reexecuções após erros parciais.

Exemplo de script para criar nova tabela de ranking de eventos:

-- 002_CreateTableEventRanking.sql
USE MuOnline_Teste;
GO

IF OBJECT_ID('dbo.EventRanking', 'U') IS NULL
BEGIN
    CREATE TABLE dbo.EventRanking (
        RankID      INT IDENTITY(1,1) PRIMARY KEY,
        CharName    VARCHAR(10)  NOT NULL,
        EventType   TINYINT      NOT NULL,  -- 1=BloodCastle, 2=DevilSquare, 3=ChaosC
        Score       INT          NOT NULL DEFAULT 0,
        RankDate    DATETIME     NOT NULL DEFAULT GETDATE(),
        ServerCode  TINYINT      NOT NULL DEFAULT 0
    );
    PRINT 'OK: Tabela EventRanking criada.';
END
ELSE
    PRINT 'SKIP: Tabela EventRanking ja existe.';
GO

Após executar cada script, verifique a aba "Messages" no SSMS. Qualquer linha com Msg seguido de número de erro deve ser investigada antes de prosseguir.

Passo 4: Substituir os Binários do Servidor

Com os scripts validados no banco de teste, substitua os executáveis. A estrutura alvo:

C:\MuServer\
  GameServer\
    GameServer.exe        <- substitua pelo novo
    GameServer.ini        <- MERGE (compare e transfira seus valores)
    Data\
      Monster\            <- substitua todo o conteúdo pelo da nova versão
      Events\             <- substitua todo o conteúdo pelo da nova versão
      Maps\               <- substitua todo o conteúdo pelo da nova versão
  ConnectServer\
    ConnectServer.exe     <- substitua pelo novo
    ConnectServer.ini     <- MERGE (verifique chaves novas)
  DataServer\
    DataServer.exe        <- substitua pelo novo
    DataServer.ini        <- MERGE (confirme string de conexão)
  EventServer\
    EventServer.exe       <- substitua pelo novo
Atenção: Nunca substitua os arquivos .ini de configuração sem comparar as diferenças. Use o WinMerge (gratuito) para fazer diff entre o .ini antigo (backup) e o novo: copie as chaves novas para o seu arquivo existente mantendo seus valores customizados de IP, porta, nome do servidor e taxas.

Exemplo de diff típico no GameServer.ini ao migrar para Season 9+:

; Chave NOVA na versão de destino — adicione ao seu GameServer.ini
[RefinementSystem]
Enable = 1
MaxRefinementLevel = 15
RefinementFailRate = 30

; Chave EXISTENTE — mantenha o seu valor atual
[GameServerInfo]
ServerCode = 0
MaxUser = 300
ServerName = Seu Servidor MU

Passo 5: Ajustar Compatibilidade do Banco (se necessário)

Se a nova versão do MuServer exige um nível de compatibilidade específico do SQL Server:

-- Verificar nível atual
SELECT name, compatibility_level FROM sys.databases WHERE name = 'MuOnline';

-- SQL Server 2008 / Season 6 (nivel 100)
ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 100;

-- SQL Server 2012 / Seasons mais novos (nivel 110)
-- ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 110;

-- SQL Server 2017/2019 (nivel 140)
-- ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 140;

Passo 6: Aplicar Migração no Banco de Produção

Após validação completa no banco de teste, aplique os mesmos scripts no banco real:

USE MuOnline;
GO
-- Execute aqui os mesmos scripts em ordem:
-- 001_AddColumnResetCount.sql
-- 002_CreateTableEventRanking.sql
-- 003_AlterTableCharacter.sql
-- (etc.)

Passo 7: Iniciar Serviços e Validar

Inicie na ordem correta:

  1. ConnectServer.exe
  2. DataServer.exe
  3. EventServer.exe
  4. GameServer.exe

Monitore os logs imediatamente:

GameServer\Log\GameServer_YYYYMMDD.log
DataServer\Log\DataServer_YYYYMMDD.log

Erros mais comuns e suas causas:

[ERROR] Table 'Character' column 'ResetCount' not found
→ Script 001 não foi aplicado no banco de produção. Execute no banco MuOnline.

[ERROR] Could not connect to DataServer on 127.0.0.1:55900
→ DataServer não iniciou ou porta mudou. Confira DataServer.ini e reinicie.

[ERROR] Map file not found: Data/Maps/Devias.att
→ Arquivos de mapa da nova versão não foram copiados. Repita o Passo 4.

Execute queries de validação pós-migração:

USE MuOnline;

-- Contagem de personagens (compare com antes da migração)
SELECT COUNT(*) AS TotalPersonagens FROM Character;

-- Verificar integridade de itens
SELECT COUNT(*) AS PersonagensSemItens
FROM Character
WHERE Items IS NULL OR DATALENGTH(Items) = 0;
-- Resultado esperado: 0 (zero personagens sem itens)

-- Verificar guilds intactas
SELECT COUNT(*) AS TotalGuilds FROM Guild;

-- Limpar sessoes presas (comum apos restart)
UPDATE MEMB_STAT SET ConnectStat = 0, ServerName = '' WHERE ConnectStat = 1;
Dica: Conecte com uma conta GM de teste antes de anunciar o servidor online. Navegue por pelo menos 3 mapas diferentes (Lorencia, Dungeon, Devias) e teste um evento — Blood Castle ou Devil Square — para confirmar funcionamento completo antes de liberar acesso aos jogadores.

Verificação de Eventos Após Migração

Se os eventos não estiverem iniciando corretamente:

USE MuOnline;

-- Verificar horários de eventos configurados no banco
SELECT * FROM EventSchedule ORDER BY EventType;

-- Reconfigurar horários do Blood Castle (EventType = 1)
UPDATE EventSchedule
SET StartTime1 = '09:00', StartTime2 = '13:00',
    StartTime3 = '17:00', StartTime4 = '21:00',
    Duration = 60
WHERE EventType = 1;

-- Reconfigurar horários do Devil Square (EventType = 2)
UPDATE EventSchedule
SET StartTime1 = '10:00', StartTime2 = '14:00',
    StartTime3 = '18:00', StartTime4 = '22:00',
    Duration = 30
WHERE EventType = 2;

Se os eventos estiverem configurados via arquivo .ini em vez de banco de dados (comum em versões mais antigas do Season 6):

; GameServer\Data\Events\BloodCastle.ini
[BloodCastle]
Enable = 1
Open_Time1  = 09:00
Close_Time1 = 10:00
Open_Time2  = 13:00
Close_Time2 = 14:00
Open_Time3  = 17:00
Close_Time3 = 18:00
Open_Time4  = 21:00
Close_Time4 = 22:00
MaxUser_BC1 = 10
MaxUser_BC7 = 10

A atualização bem-sucedida resulta em um servidor rodando a nova versão com todos os dados dos jogadores intactos. Reserve pelo menos 30 minutos de testes com conta GM antes de anunciar a reabertura — problemas descobertos com o servidor lotado são exponencialmente mais difíceis de corrigir.

Perguntas frequentes

Preciso reinstalar o SQL Server ao atualizar o MuServer?

Não. O banco de dados permanece intacto. Você substitui os binários do servidor (GameServer/, ConnectServer/, DataServer/) e aplica scripts de migração SQL nas tabelas existentes. O SQL Server em si não é reinstalado.

Qual versão de SQL Server é recomendada para Season 6?

SQL Server 2008 R2 ou 2012 são os mais estáveis para Season 6. Versões mais novas (2017/2019) funcionam, mas podem exigir ajuste de compatibilidade via: ALTER DATABASE MuOnline SET COMPATIBILITY_LEVEL = 100;

O que fazer se o GameServer travar após a atualização com erro 'MapServer connect failed'?

Verifique GameServer/GameServer.ini, seção [MapServer], e confirme que MapServerIP e MapServerPort batem com a nova configuração. Em Season 6+, o MapServer é separado e precisa iniciar antes do GameServer.

Como reverter para a versão anterior se algo der errado?

Restaure o backup via SSMS: RESTORE DATABASE MuOnline FROM DISK = 'C:\\Backups\\MuOnline_pre_update.bak' WITH REPLACE; Depois recoloque os binários antigos da pasta de backup criada no Passo 1.

EQ

Equipe ViciadosMU

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

Continue lendo

Artigos relacionados