Возможно ли восстановить базу данных mysql из папки / var / lib / mysql / database?

Из-за кошмара, который каким-то образом стал реальным, моя установка mysql оказалась переустановленной. Я не мог запустить mysql перед повторной установкой, поэтому я не мог использовать mysqldump для создания правильной резервной копии. Однако я скопировал / var / lib / mysql в безопасное место. Попытка rsync папок базы данных обратно в их старые местоположения не работает - ну, это вроде работает, но тогда Wordpress имеет кризис, даже с исправлениями. Если я создаю эту базу данных вручную, а затем rsync, mysql не запустится.

Возможно ли восстановить эту папку?

EDIT: теперь у меня есть это, чтобы я мог см. папку в приглашении 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, что и я используя до этого.

EDIT 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. Теперь, когда у меня есть, эти идентификаторы табличного пространства не выстраиваются. Я понятия не имею, как их редактировать или если это даже способ решить эту проблему. Хотелось бы, чтобы был автоматизированный способ их исправить!

4
задан 13 October 2017 в 04:58

3 ответа

Хорошо, здесь. Итак, вам нужно выполнить полную очистку mysql. Не утруждайте себя даже попыткой переключиться на mariadb в этот момент, он просто не будет работать (не удалось изменить пароль root, несмотря на удаление каждого файла, связанного с mysql).

[EDIT: Я позже понял, что это было потому, что я не запускал mariadb как root. По какой-то причине, если у вас установлен mariadb, вы должны запустить приглашение с помощью sudo mysql -u root -p. Поэтому теоретически mariadb должен работать и для этого процесса.]

Вам нужно сделать новую установку mysql-сервера. Начните с удаления всего 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-сервер. Если это ошибка с ошибкой глупой зависимости, сделайте

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

(или наоборот, не можете вспомнить сейчас), затем снова запустите

sudo apt-get install mysql-server 

и дайте ей закончить настройка. Остановите сервер mysql с помощью

sudo systemctl stop mysql

Затем скопируйте JUST папки базы данных (и весь их контент) обратно в / 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] (возможно, вам потребуется добавить [туздЫ]). Теперь снова запустите mysql с помощью systemctl start mysql. Если вы посмотрите на /var/log/mysql/error.log, вы все равно можете увидеть ошибки, однако попробуйте войти в подсказку с помощью

mysql -u root -p

. Если вы можете запустить его, отлично. Если нет, посмотрите еще раз на статус systemctl mysql.service и посмотрите, что он говорит. Это может быть вопрос разрешений. Если вам наконец удалось войти в приглашение, немедленно сделайте

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

, чтобы мы могли получить чистый дамп этой базы данных. Теперь, когда у нас есть чистый дамп важных баз данных, нам нужно повторить первые несколько шагов (по крайней мере, я это сделал), я был в состоянии запустить WordPress на этом этапе, но я не мог зарегистрировать в). Поэтому повторите первые несколько шагов очистки, удалив все директории mysql после удаления mysql-сервера. Переустановите, но на этот раз просто запустите

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

И вы должны быть золотыми! Возможно, вам придется заново создать базы данных (CREATE DATABASE databasename;). Не забудьте повторно создать пользователя, который ранее принадлежал этой базе (если вы забыли, загляните в свой / var / www / html / wp-config. php или где-либо еще ваш wp-config.php для деталей).

1
ответ дан 22 May 2018 в 17:37
  • 1
    взгляните на файлы за таблицы и движок innodb, вам может понравиться ;-) – s1mmel 18 May 2018 в 22:54

Хорошо, здесь. Итак, вам нужно выполнить полную очистку mysql. Не утруждайте себя даже попыткой переключиться на mariadb в этот момент, он просто не будет работать (не удалось изменить пароль root, несмотря на удаление каждого файла, связанного с mysql).

[EDIT: Я позже понял, что это было потому, что я не запускал mariadb как root. По какой-то причине, если у вас установлен mariadb, вы должны запустить приглашение с помощью sudo mysql -u root -p. Поэтому теоретически mariadb должен работать и для этого процесса.]

Вам нужно сделать новую установку mysql-сервера. Начните с удаления всего 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-сервер. Если это ошибка с ошибкой глупой зависимости, сделайте

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

(или наоборот, не можете вспомнить сейчас), затем снова запустите

sudo apt-get install mysql-server

и дайте ей закончить настройка. Остановите сервер mysql с помощью

sudo systemctl stop mysql

Затем скопируйте JUST папки базы данных (и весь их контент) обратно в / 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] (возможно, вам потребуется добавить [туздЫ]). Теперь снова запустите mysql с помощью systemctl start mysql. Если вы посмотрите на /var/log/mysql/error.log, вы все равно можете увидеть ошибки, однако попробуйте войти в подсказку с помощью

mysql -u root -p

. Если вы можете запустить его, отлично. Если нет, посмотрите еще раз на статус systemctl mysql.service и посмотрите, что он говорит. Это может быть вопрос разрешений. Если вам наконец удалось войти в приглашение, немедленно сделайте

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

, чтобы мы могли получить чистый дамп этой базы данных. Теперь, когда у нас есть чистый дамп важных баз данных, нам нужно повторить первые несколько шагов (по крайней мере, я это сделал), я был в состоянии запустить WordPress на этом этапе, но я не мог зарегистрировать в). Поэтому повторите первые несколько шагов очистки, удалив все директории mysql после удаления mysql-сервера. Переустановите, но на этот раз просто запустите

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

И вы должны быть золотыми! Возможно, вам придется заново создать базы данных (CREATE DATABASE databasename;). Не забудьте повторно создать пользователя, который ранее принадлежал этой базе (если вы забыли, загляните в свой / var / www / html / wp-config. php или где-либо еще ваш wp-config.php для деталей).

1
ответ дан 18 July 2018 в 05:23

Хорошо, здесь. Итак, вам нужно выполнить полную очистку mysql. Не утруждайте себя даже попыткой переключиться на mariadb в этот момент, он просто не будет работать (не удалось изменить пароль root, несмотря на удаление каждого файла, связанного с mysql).

[EDIT: Я позже понял, что это было потому, что я не запускал mariadb как root. По какой-то причине, если у вас установлен mariadb, вы должны запустить приглашение с помощью sudo mysql -u root -p. Поэтому теоретически mariadb должен работать и для этого процесса.]

Вам нужно сделать новую установку mysql-сервера. Начните с удаления всего 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-сервер. Если это ошибка с ошибкой глупой зависимости, сделайте

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

(или наоборот, не можете вспомнить сейчас), затем снова запустите

sudo apt-get install mysql-server

и дайте ей закончить настройка. Остановите сервер mysql с помощью

sudo systemctl stop mysql

Затем скопируйте JUST папки базы данных (и весь их контент) обратно в / 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] (возможно, вам потребуется добавить [туздЫ]). Теперь снова запустите mysql с помощью systemctl start mysql. Если вы посмотрите на /var/log/mysql/error.log, вы все равно можете увидеть ошибки, однако попробуйте войти в подсказку с помощью

mysql -u root -p

. Если вы можете запустить его, отлично. Если нет, посмотрите еще раз на статус systemctl mysql.service и посмотрите, что он говорит. Это может быть вопрос разрешений. Если вам наконец удалось войти в приглашение, немедленно сделайте

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

, чтобы мы могли получить чистый дамп этой базы данных. Теперь, когда у нас есть чистый дамп важных баз данных, нам нужно повторить первые несколько шагов (по крайней мере, я это сделал), я был в состоянии запустить WordPress на этом этапе, но я не мог зарегистрировать в). Поэтому повторите первые несколько шагов очистки, удалив все директории mysql после удаления mysql-сервера. Переустановите, но на этот раз просто запустите

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

И вы должны быть золотыми! Возможно, вам придется заново создать базы данных (CREATE DATABASE databasename;). Не забудьте повторно создать пользователя, который ранее принадлежал этой базе (если вы забыли, загляните в свой / var / www / html / wp-config. php или где-либо еще ваш wp-config.php для деталей).

1
ответ дан 24 July 2018 в 18:19

Другие вопросы по тегам:

Похожие вопросы: