O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Tutoriais

Manutenção Regular de Servidor de MU: Backup, Updates e Rotina

Aprenda a criar rotinas de backup automatizado, aplicar updates com segurança e manter seu servidor MU Online estável e atualizado.

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

Por Que a Manutenção Regular é Crítica

Um servidor MU Online privado acumula dados, logs e fragmentação de banco de dados em ritmo acelerado. Sem manutenção periódica, você enfrentará lentidão progressiva, corrupção de dados de personagens e falhas em eventos como Blood Castle e Devil Square. Este guia cobre os procedimentos essenciais que todo administrador precisa executar semanalmente.


Parte 1: Backup do Banco de Dados

Passo 1 — Identificar os bancos de dados do servidor

Seu servidor MU usa tipicamente dois bancos principais no SQL Server:

  • MuOnline — dados de personagens, contas, itens, guilds
  • MeShop (ou WebShop) — loja online, cash points, transações

Abra o SQL Server Management Studio (SSMS) e conecte ao servidor local (localhost ou .\SQLEXPRESS).

Passo 2 — Criar backup manual via T-SQL

Execute no SSMS (Query → New Query):

-- Backup completo do banco MuOnline
BACKUP DATABASE [MuOnline]
TO DISK = 'C:\Backups\MuOnline_Full_' + 
          CONVERT(VARCHAR, GETDATE(), 112) + '.bak'
WITH FORMAT, COMPRESSION, STATS = 10;

-- Backup completo do banco MeShop
BACKUP DATABASE [MeShop]
TO DISK = 'C:\Backups\MeShop_Full_' + 
          CONVERT(VARCHAR, GETDATE(), 112) + '.bak'
WITH FORMAT, COMPRESSION, STATS = 10;
Dica: Crie a pasta C:\Backups\ antes de executar. O parâmetro COMPRESSION reduz o tamanho do arquivo em até 70% — essencial para não lotar o disco rapidamente.

Passo 3 — Automatizar com SQL Server Agent

  1. No SSMS, expanda SQL Server Agent → Jobs → New Job
  2. Em General, nomeie: Backup_Diario_MuOnline
  3. Em Steps → New Step:
  • Type: Transact-SQL script (T-SQL)
  • Cole o script do Passo 2
  1. Em Schedules → New Schedule:
  • Frequency: Daily
  • Time: 03:00:00 (horário de menor movimento)
  1. Clique OK para salvar o job
Nota: Se estiver usando SQL Server Express, o SQL Server Agent não está disponível. Use o Task Scheduler do Windows com um arquivo .bat chamando sqlcmd.

Passo 4 — Script .bat para backup via Task Scheduler (Express)

Crie C:\Scripts\backup_mu.bat:

@echo off
SET HORA=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
sqlcmd -S localhost\SQLEXPRESS -Q "BACKUP DATABASE [MuOnline] TO DISK='C:\Backups\MuOnline_%HORA%.bak' WITH FORMAT, COMPRESSION"
sqlcmd -S localhost\SQLEXPRESS -Q "BACKUP DATABASE [MeShop] TO DISK='C:\Backups\MeShop_%HORA%.bak' WITH FORMAT, COMPRESSION"
echo Backup concluido em %DATE% %TIME% >> C:\Logs\backup_log.txt

No Task Scheduler: Create Task → Triggers → Daily → 03:00Actions → Start a program → aponte para C:\Scripts\backup_mu.bat.


Parte 2: Backup dos Arquivos do Servidor

Passo 5 — Estrutura de diretórios a preservar

Os diretórios críticos variam por versão, mas em Season 6 padrão são:

C:\MuServer\
  ├── GameServer\
  │   ├── Data\          ← configurações de monstros, mapas, drops
  │   ├── GameServer.ini ← configurações principais
  │   └── *.cfg          ← arquivos de configuração de eventos
  ├── ConnectServer\
  │   └── ConnectServer.ini
  ├── DataServer\
  │   └── DataServer.ini
  └── EventServer\
      └── EventServer.cfg

Passo 6 — Script de backup de arquivos

Crie C:\Scripts\backup_files.bat:

@echo off
SET DEST=C:\Backups\Files\%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
mkdir "%DEST%"
xcopy "C:\MuServer\GameServer\Data\" "%DEST%\GameServer\Data\" /E /Y /Q
xcopy "C:\MuServer\GameServer\*.ini" "%DEST%\GameServer\" /Y /Q
xcopy "C:\MuServer\GameServer\*.cfg" "%DEST%\GameServer\" /Y /Q
xcopy "C:\MuServer\ConnectServer\" "%DEST%\ConnectServer\" /E /Y /Q
xcopy "C:\MuServer\DataServer\" "%DEST%\DataServer\" /E /Y /Q
echo Backup de arquivos: %DATE% %TIME% >> C:\Logs\backup_log.txt
Atenção: Mantenha backups em disco separado do servidor ou em storage externo. Um backup no mesmo disco não protege contra falha de hardware.

Parte 3: Limpeza e Otimização do Banco de Dados

Passo 7 — Remover logs e personagens inativos

Logs acumulados travam queries e inflam o banco. Execute mensalmente:

-- Remover logs de conexão com mais de 90 dias
DELETE FROM MuOnline.dbo.T_Log_Connectinfo
WHERE ConnectDate < DATEADD(DAY, -90, GETDATE());

-- Remover logs de chat com mais de 30 dias
DELETE FROM MuOnline.dbo.T_Log_Chat
WHERE LogDate < DATEADD(DAY, -30, GETDATE());

-- Remover contas nunca logadas após 180 dias do registro
DELETE FROM MuOnline.dbo.MEMB_INFO
WHERE mail_chek = '0'
AND memb_joindate < DATEADD(DAY, -180, GETDATE());
Dica: Sempre execute um SELECT COUNT(*) com a mesma cláusula WHERE antes do DELETE para confirmar quantos registros serão removidos.

Passo 8 — Reconstruir índices fragmentados

-- Verificar fragmentação dos índices
SELECT 
    OBJECT_NAME(ips.object_id) AS TableName,
    i.name AS IndexName,
    ips.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID('MuOnline'), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.avg_fragmentation_in_percent > 30
ORDER BY ips.avg_fragmentation_in_percent DESC;

-- Reconstruir todos os índices do banco MuOnline
USE MuOnline;
EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD WITH (ONLINE = OFF)';

Passo 9 — Shrink do log de transações

USE MuOnline;
-- Truncar log de transações
BACKUP LOG [MuOnline] TO DISK = 'NUL';
DBCC SHRINKFILE (MuOnline_log, 1);

Parte 4: Aplicando Updates de Servidor

Passo 10 — Procedimento seguro de update de arquivos

Nunca substitua arquivos com o servidor online. Siga esta sequência:

  1. Anuncie manutenção no site/Discord com 30 minutos de antecedência
  2. Salve o estado atual: CHECKPOINT no SSMS
  3. Pare os serviços na ordem correta:
  • Feche GameServer.exe
  • Feche EventServer.exe
  • Feche DataServer.exe
  • Feche ConnectServer.exe
  1. Faça backup dos arquivos que serão substituídos (Passo 6)
  2. Aplique os novos arquivos
  3. Suba os serviços na ordem inversa: ConnectServer → DataServer → EventServer → GameServer

Passo 11 — Aplicar scripts SQL de update

Quando o update inclui mudanças no banco (novas tabelas, colunas ou dados):

-- Sempre use transação para poder reverter em caso de erro
BEGIN TRANSACTION;

-- Exemplo: adicionar coluna de novo sistema
ALTER TABLE MuOnline.dbo.Character
ADD NewSystemPoints INT NOT NULL DEFAULT 0;

-- Exemplo: inserir novos itens na tabela de itens base
INSERT INTO MuOnline.dbo.Item_serial (Item_index, Item_name, Item_level)
VALUES (512, 'Novo Item', 0);

-- Se tudo correu bem, confirme
COMMIT TRANSACTION;

-- Se houve erro, reverta com:
-- ROLLBACK TRANSACTION;
Atenção: Scripts SQL de updates de terceiros devem ser lidos linha por linha antes de executar. Scripts mal escritos podem dropar tabelas inteiras ou corromper dados de personagens.

Passo 12 — Verificar configurações após update

Após update, confira os arquivos .ini e .cfg para parâmetros novos que possam ter sido adicionados. Compare o arquivo novo com seu backup:

fc "C:\Backups\GameServer_anterior\GameServer.ini" "C:\MuServer\GameServer\GameServer.ini" > C:\Logs\diff_ini.txt

Parte 5: Rotina de Manutenção Semanal

Checklist semanal recomendado

Segunda-feira:
  [x] Verificar logs de erro do GameServer (GameServer\Log\)
  [x] Checar espaço em disco (mínimo 20% livre)
  [x] Confirmar que backups automáticos rodaram

Quarta-feira:
  [x] Verificar conectividade: ConnectServer respondendo na porta 44405
  [x] Checar tabela T_Log_Hack para tentativas de exploit
  [x] Monitorar uso de memória do GameServer.exe

Sexta-feira:
  [x] Backup manual completo antes do fim de semana
  [x] Verificar eventos programados (Blood Castle, Devil Square)
  [x] Testar restore de backup em ambiente separado (mensal)

Passo 13 — Monitorar eventos automáticos

Verifique se os horários de eventos estão corretos em GameServer\Data\Events\ ou via banco:

-- Verificar configuração de horários de Blood Castle
SELECT * FROM MuOnline.dbo.EventSchedule
WHERE EventName LIKE 'BloodCastle%'
ORDER BY EventTime;

-- Resetar contador de Blood Castle se travar
UPDATE MuOnline.dbo.EventSchedule
SET EventStatus = 0, CurrentCount = 0
WHERE EventName = 'BloodCastle';
Nota: Em algumas versões do MuServer, os eventos são configurados diretamente em GameServer\Data\Events\BloodCastle.ini com os horários em formato HH:MM. Consulte a documentação da versão específica do seu servidor.

Troubleshooting Comum

GameServer não inicia após update: Verifique o arquivo GameServer\Log\Error.log. O erro mais comum é incompatibilidade de versão de DLL. Restaure as DLLs do backup anterior.

Banco crescendo rapidamente: Execute EXEC sp_spaceused em cada tabela para identificar a maior. Em geral, T_Log_Connectinfo e T_Log_Chat são as responsáveis — aplique o DELETE do Passo 7.

ConnectServer não aceita conexões: Verifique se a porta 44405 está liberada no firewall do Windows e no roteador. Use netstat -an | findstr 44405 para confirmar que está escutando.

Personagens sumindo após restart: Indica que o GameServer está encerrando sem salvar. Adicione tempo de espera antes do shutdown: no console do GameServer, use o comando de save forçado antes de fechar o processo.

Perguntas frequentes

Com que frequência devo fazer backup do banco de dados?

O ideal é ter backup diário incremental e backup completo semanal. Para servidores ativos, considere backup a cada 6 horas usando SQL Server Agent Jobs ou um script .bat agendado no Task Scheduler do Windows.

Posso aplicar update de arquivos com o servidor online?

Nunca substitua arquivos do GameServer/ com o servidor rodando. Sempre pare todos os serviços (GameServer, ConnectServer, DataServer, EventServer) antes de qualquer substituição de arquivo executável ou .ini de configuração.

O que fazer se o banco travar após um update de SQL?

Execute DBCC CHECKDB('MuOnline') no SQL Server Management Studio para verificar integridade. Se houver erros, restaure o backup mais recente e aplique o script SQL novamente linha a linha para identificar o comando problemático.

Como verificar se o GameServer está consumindo memória excessiva?

No Task Manager (Ctrl+Shift+Esc), monitore o processo GameServer.exe. Consumo acima de 2 GB em servidores Season 6 com menos de 200 jogadores indica memory leak. Agende restart automático via Task Scheduler às 04:00 como medida preventiva.

EQ

Equipe ViciadosMU

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

Continue lendo

Artigos relacionados