Como fazer backup do banco de dados do servidor de MU Online
Configure backups automáticos do SQL Server, aprenda a restaurar e mantenha uma política de retenção — para nunca perder o progresso dos jogadores.
Um servidor sem backup é um servidor que vai perder dados em algum momento — falha de hardware, invasão, erro humano, atualização que deu errado. A pergunta nunca é se, é quando. Com backup configurado, qualquer problema se resolve em minutos. Sem backup, é reconstruir do zero.
Um servidor sem backup é um servidor que vai perder dados em algum momento — falha de hardware, invasão, erro humano, atualização que deu errado. A pergunta nunca é se, é quando. Com backup configurado, qualquer problema se resolve em minutos. Sem backup, é reconstruir do zero.
O que precisa ser copiado
| O que | Por quê | Frequência |
|---|---|---|
Banco MuOnline (SQL Server) | Contas, personagens, itens, guilds | A cada 2-4 horas |
Banco MuCastleSiege (se separado) | Estado do Castle Siege | Diário |
Arquivos .ini do MuServer | Configurações de taxa, eventos, IPs | A cada mudança |
Pasta Data/ do GameServer | Monstros, drops, mapas | A cada mudança |
| Arquivos do site | PHP, HTML, config do site | A cada mudança |
O mais crítico é sempre o banco SQL — é onde ficam as horas de jogo dos seus jogadores.
Método 1 — Backup manual pelo SSMS
Para entender o processo antes de automatizar:
Backup Full pelo SSMS
- Abra o SQL Server Management Studio;
- Conecte com o
sa; - Expanda Databases, clique com o direito em MuOnline;
- Selecione Tasks → Back Up...;
- Na janela de backup:
- Backup type: Full
- Backup to: clique em Add..., escolha o caminho e nome do arquivo:
D:\Backups\MuOnline_20260701_0200.bak
- Marque Overwrite all existing backup sets (para não acumular no mesmo arquivo)
- Clique OK → aguarde "The backup of database 'MuOnline' completed successfully."
Via query SQL (mais rápido para usar em scripts)
-- Backup Full
BACKUP DATABASE MuOnline
TO DISK = 'D:\Backups\MuOnline_Full.bak'
WITH FORMAT, INIT, COMPRESSION,
NAME = 'MuOnline Full Backup',
STATS = 10;
GO
-- Backup Differential (só o que mudou desde o último Full)
BACKUP DATABASE MuOnline
TO DISK = 'D:\Backups\MuOnline_Diff.bak'
WITH DIFFERENTIAL, COMPRESSION,
NAME = 'MuOnline Differential Backup';
GO
COMPRESSION reduz o tamanho do arquivo de backup em 60-80%. Disponível a partir do SQL Server 2008 Enterprise/Standard. Na edição Express não está disponível.Método 2 — Backup automático com SQL Server Agent
O SQL Server Agent é o agendador nativo do SQL Server. Ideal para automatizar backups sem depender de ferramentas externas.
Verificar se o SQL Agent está rodando
No SSMS, olhe no Object Explorer: expanda a instância e procure SQL Server Agent. Se tiver um X vermelho, clique com o direito → Start.
No services.msc, o serviço se chama SQL Server Agent (MSSQLSERVER) — configure para Automatic para iniciar com o Windows.
Criar um Job de backup
- No SSMS, expanda SQL Server Agent → Jobs;
- Clique com o direito em Jobs → New Job...;
- Na aba General:
- Name:
Backup MuOnline Full Diario
- Na aba Steps:
- Clique em New...;
- Step name:
Fazer Backup Full - Type:
Transact-SQL script (T-SQL) - Database:
master - Command:
```sql DECLARE @path NVARCHAR(500); DECLARE @filename NVARCHAR(200); SET @filename = 'MuOnline_Full_' + CONVERT(VARCHAR, GETDATE(), 112) + '.bak'; SET @path = 'D:\Backups\' + @filename;
BACKUP DATABASE MuOnline TO DISK = @path WITH FORMAT, INIT, COMPRESSION, NAME = 'MuOnline Full Backup'; ```
- Clique OK;
- Na aba Schedules:
- Clique em New...;
- Name:
Todo dia às 04:00 - Schedule type:
Recurring - Frequency:
Daily - Daily frequency:
Occurs once at 4:00 AM - Clique OK;
- Na aba Notifications (opcional):
- Marque E-mail e configure para notificar em falha;
- Clique OK para criar o Job.
Job de backup Differential a cada 2 horas
Crie um segundo Job para backups diferenciais mais frequentes:
-- T-SQL para backup differential com timestamp
DECLARE @path NVARCHAR(500);
DECLARE @filename NVARCHAR(200);
SET @filename = 'MuOnline_Diff_' + CONVERT(VARCHAR, GETDATE(), 112) + '_' +
REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '') + '.bak';
SET @path = 'D:\Backups\Diff\' + @filename;
BACKUP DATABASE MuOnline
TO DISK = @path
WITH DIFFERENTIAL, COMPRESSION,
NAME = 'MuOnline Differential Backup';
Schedule: a cada 2 horas (Occurs every 2 hours na configuração do Agendador).
Método 3 — Script .bat com Agendador do Windows (para SQL Express)
Se você usa SQL Server Express (que não tem SQL Agent), use um script bat agendado:
Criar o script de backup
Crie o arquivo C:\Scripts\backup_mu.bat:
@echo off
setlocal
REM === Configurações ===
set SQLSERVER=localhost
set DATABASE=MuOnline
set SQLUSER=sa
set SQLPASS=SuaSenhaForteAqui
set BACKUPDIR=D:\Backups
REM === Data e hora para o nome do arquivo ===
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set DATE=%dt:~0,8%
set TIME=%dt:~8,6%
set FILENAME=%BACKUPDIR%\MuOnline_Full_%DATE%_%TIME%.bak
REM === Executar backup via sqlcmd ===
sqlcmd -S %SQLSERVER% -U %SQLUSER% -P %SQLPASS% -Q "BACKUP DATABASE %DATABASE% TO DISK='%FILENAME%' WITH FORMAT, INIT"
REM === Log ===
echo Backup concluido: %FILENAME% >> %BACKUPDIR%\backup_log.txt
echo %DATE% %TIME% >> %BACKUPDIR%\backup_log.txt
endlocal
Agendar o script
- Pesquise Agendador de Tarefas no menu Iniciar;
- Clique em Criar Tarefa...;
- Geral: nome
Backup MuOnline Diario, marque Executar com os mais altos privilégios; - Disparadores: Novo... → Diário → às 04:00;
- Ações: Novo... → Iniciar um programa →
C:\Scripts\backup_mu.bat; - Clique OK.
Método 4 — Backup para a nuvem (Google Drive / Mega)
Para backup offsite automatizado, combine o script bat com rclone (ferramenta gratuita de sync para nuvem):
Instalar e configurar o rclone
- Baixe o rclone de
rclone.org(versão Windows); - Execute:
rclone confige siga o assistente para configurar o Google Drive (ou Mega, Backblaze, etc.); - Após configurar, faça sync dos backups:
REM === Sync para Google Drive (adicionar ao final do backup_mu.bat) ===
"C:\rclone\rclone.exe" sync D:\Backups gdrive:mu-backups --min-age 1s
Isso envia automaticamente os novos backups para o Google Drive após cada backup local.
Política de retenção — quantos backups guardar
Guardar todo backup infinitamente ocupa muito espaço. Uma política razoável:
| Tipo | Guardar por | Quando deletar |
|---|---|---|
| Full diário | 7 dias | Arquivos mais velhos que 7 dias |
| Differential | 24 horas | Arquivos mais velhos que 1 dia |
| Backups especiais (antes de eventos, patches) | Indefinido | Manualmente |
Script para limpar backups antigos:
REM === Deletar backups Full mais velhos que 7 dias ===
forfiles /p "D:\Backups" /s /m MuOnline_Full_*.bak /d -7 /c "cmd /c del @path"
REM === Deletar backups Differential mais velhos que 1 dia ===
forfiles /p "D:\Backups\Diff" /s /m MuOnline_Diff_*.bak /d -1 /c "cmd /c del @path"
Como restaurar um backup
Restaurar via SSMS
- Clique com o direito em Databases → Restore Database...;
- Source: Device → Add → selecione o
.bak; - Na aba Options:
- Marque Overwrite the existing database;
- Recovery state:
RESTORE WITH RECOVERY(banco fica online após restore);
- Clique OK.
Restaurar via query (mais rápido)
-- Primeiro colocar o banco em modo single user (forçar desconexão)
ALTER DATABASE MuOnline SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Restaurar
RESTORE DATABASE MuOnline
FROM DISK = 'D:\Backups\MuOnline_Full_20260701_0400.bak'
WITH REPLACE, RECOVERY;
GO
-- Voltar ao modo multi user
ALTER DATABASE MuOnline SET MULTI_USER;
GO
Restaurar para um banco de teste (sem afetar o servidor ativo)
-- Restaurar com outro nome para verificar o conteúdo sem afetar o banco em produção
RESTORE DATABASE MuOnline_Restaurado
FROM DISK = 'D:\Backups\MuOnline_Full_20260701_0400.bak'
WITH MOVE 'MuOnline_Data' TO 'C:\SQL\MuOnline_Restaurado.mdf',
MOVE 'MuOnline_Log' TO 'C:\SQL\MuOnline_Restaurado_log.ldf',
RECOVERY;
Verificar a integridade dos backups
Um backup corrompido descoberto na hora da crise é o pior cenário. Verifique periodicamente:
-- Verificar integridade do arquivo de backup (sem restaurar)
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\MuOnline_Full_20260701_0400.bak';
-- Deve retornar: "The backup set on file 1 is valid."
Plano de resposta a desastres
Defina antes que algo aconteça:
CENÁRIO 1 — Banco corrompido / erro grave
1. Parar todos os serviços do MuServer
2. Identificar o backup mais recente válido
3. Restaurar (RESTORE DATABASE com REPLACE)
4. Reiniciar os serviços
5. Comunicar jogadores sobre possível rollback
CENÁRIO 2 — Servidor invadido / dados deletados
1. Desligar o servidor da internet imediatamente (bloquear todas as portas)
2. Identificar como a invasão aconteceu (logs do sistema, do SQL, do site)
3. Restaurar o banco de um backup pré-invasão
4. Corrigir a vulnerabilidade que permitiu a invasão
5. Alterar TODAS as senhas (SQL, FTP, painel, site)
6. Reabrir o servidor apenas após corrigir o problema
CENÁRIO 3 — Falha de hardware (disco)
1. Provisionar novo servidor/disco
2. Reinstalar Windows + SQL Server
3. Copiar backup do armazenamento offsite
4. Restaurar banco
5. Restaurar configurações do MuServer
6. Testar e reabrir
Tempo estimado de recuperação
| Tamanho do banco | Backup Full local | Backup Full de nuvem |
|---|---|---|
| Pequeno (< 1 GB) | 2-5 minutos | 10-30 minutos |
| Médio (1-5 GB) | 5-15 minutos | 30-90 minutos |
| Grande (5-20 GB) | 15-45 minutos | 1-4 horas |
Pense nesses tempos quando decidir a frequência de backup — é quanto de progresso seus jogadores podem perder no pior caso.
Perguntas frequentes
Com que frequência fazer backup?
Para servidores ativos (20+ jogadores), backup a cada 2-4 horas é o ideal. No mínimo, backup diário. Quanto mais movimento no servidor, mais você perde se não tiver backup recente.
Onde guardar os backups?
Nunca apenas no mesmo servidor. Guarde em outro disco, em outro servidor (FTP), ou em nuvem (Google Drive, Mega, Backblaze). Se a máquina quebrar, o backup local some junto.
Backup Full ou Differential?
Full backup salva tudo — é o mais simples. Differential salva apenas o que mudou desde o último Full (arquivo menor). Para servidores de MU, Full diário + Differential a cada 2h é uma política boa.
Como testar se o backup está bom?
Restaure o backup num banco com outro nome (ex: MuOnline_Teste) e verifique se os dados estão intactos. Nunca confie num backup que nunca foi testado.