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


9

どういうわけか現実になった悪夢のために、私のmysqlインストールは最終的に再インストールされました。再インストール前にmysqlを開始できなかったため、mysqldumpを使用して適切なバックアップを実行できませんでした。ただし、/ var / lib / mysqlを安全な場所にコピーしました。データベースフォルダーを元の場所にrsyncしようとしても機能しません。まあ、それは一種の機能ですが、アクセス許可が修正されていても、ワードプレスはメルトダウンします。そのデータベースを手動で作成してから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ファイルをメールの/ var / lib / mysqlフォルダーに復元しなかったためです。しかし、今では、これらのテーブルスペースIDが揃っていません。私はそれらをどのように編集するのか、それがそれを解決する方法でさえあるのか分かりません。これらを修正する自動化された方法があればいいのに!

回答:


6

では、いきます。したがって、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]の追加が必要になる場合があります)。mysqlをもう一度起動しsystemctl start 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が詳細です。


1
テーブルごとのファイルとinnodbエンジンを見てみましょう。好きかもしれません;-)
s1mmel

1
どうもありがとう!しかしinnodb_force_recovery=6、MySQLプロンプトに入るには/etc/mysql/my.cnf を設定する必要がありました。
ゲスト

1
どうもありがとう!!サーバーを起動するには、ログファイルを数回削除する必要がありましたが、その後は正常に機能しました。
エリックF.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.