Processo de recuperação de dados Mysql após reinstalar o sistema Ubuntu

1. Visão Geral

Ubuntu 16.04-server reinstalado para o servidor . Alguns dos dados anteriores foram perdidos. Felizmente, o disco rígido não foi formatado. Pelo menos há esperança de restaurar os dados do Mysql

2. Condições existentes

  • Monte o disco rígido antigo no computador e encontre os arquivos no diretório do banco de dados : O diretório do banco de dados padrão é: / var / lib / mysql O
    diretório de montagem do disco rígido é: / media / user / f101a309-d55a-4a50-8e1c-d63534146b6f
$ ll /media/user/f101a309-d55a-4a50-8e1c-d63534146b6f/var/lib/mysql
-rw-r-----  1   122 vboxusers       56 9月   6  2019 auto.cnf
-rw-------  1   122 vboxusers     1680 11月 19 06:09 ca-key.pem
-rw-r--r--  1   122 vboxusers     1112 11月 19 06:09 ca.pem
-rw-r--r--  1   122 vboxusers     1112 11月 19 06:09 client-cert.pem
-rw-------  1   122 vboxusers     1676 11月 19 06:09 client-key.pem
-rw-r--r--  1   122 vboxusers        0 2月  25 09:40 debian-5.7.flag
drwxr-x---  2   122 vboxusers     4096 9月  17  2019 FactoryTest/
-rw-r-----  1   122 vboxusers      750 4月   1 09:07 ib_buffer_pool
-rw-r-----  1   122 vboxusers 79691776 4月   1 09:07 ibdata1
-rw-r-----  1   122 vboxusers 50331648 4月   1 09:07 ib_logfile0
-rw-r-----  1   122 vboxusers 50331648 9月   6  2019 ib_logfile1
drwxr-x---  2   122 vboxusers     4096 10月 22 15:27 kanboard/
drwxr-x---  2   122 vboxusers     4096 2月  25 09:41 mysql/
-rw-r--r--  1   122 vboxusers        6 2月  25 09:41 mysql_upgrade_info
drwxr-x---  2   122 vboxusers     4096 2月  25 09:40 performance_schema/
-rw-------  1   122 vboxusers     1676 11月 19 06:09 private_key.pem
-rw-r--r--  1   122 vboxusers      452 11月 19 06:09 public_key.pem
-rw-r--r--  1   122 vboxusers     1112 11月 19 06:09 server-cert.pem
-rw-------  1   122 vboxusers     1680 11月 19 06:09 server-key.pem
drwxr-x---  2   122 vboxusers    12288 11月 19 06:09 sys/
drwxr-x---  2   122 vboxusers    12288 10月 22 10:18 zentao/

O FactoryTest do banco de dados que precisa ser restaurado , portanto, não importa como está compactado, salve-o primeiro e jogue-o no servidor para tentar primeiro.

3. Tentativas cruas

  • Pare mysql /etc/init.d/mysql stop
  • Solte os arquivos encontrados acima diretamente no diretório mysql correspondente ao servidor e modifique as permissões de arquivo correspondentes
  • Inicie mysql /etc/init.d/mysql start
  • A tentativa de acessar e ler os dados falhou ... realmente não era tão simples.

Pare o banco de dados e exclua a pasta para a qual a tentativa violenta anterior de copiar


4. Depois do Google, consulte a referência. 1

4.1 Formulário de recuperação

  • Precisa usar a ferramenta mysqlfrm
  • Se não for encontrado, basta instalar um sudo apt install mysql-utilities
  • O efeito da execução do comando mysqlfrm --diagnostic FactoryTest / Wifi.frm
# WARNING: Cannot generate character set or collation names without the --server option.
# CAUTION: The diagnostic mode is a best-effort parse of the .frm file. As such, it may not identify all of the components of the table correctly. This is especially true for damaged files. It will also not read the default values for the columns and the resulting statement may not be syntactically correct.
# Reading .frm file for FactoryTest/Wifi.frm:
# The .frm file is a TABLE.
# CREATE TABLE Statement:

CREATE TABLE `FactoryTest`.`Wifi` (
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `ssid` varchar(32) NOT NULL, 
  `pwd` varchar(32) NOT NULL, 
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

#...done.
  • Sai o comando da consulta da tabela, o próximo passo é simples, copie e cole, após a execução, a tabela está toda aí.

4.2 Restaurar dados

  • Digite mysql e execute o seguinte comando (todas as tabelas):
ALTER TABLE example_table DISCARD TABLESPACE;
  • Após a execução, os arquivos .idb no diretório do banco de dados desaparecem
  • Execute a cópia de força bruta acima e copie apenas o arquivo .idb : sudo cp -rn. / Var / lib / mysql / FactoryTest /
  • Lembre-se de modificar as permissões do arquivo: sudo chown mysql: mysql -R / var / lib / mysql / FactoryTest
  • Em seguida, digite mysql para executar instruções para cada tabela
ALTER TABLE example_table IMPORT TABLESPACE;

executar

5. Referência

Acho que você gosta

Origin blog.csdn.net/ansondroider/article/details/105292400
Recomendado
Clasificación