quarta-feira, 17 de setembro de 2025

SysadminUrbano • Guia Técnico: Migração Windows 10 -> Windows 11 com Backup Completo

Migração Windows 10 → Windows 11: Backup completo e restauração sem perdas

Checklist técnico com comandos, exportações e reaproveitamento de bibliotecas Steam/Epic.

1) Escopo e pré-requisitos

  • Backup de dados do usuário (Documentos, Imagens, Vídeos, Desktop, projetos).
  • Exportações de navegadores (favoritos/senhas) e cópia de perfis.
  • Inventário de programas instalados + backup para reinstalar rápido.
  • Exportação de perfis Wi-Fi e drivers do sistema.
  • Conservar bibliotecas de jogos em disco separado (D:, E:).
  • Criação de pendrive bootável Windows 11 (UEFI/GPT).
Tip Execute os comandos em PowerShell (Admin) salvo quando indicado (CMD).

2) Backup de arquivos do usuário (robocopy)

Defina um destino externo, ex.: E:\Backup. Use /MIR para espelhar (cuidado: espelho remove no destino arquivos ausentes na origem).

robocopy "%USERPROFILE%\Documents" "E:\Backup\Documents" /MIR /R:1 /W:1
robocopy "%USERPROFILE%\Pictures"  "E:\Backup\Pictures"  /MIR /R:1 /W:1
robocopy "%USERPROFILE%\Videos"    "E:\Backup\Videos"    /MIR /R:1 /W:1
robocopy "%USERPROFILE%\Desktop"   "E:\Backup\Desktop"   /MIR /R:1 /W:1
robocopy "%USERPROFILE%\Downloads" "E:\Backup\Downloads" /MIR /R:1 /W:1
robocopy "%APPDATA%"        "E:\Backup\AppData\Roaming" /MIR /R:1 /W:1
robocopy "%LOCALAPPDATA%"   "E:\Backup\AppData\Local"   /MIR /R:1 /W:1

4) Inventário de programas (para reinstalação)

4.1 Listar programas instalados a partir do Registro (32/64 bits):

PowerShell -NoProfile -ExecutionPolicy Bypass -Command ^
  "$paths=@('HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'); ^
   Get-ItemProperty $paths | Where-Object {$_.DisplayName} | ^
   Select-Object DisplayName,DisplayVersion,Publisher | Sort-Object DisplayName | ^
   Export-Csv -NoTypeInformation -Encoding UTF8 -Path \"$env:USERPROFILE\Desktop\programas_instalados.csv\""

4.2 Exportar catálogo do Winget (reinstalação em lote):

winget export -o C:\winget-backup.json

4.3 (Opcional) Aplicativos da Microsoft Store:

Get-AppxPackage | Select Name, PackageFullName | Export-Csv -NoTypeInformation -Path C:\store-apps.csv

5) Perfis Wi-Fi (exportar/importar)

5.1 Exportar (com chaves em claro para reimportar facilmente):

mkdir C:\wifi-backup
netsh wlan export profile folder=C:\wifi-backup key=clear

5.2 Reimportar após o Windows 11:

for %f in (C:\wifi-backup\*.xml) do netsh wlan add profile filename="%f" user=all

6) Backup de drivers (pnputil)

Exporta todos os drivers do DriverStore para restauração manual se necessário.

mkdir C:\driver-backup
pnputil /export-driver * C:\driver-backup

7) Outlook (PST/OST) e e-mails

  • PST: %USERPROFILE%\Documents\Outlook Files — copiar para o backup.
  • OST e perfis: %LOCALAPPDATA%\Microsoft\Outlook — copiar (OST é cache; PST é o arquivo portável).
Nota Preferencial: exportar caixas em PST via Outlook > Arquivo > Abrir e Exportar > Exportar/Importar.

8) Jogos (Steam/Epic) em disco separado

  • Verifique que as pastas estão em D:\SteamLibrary e/ou D:\EpicGames.
  • Após o Windows 11:
    Steam → Configurações → Downloads → Pastas da Biblioteca → Adicionar D:\SteamLibrary.
    Epic → Biblioteca → Instalar (apontar para a pasta do jogo existente) → o launcher verifica arquivos.
Atenção Durante a instalação, formate apenas o disco/partição do Windows (C:). Não toque no disco dos jogos.

9) Criando o pendrive do Windows 11

Opções comuns:

  • Media Creation Tool: gera USB bootável automaticamente.
  • Rufus: selecione a ISO do Windows 11, Partição GPT + Alvo UEFI (não CSM), tamanho padrão.
UEFI Confirme no setup/BIOS que o boot está em UEFI e o disco do Windows em GPT.

10) Instalação do Windows 11 (format C:)

  1. Boot pelo pendrive.
  2. Em “Onde deseja instalar”: selecione apenas a partição do Windows (C:) → Formatar.
  3. Prosseguir com a instalação padrão.
Dica Se houver múltiplos discos, desconecte temporariamente os que não serão formatados para evitar erros.

11) Pós-instalação e restauração

11.1 Drivers e Windows Update

  • Instale drivers do fabricante (chipset, rede, GPU).
  • Rode o Windows Update até zerar pendências.

11.2 Reinstalação em lote via Winget (se exportou)

winget import -i C:\winget-backup.json --ignore-unavailable --accept-source-agreements --accept-package-agreements

11.3 Restaurar arquivos do backup

robocopy "E:\Backup\Documents" "%USERPROFILE%\Documents" /MIR /R:1 /W:1
robocopy "E:\Backup\Pictures"  "%USERPROFILE%\Pictures"  /MIR /R:1 /W:1
robocopy "E:\Backup\Videos"    "%USERPROFILE%\Videos"    /MIR /R:1 /W:1
robocopy "E:\Backup\Desktop"   "%USERPROFILE%\Desktop"   /MIR /R:1 /W:1

11.4 Reimportar perfis Wi-Fi

for %f in (C:\wifi-backup\*.xml) do netsh wlan add profile filename="%f" user=all

11.5 Navegadores

  • Instale Chrome/Edge/Firefox → entre na conta → ative sincronização.
  • Se necessário, substitua pastas de perfil a partir do backup (Chrome/Edge/Firefox).
  • Importe favoritos (HTML) e senhas (CSV) se gerou exportação manual.

11.6 Reapontar bibliotecas de jogos

  • Steam: Configurações → Downloads → Pastas da Biblioteca → Adicionar D:\SteamLibrary.
  • Epic: Bibliotecas → Instalar → aponte para a pasta existente do jogo → o launcher verifica arquivos.

12) Anexos úteis (inventário e sistema)

12.1 Snapshot do sistema

systeminfo > "%USERPROFILE%\Desktop\systeminfo.txt"

12.2 Lista de serviços iniciados

Get-Service | Where-Object {$_.Status -eq 'Running'} | Select Name,DisplayName | `
  Export-Csv -NoTypeInformation -Path "%USERPROFILE%\Desktop\servicos_ativos.csv"

Mantenha estes relatórios junto do backup para auditoria e troubleshooting pós-instalação.

13) Verificação de integridade de disco

13.1 Saúde geral dos discos (Storage Spaces / NVMe / SATA)

Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus, OperationalStatus | Sort-Object FriendlyName | Format-Table -AutoSize

13.2 Contadores de confiabilidade/SMART (quando disponível)

$disks = Get-PhysicalDisk
foreach ($d in $disks) {
  try {
    $r = Get-StorageReliabilityCounter -PhysicalDisk $d
    [PSCustomObject]@{
      FriendlyName       = $d.FriendlyName
      TemperatureCelsius = $r.Temperature
      ReadErrorsTotal    = $r.ReadErrorsTotal
      WriteErrorsTotal   = $r.WriteErrorsTotal
      Wear               = $r.Wear
      PredictiveFailure  = $r.PredictiveFailure
    }
  } catch {
    Write-Host "Sem contadores para: $($d.FriendlyName)"
  }
} | Format-Table -AutoSize

13.3 Consulta WMI (ampla compatibilidade)

Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model, SerialNumber, Status, Size | Format-Table -AutoSize

13.4 Verificação lógica (NTFS) — online scan sem reiniciar

chkdsk C: /scan

13.5 Agendar correção (exige reinício)

chkdsk C: /f

13.6 Alternativa PowerShell (mesmo objetivo do CHKDSK)

Repair-Volume -DriveLetter C -Scan
# Para varredura offline com correção:
Repair-Volume -DriveLetter C -OfflineScanAndFix
Nota Execute como Administrador. Em SSDs/NVMe, verifique temperatura/erros via contadores SMART; em HDDs antigos, atenção a aumentos de Read/WriteErrors.

14) Validação de Firmware/UEFI/TPM e partição do disco

14.1 Detectar modo de firmware (BIOS x UEFI)

(Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control').PEFirmwareType
# 1 = BIOS (Legacy), 2 = UEFI

14.2 Verificar Secure Boot (requer UEFI)

Confirm-SecureBootUEFI
# True = habilitado | False = desabilitado | Erro = firmware não UEFI

14.3 Verificar presença/estado do TPM (Windows 11 requer TPM 2.0)

Get-Tpm | Select-Object TpmPresent, TpmReady, ManufacturerVersion, SpecVersion

14.4 Estilo de partição do disco (GPT x MBR) e discos de boot/sistema

Get-Disk | Select-Object Number, FriendlyName, PartitionStyle, IsBoot, IsSystem | Format-Table -AutoSize

14.5 Entradas de boot em NVRAM (UEFI) / Validação do carregador

bcdedit /enum firmware
# Procure por caminhos sob \EFI\Microsoft\Boot\ nas entradas
Requisitos Windows 11 Ideal: UEFI + Secure Boot ativo + TPM 2.0 + disco do sistema em GPT. Caso esteja em BIOS/MBR, avalie conversão para GPT (ex.: mbr2gpt) e configurar UEFI antes da reinstalação.

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

sexta-feira, 2 de maio de 2025

Boas práticas para uso de Alias em DNS (e armadilhas a evitar) | Sysadmin Urbano 2025

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Representação gráfica de domínios interligados no DNS, com cubos luminosos conectados por linhas em um fundo tecnológico escuro

Boas práticas para uso de Alias em DNS (e armadilhas a evitar)

Alias em DNS — normalmente implementados via registros CNAME — são ferramentas extremamente úteis para a gestão de domínios e subdomínios. No entanto, seu uso inadequado pode gerar atrasos, falhas de resolução e até vulnerabilidades operacionais.

Neste artigo, vamos falar sobre boas práticas no uso de alias em DNS e, tão importante quanto, sobre o que **não** se deve fazer.

1. Entendendo o que é um Alias no DNS

Um alias, geralmente configurado como um registro do tipo CNAME, é uma maneira de dizer: "este nome de domínio é apenas um apelido para outro nome existente".

Exemplo típico:

app.example.com → www.example.com

O objetivo é simplificar a manutenção de domínios. Atualizando o destino do CNAME, todos os aliases apontam corretamente sem precisar alterar múltiplos registros A.

2. Quando usar um Alias é uma boa ideia

  • 🔹 Para subdomínios que dependem de serviços externos (ex: plataformas SaaS, clouds públicas).
  • 🔹 Para criar "atalhos" internos em ambientes complexos de múltiplos servidores.
  • 🔹 Para abstrair o endereço real de serviços que podem mudar de IP frequentemente.

Ao usar alias estrategicamente, você reduz erros operacionais e torna a gestão de DNS mais sustentável a longo prazo.

3. O que NÃO fazer com Alias em DNS

  • ⚠️ Não use CNAME no domínio raiz (example.com) — a maioria dos provedores e a RFC 1034 desencorajam isso.
  • ⚠️ Não empilhe CNAMEs em sequência longa (chaining) — cada salto aumenta a latência de resolução DNS.
  • ⚠️ Não aponte para domínios instáveis ou temporários — se o destino cair, seu alias também falha.
  • ⚠️ Não use CNAME para serviços críticos internos — preferir IPs fixos ou registros A/AAAA diretos.

Aliases mal utilizados podem tornar seus sistemas vulneráveis a falhas de terceiros, gerar lentidão e aumentar a complexidade desnecessariamente.

4. Alternativas e soluções modernas

Hoje, alguns provedores oferecem registros do tipo "ALIAS" ou "ANAME", que permitem comportamento similar a CNAME no domínio raiz. Vale verificar se sua infraestrutura suporta.

Além disso, integrar DNS dinâmico (DDNS) para IPs variáveis ou usar balanceadores de carga com registros A pode ser mais eficiente em alguns cenários.

Conclusão

Alias em DNS são aliados poderosos — mas precisam ser usados com inteligência.

Evite cadeias de CNAMEs, proteja o domínio raiz e avalie o impacto de dependências externas antes de definir um alias. Boas práticas simples podem salvar horas de troubleshooting e garantir maior estabilidade para seus ambientes.

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

quinta-feira, 1 de maio de 2025

O que é DevOps de verdade (e o que não é) – Guia Sysadmin Urbano 2025

Representação simbólica de DevOps: mãos conectando servidores em ambiente tecnológico escuro

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

O que é DevOps de verdade (e o que não é)

DevOps é, provavelmente, uma das palavras mais mal interpretadas da TI moderna. Entre slogans de marketing e confusões internas, a essência de DevOps muitas vezes se perde.

Hoje, vamos esclarecer o que DevOps realmente significa — e, tão importante quanto, o que ele definitivamente não é.

1. DevOps é Cultura, Não Cargo

DevOps é um conjunto de práticas que une desenvolvimento e operações, com o objetivo de acelerar entregas de software de forma segura e confiável. Ele é, antes de tudo, uma mudança de mentalidade organizacional.

DevOps não é um "cargo de DevOps Engineer" que trabalha isoladamente. Se apenas uma pessoa carrega o "peso do DevOps", a empresa não entendeu o conceito. DevOps é **cultura compartilhada** — times inteiros operando com responsabilidade mútua pelo ciclo de vida das aplicações.

2. DevOps Não é Ferramenta

Ferramentas são parte da implementação de práticas DevOps — mas elas, por si só, **não são DevOps**.

Jenkins, Kubernetes, Terraform, GitLab CI — todas são ferramentas que ajudam a praticar automação, integração contínua e entrega contínua. Porém, adotar essas tecnologias sem mudanças de processo, comunicação e mentalidade é apenas modernizar o caos.

3. DevOps é Comunicação Eficiente

Se um pipeline automatizado gera uma falha, mas ninguém da equipe de desenvolvimento e operações conversa sobre isso, o DevOps morreu ali.

Comunicação aberta, rápida e objetiva entre times é a fundação para que o ciclo DevOps realmente funcione: planejar, construir, testar, lançar, operar, monitorar e aprender continuamente.

4. DevOps Exige Confiança Mútua

Uma organização que pune experimentação e erro não está pronta para DevOps. Cultura de confiança significa permitir que times falhem rapidamente, aprendam rapidamente e melhorem continuamente sem medo de retaliação.

Quando um sysadmin não confia nos testes automatizados, ou quando o desenvolvedor não confia no time de operações, o ciclo quebra.

5. DevOps Não Substitui o SysOps

Outro mito comum: "Com DevOps, não precisamos mais de times de operações." Errado.

DevOps aumenta a colaboração, mas a necessidade de especialistas em infraestrutura, segurança, redes e sistemas operacionais **não desaparece** — apenas muda de formato.

Infraestrutura continua sendo a base invisível que sustenta o delivery de software. Sem uma base sólida, a automação não salva ninguém.

Conclusão

DevOps não é mágica. Não é apenas ferramenta. Não é título de LinkedIn.

DevOps é prática contínua, é cultura de responsabilidade conjunta, é automação com propósito, é comunicação real entre pessoas técnicas.

Se você quer "fazer DevOps", comece mudando como seus times colaboram — antes de sair instalando novas ferramentas.

DevOps de verdade é humano, difícil, mas profundamente transformador.

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

quarta-feira, 30 de abril de 2025

Instalando o Docker em Linux - 2025

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Guia atualizado para instalar Docker em Linux Ubuntu e CentOS 2025

Instalando o Docker em Linux – Guia Atualizado 2025

O Docker continua sendo uma ferramenta central para ambientes de containers, mesmo em 2025. Apesar da concorrência crescente de alternativas como Podman, o Docker mantém sua força devido à simplicidade e vasta documentação.

Este guia é objetivo: vamos instalar o Docker em sistemas baseados em Debian/Ubuntu e também cobrir a instalação em distribuições RHEL/CentOS/Oracle Linux.

1. Pré-requisitos

  • Distribuição Linux atualizada
  • Acesso root ou sudo
  • Conexão com a internet

2. Instalando Docker em Debian/Ubuntu

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Após a instalação, verifique o serviço:

sudo systemctl status docker

3. Instalando Docker em RHEL/CentOS/Oracle Linux

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

Confirme a instalação com:

docker --version

4. Pós-instalação (Opcional)

Para evitar usar sudo em cada comando Docker:

sudo usermod -aG docker $USER
newgrp docker

Agora você pode rodar comandos Docker diretamente sem precisar de sudo.

5. Considerações Finais

O Docker evoluiu, mas a base da instalação continua muito similar. Manter o ambiente atualizado e seguro é crucial para projetos sérios de infraestrutura.

Nos próximos artigos, vamos aprofundar o uso de Dockerfiles, Volumes, Redes e práticas seguras em ambientes de containers.

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

terça-feira, 29 de abril de 2025

Waiting for confirmation of MySQL service startup...

Docker travado em “Waiting for confirmation of MySQL service startup”

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Docker travado em “Waiting for confirmation of MySQL service startup”

Esse erro, apesar de simples à primeira vista, é um dos travamentos mais silenciosos e frustrantes ao tentar migrar containers MySQL. Logo após o primeiro docker run, o container trava antes mesmo de subir:

Waiting for confirmation of MySQL service startup

Esse tipo de erro normalmente indica que algo no volume de dados está impedindo a inicialização do banco, e o entrypoint padrão do container está preso esperando algo que não virá.

🔍 Possíveis causas

  • Volume com dados parcialmente migrados ou corrompidos
  • Permissões erradas nos arquivos do MySQL
  • Arquivos de instalação (como ibdata1, auto.cnf) presentes mas inválidos
  • Configuração personalizada my.cnf quebrada ou incompatível

🛠️ Como resolver

1️⃣ Testar sem volume

Rode o container limpo, sem montar volume. Se funcionar, o problema está nos dados:

docker run -e MYSQL_ROOT_PASSWORD=test --rm mysql:5.7

2️⃣ Verificar estrutura do volume

Confira se o volume está realmente com os arquivos corretos do MySQL:

ls -la /var/lib/mysql

Se necessário, corrija permissões:

chown -R mysql:mysql /var/lib/mysql

3️⃣ Apagar arquivos de PID ou socket

Se você migrou arquivos com o banco ligado, talvez arquivos "fantasmas" estejam bloqueando o start:

rm -f /var/run/mysqld/mysqld.pid
rm -f /var/run/mysqld/mysqld.sock

4️⃣ Ver logs detalhados

Use essas variáveis para visualizar o que está acontecendo:

-e MYSQL_LOG_CONSOLE=true
--log-error-verbosity=3

5️⃣ Teste interativo

Entre no container antes do daemon tentar iniciar:

docker run -it --rm -e MYSQL_ROOT_PASSWORD=test mysql:5.7 bash
mysqld --initialize --user=mysql
mysqld
  

Isso revelará erros internos antes que o script padrão tente inicializar o banco e trave.

"Nem sempre o MySQL trava por estar corrompido. Às vezes ele só está perdido em um novo lugar, tentando achar o caminho de casa."

Ao migrar um container MySQL, certifique-se de que os dados estão íntegros, as permissões corretas e o ambiente limpo. Um banco de dados exige cuidado — mesmo em um mundo de containers descartáveis.

segunda-feira, 28 de abril de 2025

Migrando Containers

Como Migrar um Container Docker para Outro Servidor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como Migrar um Container Docker para Outro Servidor

Saiba como transportar containers e volumes com segurança entre máquinas diferentes usando comandos simples.

📦 Método 1: Exportar container e volumes manualmente

1. Crie a imagem a partir do container

docker commit meu_container minha_imagem:latest

2. Exporte a imagem para um arquivo

docker save minha_imagem:latest -o minha_imagem.tar

3. Exporte dados do volume (se aplicável)

tar czf meus_dados.tar.gz /caminho/do/volume

4. Transfira para o novo servidor

scp minha_imagem.tar meus_dados.tar.gz usuario@servidor:/caminho/destino

5. Importe a imagem e os dados no novo host

docker load -i minha_imagem.tar
tar xzf meus_dados.tar.gz -C /caminho/destino

6. Suba novamente o container

docker run -d -v /caminho/destino:/dados minha_imagem

🧩 Método 2: Usando Docker Compose (ideal para múltiplos serviços)

1. Copie o arquivo docker-compose.yml e os volumes

Garanta que os dados estejam compactados ou montados via diretórios locais.

2. No novo servidor, execute:

docker-compose up -d

Essa abordagem é mais prática para aplicações complexas ou multi-containers.

"Containers são passageiros, mas dados são valiosos. Cuide da migração de ambos."

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

domingo, 27 de abril de 2025

Como expurgar binlogs do MySQL

Como expurgar binlogs do MySQL com a partição cheia

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como expurgar binlogs do MySQL quando a partição está 100% cheia

O que fazer quando o disco enche e o MySQL trava por conta dos binlogs acumulados.

📦 O problema

Quando a partição do servidor MySQL atinge 100% de uso, o banco de dados não consegue mais gravar novos arquivos binários nem atualizar o index (mysql-bin.index), impedindo o expurgo automático dos binlogs antigos.

🔧 Solução recomendada (com MySQL parado)

1. Pare o MySQL

sudo systemctl stop mysql

2. Acesse a pasta dos binlogs

cd /var/lib/mysql

3. Liste os arquivos e remova os antigos manualmente

ls -lh mysql-bin.*
sudo rm mysql-bin.000001 mysql-bin.000002

4. Edite o index mysql-bin.index

Remova as linhas que apontam para os arquivos deletados:

sudo nano mysql-bin.index

5. Inicie novamente o MySQL

sudo systemctl start mysql

💡 Alternativa com o MySQL em execução

Caso o MySQL ainda esteja rodando (com algum espaço livre):

PURGE BINARY LOGS TO 'mysql-bin.000010';

ou:

PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;

✅ Dica de prevenção

Adicione ao seu my.cnf:

expire_logs_days = 7
max_binlog_size = 100M
"Às vezes, apagar com cuidado é a melhor forma de manter o controle."