web-dev-qa-db-ja.com

/ var / lib / mysql / databaseフォルダーからmysqlデータベースを復元することは可能ですか?

どういうわけか現実になった悪夢のために、mysqlのインストールは最終的に再インストールされました。再インストールの前にmysqlを起動できなかったため、適切なバックアップを行うためにmysqldumpを使用できませんでした。ただし、/ var/lib/mysqlを安全な場所にコピーしました。データベースフォルダーを古い場所に再同期しようとしてもうまくいきません。うまくいきますが、wordpressは、権限が修正されていてもメルトダウンします。そのデータベースを手動で作成してからrsyncすると、mysqlが起動しません。

このフォルダを何らかの形で復元することは可能ですか?

編集:mysqlプロンプトでフォルダーを見ることができるようになりました。私はそのデータベースを使用できますが、SELECT * FROM wp_postsを試します。私にくれます

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

それにもかかわらず

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)

このデータベースには明らかにmysqlが欠落しているものがありますが、これは以前使用していたmysqlとまったく同じバージョンです。

編集2:最終的にどこかに到達し始めましたが、私はウサギの穴の奥深くにいるので、ここにinnodbヘルパーが必要です...今mysqlはこれで開始できません:

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!

テーブルから読み取れなかった理由は、innodbファイルをmail/var/lib/mysqlフォルダーに復元しなかったためです。しかし、今ではこれらのテーブルスペースIDは並んでいません。それらをどのように編集するか、それがそれを解決する方法であるかどうかはわかりません。これらを自動的に修正する方法があればいいのに!

8
Aurelius

さて、ここに行きます。したがって、mysqlを完全にパージする必要があります。この時点でmariadbに切り替えようとしても気にしないでください。単に機能しません(mysqlに関連するすべてのファイルを削除してもルートパスワードを変更できません)。

[編集:後でmariadbをルートとして実行していないためだと気付きました。何らかの理由で、mariadbがインストールされている場合は、Sudo mysql -u root -pでプロンプトを起動する必要があります。したがって、理論上、mariadbはこのプロセスでも機能するはずです。]

Mysql-serverの新規インストールが必要です。 mysqlに関連するすべてを削除することから始めます

Sudo apt-get purge mysql-server* mariadb*

次に、すべてのmysql関連のフォルダーを削除します(/ var/lib/mysqlフォルダー全体の安全なバックアップが既にあることを確認してください)。

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

次に、mysql-serverを再インストールします。愚かな依存関係エラーで失敗した場合は、

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

(または逆に、今は思い出せない)その後実行する

Sudo apt-get install mysql-server 

再度、セットアップを完了させます。 mysqlサーバーを停止します

Sudo systemctl stop mysql

次に、データベースフォルダー(およびそのすべてのコンテンツ)を/ var/lib/mysqlにコピーして戻します。次に、ib *も/ var/lib/mysqlにコピーします(これらはinnodb辞書と他のファイルです)。

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

確認してください

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

/etc/mysql/my.cnfを編集して、innodb_force_recovery=5セクションに[mysqld]を追加します([mysqld]を追加する必要がある場合があります)。 systemctl start mysqlを使用してmysqlを再度起動します。 /var/log/mysql/error.logを見るとエラーが表示される場合がありますが、次のプロンプトを表示してみてください。

mysql -u root -p

起動できる場合は、素晴らしいです。そうでない場合は、systemctl status mysql.serviceをもう一度見て、その内容を確認してください。それは許可の問題かもしれません。最終的にプロンプ​​トに入ることができた場合、すぐに

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

そのため、そのデータベースのクリーンダンプを取得できます。重要なデータベースのクリーンダンプができたので、最初のいくつかの手順をやり直す必要があります(少なくとも私は確認しました...この時点でWordPressを起動できましたしかし、ログインできませんでした)。したがって、最初のいくつかのクリーニング手順をやり直し、mysql-serverをアンインストールした後、すべてのmysqlディレクトリを削除します。再インストールしますが、今回は実行するだけです

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

そして、あなたは黄金になるはずです!データベースの再作成が必要な場合があります(CREATE DATABASE databasename;)以前にそのデータベースを所有していたユーザーを再作成することを忘れないでください(忘れた場合は、/ var/www/html/wp- config.phpまたは他の場所でwp-config.phpが詳細を確認します)。

5
Aurelius