É possível restaurar um banco de dados mysql da pasta / var / lib / mysql / database?

4

Devido a um pesadelo que de alguma forma se tornou real, minha instalação do mysql acabou sendo reinstalada. Eu não pude iniciar o mysql antes da reinstalação, então eu não pude usar o mysqldump para fazer um backup apropriado. Eu fiz no entanto copiar / var / lib / mysql para um lugar seguro. Tentando rsync as pastas do banco de dados de volta em seus locais antigos não funciona - assim funciona, mas depois wordpress tem um colapso, mesmo com as permissões corrigidas. Se eu criar esse banco de dados manualmente e então rsync ele, o mysql não será iniciado.

É possível restaurar esta pasta de alguma forma?

EDIT: Agora eu tenho isso para que eu possa ver a pasta enquanto no prompt do mysql. Eu posso usar esse banco de dados, mas tentando SELECT * FROM wp_posts; me dá

 mysql> SELECT * FROM wp_posts;
 ERROR 1146 (42S02): Table 'alfheimwp.wp_posts' doesn't exist

Apesar do fato de que

mysql> SHOW TABLES;
+-------------------------------------------------+
| Tables_in_alfheimwp                             |
+-------------------------------------------------+
| wp_bp_activity                                  |
| wp_bp_activity_meta                             |
| wp_bp_friends                                   |
| wp_bp_groups                                    |
| wp_bp_groups_groupmeta                          |
| wp_bp_groups_members                            |
| wp_bp_messages_messages                         |
| wp_bp_messages_meta                             |
| wp_bp_messages_notices                          |
| wp_bp_messages_recipients                       |
| wp_bp_notifications                             |
| wp_bp_notifications_meta                        |
| wp_bp_user_blogs                                |
| wp_bp_user_blogs_blogmeta                       |
| wp_bp_xprofile_data                             |
| wp_bp_xprofile_fields                           |
| wp_bp_xprofile_groups                           |
| wp_bp_xprofile_meta                             |
| wp_commentmeta                                  |
| wp_comments                                     |
| wp_links                                        |
| wp_options                                      |
| wp_postmeta                                     |
| wp_posts                                        |
| wp_sg_action                                    |
| wp_sg_config                                    |
| wp_sg_schedule                                  |
| wp_signups                                      |
| wp_term_relationships                           |
| wp_term_taxonomy                                |
| wp_termmeta                                     |
| wp_terms                                        |
| wp_ucare_logs                                   |
| wp_usermeta                                     |
| wp_users                                        |
| wp_woocommerce_api_keys                         |
| wp_woocommerce_attribute_taxonomies             |
| wp_woocommerce_downloadable_product_permissions |
| wp_woocommerce_log                              |
| wp_woocommerce_order_itemmeta                   |
| wp_woocommerce_order_items                      |
| wp_woocommerce_payment_tokenmeta                |
| wp_woocommerce_payment_tokens                   |
| wp_woocommerce_sessions                         |
| wp_woocommerce_shipping_zone_locations          |
| wp_woocommerce_shipping_zone_methods            |
| wp_woocommerce_shipping_zones                   |
| wp_woocommerce_tax_rate_locations               |
| wp_woocommerce_tax_rates                        |
| wp_wpsp_agent_settings                          |
| wp_wpsp_attachments                             |
| wp_wpsp_canned_reply                            |
| wp_wpsp_catagories                              |
| wp_wpsp_custom_fields                           |
| wp_wpsp_custom_priority                         |
| wp_wpsp_custom_status                           |
| wp_wpsp_faq                                     |
| wp_wpsp_faq_catagories                          |
| wp_wpsp_panel_custom_menu                       |
| wp_wpsp_ticket                                  |
| wp_wpsp_ticket_thread                           |
+-------------------------------------------------+
61 rows in set (0.00 sec)

Então, obviamente, há algo sobre esse banco de dados que o mysql está faltando, no entanto, esta é exatamente a mesma versão do mysql que eu estava usando antes.

EDIT 2: Finalmente começando a chegar em algum lugar, mas eu estou no fundo do buraco do coelho e eu preciso de um ajudante innodb aqui ... agora o mysql não consegue começar com isso:

2017-10-13T01:55:16.625761Z 0 [ERROR] [FATAL] InnoDB: Tablespace id is 1121 in the data dictionary but in file ./mysql/help_relation.ibd it is 6!

O motivo pelo qual não consegui ler as tabelas foi porque não restaurei os arquivos innodb na pasta mail / var / lib / mysql. Agora que tenho, no entanto, esses IDs de tablespace não estão alinhados. Não tenho ideia de como editá-las ou se é mesmo assim que se resolve. Eu gostaria que houvesse uma maneira automatizada de corrigir isso!

    
por Aurelius 13.10.2017 / 00:08

1 resposta

1

Tudo bem, aqui vai. Então, você precisa fazer uma limpeza completa do mysql. Não se preocupe em tentar mudar para o mariadb neste ponto, ele simplesmente não funcionará (não é possível alterar a senha do root apesar de deletar todos os arquivos relacionados ao mysql).

[EDIT: Mais tarde, percebi que isso era porque eu não estava executando o mariadb como root. Por algum motivo, se você tiver o mariadb instalado, deverá iniciar um prompt com sudo mysql -u root -p . Então, em teoria, o mariadb deve funcionar também para esse processo.]

Você precisa fazer uma nova instalação do servidor mysql. Comece removendo tudo relacionado ao mysql com

sudo apt-get purge mysql-server* mariadb*

Em seguida, remova todas as pastas relacionadas ao mysql (certifique-se de ter um backup seguro das pastas / var / lib / mysql).

sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
sudo rm -rf /var/log/mysql

Em seguida, reinstale o servidor mysql. Se falhar com o erro de dependência boba, faça

ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d

(ou o contrário, não me lembro agora), em seguida, execute

sudo apt-get install mysql-server 

novamente e deixe terminar a configuração. Pare o servidor mysql com

sudo systemctl stop mysql

Em seguida, copie APENAS as pastas do banco de dados (e todo o seu conteúdo) de volta para / var / lib / mysql. Em seguida, copie também ib * para / var / lib / mysql (estes são o dicionário innodb e outros arquivos).

sudo rsync -r <backedupfolder>/ib* /var/lib/mysql/

Certifique-se de fazer

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

Edite /etc/mysql/my.cnf e adicione innodb_force_recovery=5 à seção [mysqld] (talvez seja necessário adicionar [mysqld]). Agora inicie o mysql novamente com systemctl start mysql . Se você olhar para /var/log/mysql/error.log você ainda pode ver erros, no entanto tente entrar em um prompt com

mysql -u root -p

Se você conseguir iniciá-lo, ótimo. Se não, dê uma olhada no systemctl status mysql.service e veja o que ele diz. Pode ser uma questão de permissão. Se você finalmente conseguiu entrar em um prompt, faça imediatamente

mysqldump -u root -p <databasename> > database.sql 

para que possamos obter um despejo limpo desse banco de dados. Agora que temos um dump limpo dos bancos de dados importantes, precisamos refazer os primeiros passos (pelo menos eu fiz, para ter certeza ... Eu fui capaz de iniciar o WordPress neste momento, mas não consegui logar dentro). Então refaça os primeiros passos de limpeza, remova todos os diretórios mysql depois de desinstalar o mysql-server. Reinstale, mas desta vez basta executar

 mysql -u root -p <databasename> < database.sql

E você deveria ser de ouro! Talvez seja necessário recriar os bancos de dados ( CREATE DATABASE databasename; ). Não se esqueça de recriar o usuário que possuía esse banco de dados antes (se você tiver esquecido, procure em / var / www / html / wp-config. php ou onde quer que seu wp-config.php é para os detalhes).

    
por Aurelius 13.10.2017 / 05:36