どういうわけか現実になった悪夢のために、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は並んでいません。それらをどのように編集するか、それがそれを解決する方法であるかどうかはわかりません。これらを自動的に修正する方法があればいいのに!
さて、ここに行きます。したがって、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が詳細を確認します)。