/ var / lib / mysql / database 폴더에서 mysql 데이터베이스를 복원 할 수 있습니까?


9

어떻게 든 현실이 된 악몽으로 인해 mysql 설치가 다시 설치되었습니다. 다시 설치하기 전에 mysql을 시작할 수 없으므로 mysqldump를 사용하여 적절한 백업을 수행 할 수 없습니다. 그러나 / var / lib / mysql을 안전한 곳에 복사했습니다. 데이터베이스 폴더를 이전 위치로 다시 동기화하려고 시도하면 작동하지 않습니다. 물론 일종의 작동하지만 워드 프레스는 권한이 수정 되어도 붕괴됩니다. 해당 데이터베이스를 수동으로 만든 다음 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가 정렬되지 않습니다. 나는 그것들을 편집하는 방법이나 그것을 해결하는 방법인지 모른다. 이 문제를 해결하는 자동화 된 방법이 있었으면 좋겠습니다.

답변:


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;) 전에 해당 데이터베이스를 소유 한 사용자를 다시 작성하는 것을 잊지 마십시오. 그렇지 않으면 wp-config.php가 자세한 내용입니다).


1
테이블 당 파일과 innodb 엔진을 살펴보십시오. ;-)
s1mmel

1
고마워요! 그러나 innodb_force_recovery=6MySQL 프롬프트에 들어가려면 /etc/mysql/my.cnf 에서 설정해야했습니다 .
손님

1
정말 고마워!! 서버를 시작하기 위해 로그 파일을 두 번 삭제해야했지만 그 후에 작동했습니다!
Eric F.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.