Migrando dados de SQLite para MySQL
Seu servidor cresceu e o SQLite começou a mostrar limites? Migrar para o MySQL é o caminho natural. Veja como fazer sem perder dados.
Antes de começar
- Backup dos arquivos
.db; - Um servidor de teste para validar a migração;
- Uma janela de manutenção anunciada aos jogadores.
1. Diferenças de sintaxe
A maioria do SQL é igual, mas atenção:
| SQLite | MySQL |
|---|---|
INTEGER PRIMARY KEY AUTOINCREMENT |
INT AUTO_INCREMENT PRIMARY KEY |
| Tipos flexíveis | Tipos rígidos (VARCHAR(n), INT, BIGINT, FLOAT) |
INSERT OR REPLACE |
REPLACE INTO ou INSERT ... ON DUPLICATE KEY UPDATE |
INSERT OR IGNORE |
INSERT IGNORE |
last_insert_rowid() |
LAST_INSERT_ID() |
Revise as consultas do seu código procurando essas diferenças.
2. Crie as tabelas no MySQL
Escreva os CREATE TABLE com tipos adequados, índices e utf8mb4.
3. Transfira os dados
Opções:
- Ferramentas visuais (como DBeaver ou HeidiSQL) que abrem o SQLite e exportam para MySQL;
- Exportar para CSV/SQL e importar no MySQL;
- Script de migração no próprio MTA: um resource temporário que conecta aos dois bancos, lê do SQLite e grava no MySQL.
Exemplo simplificado de script de migração:
local sqlite = dbConnect("sqlite", "dados.db")
local mysql = exports.rp_db:getConnection()
local linhas = dbPoll(dbQuery(sqlite, "SELECT usuario, senha_hash, dinheiro FROM contas"), -1)
for _, l in ipairs(linhas) do
dbExec(mysql, "INSERT INTO contas (usuario, senha_hash, dinheiro) VALUES (?, ?, ?)",
l.usuario, l.senha_hash, l.dinheiro)
end
outputServerLog("Migradas " .. #linhas .. " contas.")
(Aqui o uso síncrono é aceitável, porque roda uma única vez com o servidor em manutenção.)
4. Atualize o código
- Troque
dbConnect("sqlite", ...)pela conexão MySQL (idealmente um resource central de conexão); - Ajuste consultas com sintaxe específica do SQLite.
5. Teste
No servidor de teste:
- Faça login com contas antigas;
- Confira saldos, inventários, veículos e casas;
- Teste criação de contas e compras.
6. Migre em produção
- Anuncie a manutenção;
- Pare o servidor;
- Faça backup final do SQLite;
- Rode a migração;
- Suba o código atualizado;
- Inicie e verifique.
Guarde o arquivo SQLite antigo até ter certeza de que está tudo certo.
Hospede seu servidor com a VittHost
Todos os planos MTASA-BR da VittHost incluem 1 banco MySQL, pronto para receber seus dados. Servidores no Brasil, painel Pterodactyl, proteção DDoS, downloads acelerados por nginx dedicado e teste grátis de 3 dias.