คุณต้องได้รับสำเนาของไดเร็กทอรีฐานข้อมูล mysql แบบ raw
/var/lib/mysql/your_database
คุณต้องมีสำเนาของไฟล์ ib ต่อไปนี้ที่อยู่ใน /var/lib/mysql/
ib_logfile0
ib_logfile1
อิบดาต้า1
ib_buffer_pool
⚠ คำเตือน! ระวังอย่ากู้คืนไฟล์เหล่านั้นไปยังเซิร์ฟเวอร์ที่ใช้งานจริง ไม่เช่นนั้นฐานข้อมูลจะเสียหาย
ทำงานบนเซิร์ฟเวอร์ทดสอบ
เราจะทำงานกับไดเร็กทอรีฐานข้อมูลและไฟล์ ib* บนเซิร์ฟเวอร์ทดสอบ ดังนั้นเราจึงไม่ทำลายสิ่งใดๆ ในการผลิต เราขอแนะนำให้ใช้เวอร์ชัน MySQL และกลไกการจัดเก็บข้อมูลเดียวกัน
ขั้นแรก ให้ปิด mysql บนเซิร์ฟเวอร์ทดสอบของคุณ สำหรับ centos ให้ทำดังนี้
systemctl stop mysqld
ทำสำเนาสำรองของไดเร็กทอรี mysql จะดีกว่าถ้าปลอดภัยกว่าขออภัย:
****ย้ายไปอยู่ /var/lib/mysql
cp -pr /var/lib/mysql /var/lib/mysql2
จากนั้น คุณสามารถคัดลอกและเขียนทับไฟล์ ib* และไดเร็กทอรีฐานข้อมูลของคุณไปยัง /var/lib/mysql บนเซิร์ฟเวอร์ทดสอบ ด้วยวิธีใดก็ได้ที่คุณต้องการ
ตรวจสอบให้แน่ใจว่าได้เปลี่ยนเจ้าของไฟล์ของไฟล์ ib* และไดเร็กทอรีฐานข้อมูล & ไฟล์ให้ตรงกับ mysql.mysql หรืออะไรก็ตามที่เซิร์ฟเวอร์ mysql ของคุณใช้งานอยู่
chown mysql.mysql -R /var/lib/mysql/your_database
chown mysql.mysql /var/lib/mysql/ib*
ถึงเวลาที่ต้องกลับมาเปิดเซิร์ฟเวอร์ mysqld อีกครั้ง:
systemctl start mysqld
ตอนนี้คุณควรจะสามารถสร้าง mysqldump ของฐานข้อมูลได้แล้ว:
mysqldump your_database > your_database.sql
หากคุณสร้าง mysqldump สำเร็จแล้ว คุณสามารถคืนค่าการเปลี่ยนแปลงทั้งหมดที่เราทำบนเซิร์ฟเวอร์ทดสอบได้แล้ว
systemctl stop mysqld
mv /var/lib/mysql /var/lib/mysql.del
mv /var/lib/mysql2 /var/lib/mysql
systemctl start mysqld
ตอนนี้คุณสามารถลบโฟลเดอร์สำรอง mysql.del ได้แล้ว:
rm -rf /var/lib/mysql.del
การนำเข้าไฟล์ mysqldump
ใกล้เสร็จแล้ว ถึงเวลาล็อกอินเข้าสู่เซิร์ฟเวอร์ปลายทางและสร้างฐานข้อมูล:
mysql -e "CREATE DATABASE your_database;"
คัดลอกไฟล์ดัมพ์ของ your_database.sql ไปยังเซิร์ฟเวอร์ปลายทางและนำเข้าไปยังฐานข้อมูลที่สร้างขึ้นใหม่:
mysql your_database < your_database.sql
คุณควรจะสามารถแสดงตารางจากฐานข้อมูลที่นำเข้าได้ นอกจากนี้ คุณยังสามารถเชื่อมโยงผู้ใช้กับฐานข้อมูลและให้สิทธิ์การเข้าถึงทั้งหมดที่จำเป็นได้แล้ว
mysql -e "SHOW TABLES FROM your_database;"
ที่มา https://www.linuxadmingeeks.com/how-to-recover-an-innodb-mysql-database-from-raw-backup/