Eu acidentalmente fechei meu servidor inteiro

10

Tudo bem, se alguém quiser brincar de deus e fazer milagres, eu estou triste.

Então, eu tive a tarefa de criar um script que encontrasse arquivos com mais de 6 meses, os zipasse e os excluísse. No meu caminho para fazer seu script, executei o seguinte:

find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla

E isso deu a CADA ÚNICO ARQUIVO uma extensão .gz. Agora eu desfiz isso assim que notei, mas já era tarde demais. Após a conclusão do comando, nenhum dos meus comandos bash funcionaria porque a variável $ PATH se esvaziou. Eu tentei muitas coisas antes de perceber qual era o problema.

Então, descompacte tudo que ainda não consigo inicializar. Consegui fazer o grub rescue, após o qual segui as instruções on-line para:

root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]

Depois do qual meu linux inicializa parcialmente, mas me dá os seguintes erros:

Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.

Eu tentei reparar o sistema de arquivos, eu inicializei a partir de 3 diferentes discos LiveCDs / Rescue, executei o reparo de inicialização a partir de 2 diferentes dicsc. Eu forcei fscks ...

Estou realmente sem idéias e PRECISO que esse servidor seja inicializado pelo menos para que eu possa recuperar meus bancos de dados SQL. Estou desesperado por ajuda, vou pagar, se necessário.

Venho espreitando fóruns há 3 dias seguidos o dia todo para encontrar uma solução possível e ainda estou no mesmo ponto ... Ajuda por favor?

Dexiriano
fonte
3
se eles são db do mysql, você não precisa necessariamente inicializar; nesse caso, eu ia tentar montar a unidade como um escravo e copiar sobre o var / lib / mysql diretório /
user16081-JoeT
8
Instalação limpa em novos dispositivos de armazenamento. Monte a unidade antiga, transfira os dados conforme necessário. Aposto que o reparo não valerá o esforço.
Zoredache
7
Este é o ponto em que você restaura o backup. E lembre-se de não executar ações não privilegiadas como usuário root na próxima vez.
Magellan
1
because of version differences,reinstale com a mesma versão exata. we have corruption issues,seus dados podem estar corrompidos. Reparar o sistema para que ele possa ser inicializado não ajudará se os dados tiverem sido lixeira. Se o seu comando gzip compactou os arquivos do banco de dados enquanto o banco de dados estava sendo usado corrompido, parece inevitável.
Zoredache
5
Se o seu software de banco de dados estava em execução enquanto você executava esses comandos, talvez não seja possível recuperar os bancos de dados. O Gzip teria felizmente compactado o arquivo, depois o desvinculou. Mas o seu software de banco de dados ainda tinha o arquivo aberto e estava comprometendo as alterações. Assim que parou, o arquivo foi removido.
toppledwagon

Respostas:

8

Isso dependerá se os sistemas de arquivos foram reparados o suficiente para que você possa montar essas partições a partir de um LiveCD. Não se preocupe em tentar inicializar o sistema ainda. Primeiro, monte as partições e descompacte todos os arquivos .gz. Isso fornecerá cópias de trabalho dos binários init e do sistema. Então você pode usar o grub para reparar o setor de inicialização. Em seguida, inicialize no modo de usuário único e fsck o sistema de arquivos novamente. Se isso funcionar, você terá um sistema em execução. Você também terá um monte de arquivos descompactados (como páginas de manual) que realmente devem ser compactados, mas é melhor do que ter um sistema não inicializável.

Se você não pode montar as partições de um LiveCD, infelizmente está sem sorte. Nada recuperará seu sistema nesse momento.

Michael Martinez
fonte
1
Isso realmente funcionou como um encanto ... não posso agradecer o suficiente por isso! O MySQL não inicializou, mas eu não fiz o --force fsck ainda, espero que conserte! OBRIGADO
Dexirian
1
Impressionante. Ainda bem que ajudou.
Michael Martinez
9

A primeira coisa que eu tentaria é executar um ambiente LiveCD e apenas tentar descompactar tudo, esperando que retornasse o sistema a um estado inicializável. Nota: Eu ficaria preocupado com a possível corrupção de dados se o processo gzip original fosse interrompido.

Caso contrário, eu tentaria migrar o banco de dados para um novo sistema, conforme sugerido por outros, mas como você encontrou, pode haver problemas de configuração e dependência com muita mão-de-obra que precisam ser resolvidos individualmente.

Bob Barker
fonte
Pergunta rápida: Não temos certeza do servidor de banco de dados SQL antigo e o servidor mais recente está usando uma distribuição Linux diferente. O servidor mais recente está executando o CentOS com WHM, e o servidor antigo era Debian / Unbuntu. Portanto, minha pergunta é: como posso migrar efetivamente meus bancos de dados SQL sem corrupção e outros enfeites?
Dexirian
6

O consenso geral aqui, de que você deve apenas montar o disco em um sistema operacional e resgatar seus arquivos, não está errado. É a coisa sensata a se fazer. Mas o outro lado é mais divertido e muito educativo. Aprendi muito enquanto lutava para sair de situações confusas onde outras pessoas simplesmente desistiam e reinstalavam do zero. (Não em um servidor em que outras pessoas estejam dependendo ...)

De qualquer forma, até agora você tem um initramfs (initrd) que é executado. Esse é um bom começo. Mas não pode concluir a transferência para o init porque o init é agora, init.gztalvez? Para progredir, ajudaria a saber exatamente qual distribuição do Linux você possui, para que possamos procurar quais ferramentas estão disponíveis em seu initramfs para uso emergencial.

As mensagens de erro que você apresentou parecem que poderiam ter vindo do initramfs do Debian. Se for o Debian, você deve ter recebido um (initramfs)prompt de shell na próxima linha após o último erro. Se você fez isso, deve analisar o que está acontecendo com essas montagens com falha. está /root/devfaltando? ( /rooté onde o seu root fs normal deve ser montado durante a execução do initramfs)

Se você não recebeu o prompt do shell, o que veio depois No init found. Try passing init= bootarg.será interessante. Mesmo se não fosse nada além de um cursor piscando, isso é uma pista. Se parecer totalmente congelado, tente obter algumas informações sobre quais processos ainda existem usando magic sysrq ou Ctrl + ScrollLock.

O initramfs do Debian também permite que você solicite um shell em alguns marcos especiais adicionando um break=parâmetro à linha de comando do kernel. Por exemplo, para obter um shell antes da Running /scripts/init-bottomlinha, use break=bottom.

Além disso: não sei como o findcomando poderia ter compactado o compactamento de todos os arquivos ... parece correto para mim com o objetivo de selecionar arquivos entre 180 e 400 dias.


fonte
Quando eu faço um ls sob / root, não há nada encontrado. Então eu posso levá-lo a montagem fs não está bem na inicialização? Onde eu posso mudar isso?
Dexirian
1
@Dexirian para que se obter um shell prompt de (você tem que usar break=bottom?) ... sim, no momento em que ele está tentando montar /root/deve /root/proce /root/sys, /rootdeve ser o sistema de arquivos raiz real. Deve ter havido uma mensagem de erro anteriormente, sobre a falha em montá-lo. Você incluiu um root=parâmetro na linha de comando do kernel? Minha memória está um pouco confusa neste ponto, mas acho que o root (hd0,0)just diz ao grub onde encontrar seus arquivos de suporte, e você ainda precisa informar ao kernel separadamente onde está a raiz.
Sim, eu usei root =, kernel = initrd = e setup =, não precisei usar break = bottom. E eu não detectar uma mensagem anterior falhou montar, uma vez que rola muito rapidamente
Dexirian
@Dexirian O scrollback do console está disponível? Shift + PgUp. E você pode montá-lo a partir do (initramfs) prompt, algo assim mount -r /dev/sda1 /root? cat /proc/partitionspara ver quais discos estão disponíveis.
1
Bem-vindo ao mundo da administração do sistema.
22813 Michael Martinez