Friday 1 December 2023

วิธีการกู้คืนฐานข้อมูล InnoDB MySQL จากการสำรองข้อมูลดิบ

คุณต้องได้รับสำเนาของไดเร็กทอรีฐานข้อมูล 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/


electronic

About electronic

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :