เป็นไปได้หรือไม่ที่จะกู้คืนฐานข้อมูล mysql จากโฟลเดอร์ / var / lib / mysql / database


9

เนื่องจากฝันร้ายที่เกิดขึ้นจริงการติดตั้ง mysql ของฉันจึงถูกติดตั้งใหม่ ฉันไม่สามารถเริ่ม mysql ก่อนการติดตั้งดังนั้นฉันจึงไม่สามารถใช้ mysqldump เพื่อทำการสำรองข้อมูลได้อย่างเหมาะสม อย่างไรก็ตามฉันได้คัดลอก / var / lib / mysql ไปยังที่ที่ปลอดภัย ความพยายามที่จะซิงค์โฟลเดอร์ฐานข้อมูลกลับเข้าไปในตำแหน่งเดิมของมันไม่ทำงาน - มันเป็นการเรียงลำดับของการทำงาน แต่จากนั้น wordpress ก็จะล่มสลายแม้จะแก้ไขสิทธิ์แล้วก็ตาม ถ้าฉันสร้างฐานข้อมูลนั้นด้วยตนเองแล้ว rsync มัน mysql จะไม่เริ่ม

เป็นไปได้ไหมที่จะกู้คืนโฟลเดอร์นี้อย่างใด?

แก้ไข: ฉันมีตอนนี้เพื่อให้ฉันสามารถดูโฟลเดอร์ในพรอมต์ mysql ฉันสามารถใช้ฐานข้อมูลนั้น แต่ลองใช้ SELECT * จาก 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 ตอนนี้ที่ฉันมีรหัสพื้นที่ตารางเหล่านี้ยังไม่เรียงกัน ฉันไม่รู้ว่าจะแก้ไขอย่างไรหรือถ้านั่นเป็นวิธีแก้ปัญหา ฉันหวังว่าจะมีวิธีอัตโนมัติในการแก้ไขสิ่งเหล่านี้!

คำตอบ:


6

เอาล่ะนี่ไปเลย ดังนั้นคุณต้องทำการล้างข้อมูลแบบเต็มของ mysql ไม่ต้องกังวลแม้จะพยายามเปลี่ยนไปใช้ mariadb ณ จุดนี้มันก็ใช้งานไม่ได้ (ไม่สามารถเปลี่ยนรหัสผ่านรูทได้แม้จะลบทุกไฟล์ที่เกี่ยวข้องกับ mysql)

[แก้ไข: ฉันรู้ในภายหลังว่าเป็นเพราะฉันไม่ได้ใช้มาเรียบเป็นราก ด้วยเหตุผลบางอย่างถ้าคุณมีการติดตั้ง 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 อีกครั้ง 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
ลองดูที่ไฟล์ต่อตารางและ
เอนจิ้น

1
ขอบคุณมาก! อย่างไรก็ตามฉันต้องตั้งค่าinnodb_force_recovery=6ใน /etc/mysql/my.cnf เพื่อเข้าสู่ MySQL พรอมต์
แขกรับเชิญ

1
ขอบคุณหนึ่งล้าน !! ฉันต้องลบไฟล์บันทึกสองสามครั้งเพื่อให้เซิร์ฟเวอร์เริ่มทำงาน แต่หลังจากนั้นก็ใช้งานได้!
Eric F.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.