AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 330567
Accepted
VirtualVoid
VirtualVoid
Asked: 2023-08-23 05:16:20 +0800 CST2023-08-23 05:16:20 +0800 CST 2023-08-23 05:16:20 +0800 CST

Restaurando backup bruto antigo no MariaDB 10.8.1+ sem ib_logfile0

  • 772
Esta questão foi migrada do Stack Overflow porque pode ser respondida no Stack Exchange dos Administradores de Banco de Dados. Migrado há 4 dias .

Tentei restaurar um antigo backup bruto de bancos de dados (datadir inteiro) no MariaDB 10.11.5, mas ele não inicializou. Depois disso, encontrei as seguintes linhas no log:

[ERROR] InnoDB: File ./ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[Note] InnoDB: Starting shutdown...
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[Note] Plugin 'FEEDBACK' is disabled.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

Por mais de uma década, tenho excluído arquivos de log em servidores MySQL e MariaDB para ajustar innodb-log-file-sizeou fazer backups brutos e economizar espaço. Na próxima vez que o servidor foi reiniciado, eles foram recriados automaticamente. Mas de repente, não desta vez. E tudo porque a partir da versão MariaDB 10.8.1, a presença de um ib_logfile0tornou-se obrigatória devido a múltiplas alterações ( MDEV-27199 ) e ( MDEV-14425 ). Não é mais criado automaticamente, mas estritamente necessário.

Tentei criar um arquivo de log vazio, mas aparentemente não funcionou e resultou em um erro:

[ERROR] InnoDB: ib_logfile0 is empty, and LSN is unknown.
[ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption

Depois de estudar as tarefas do jira, tive a forte sensação de que não havia como "regenerar" o arquivo de log como antes. Então, minha pergunta principal é: existe alguma outra saída além de restaurar backups em uma versão mais antiga do MariaDB e fazer backup deles corretamente para versões mais recentes?

E quanto à criação desses backups "brutos" nas versões mais recentes? Eu li que em vez de excluir o log, agora você deve reduzir o tamanho do log para economizar espaço em disco. Provavelmente, agora é a única maneira?

PS É importante notar que a partir da versão 10.8.1 o tamanho do arquivo de log muda automaticamente quando você o altera na configuração. E a partir da versão 10.9.0 - mesmo em tempo de execução ( MDEV-27812 ).

mariadb
  • 1 1 respostas
  • 15 Views

1 respostas

  • Voted
  1. Best Answer
    danblack
    2023-08-24T07:32:38+08:002023-08-24T07:32:38+08:00

    TLDR; Você pode ter perdido dados ao excluir arquivos ib_logofile*. Não os exclua sem que apareçam na documentação oficial da versão que está sendo usada e siga isso ao pé da letra.

    A razão pela qual ib_logfile*os arquivos existem não é porque o MariaDB queria desperdiçar seu espaço, mas porque eles eram necessários para manter seus dados. É por isso que começar com o ib_logfile0foi tornado obrigatório, para capturar usuários realizando práticas perigosas.

    Sem esse redo log, os dados gravados, mas não liberados, seriam perdidos e, potencialmente, seus backups perderiam dados alterados recentemente por causa disso. Essa liberação é o que mariadb-backup --prepare(também obrigatório) faz para garantir que os dados possam ser restaurados (não tenho certeza se isso pode ser usado na cópia bruta, mas isso exigiria seus arquivos excluídos).

    Suas opções agora começam potencialmente sem dados são:

    • Inicie o MariaDB com 10.7.8 , a última versão da agora desatualizada série 10.7 e desligue de forma limpa (contêineres são uma boa maneira de fazer isso - podman run -v /place/of/datadir:/var/lib/mysql:Z mariadb:10.7).
    • inicie no modo innodb_read_only (de MDEV-27199 ), faça um dump lógico dos dados e restaure para uma nova versão.
    • comece com innodb_force_recovery=6 .

    Dependendo da versão do MariaDB de onde veio o seu backup, há limites para a versão anterior do MariaDB que pode começar com esses dados. Veja as notas da página KB sobre downgrade .

    • 1

relate perguntas

  • Erro de cabeçalho do MariaDB

  • Erro 1046 Mariadb: nenhum banco de dados selecionado

  • Você ainda usa o MyISAM ou prefere o mecanismo de armazenamento Aria?

  • Como posso melhorar minha instrução SQL com resultados semanais com semana começando na quinta-feira ou em qualquer outro dia da semana?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve