Hướng dẫn xử lý database innodb MySQL bị crash

  • Saturday 14/03/2020

Trường hợp database sử dụng innodb bị crash bạn có thể xử lý bằng cách sau:

– Bước 1: Bạn cho start mysql với mode readonly bằng cách:

Mở file: /etc/my.cnf > thêm dòng

innodb_force_recovery = 1

Có thể thay 1 bằng  4 hoặc 6 để start mysql

– Bước 2: Backup toàn bộ database trên server với lệnh:

mysqldump -u root -p --all-databases > alldb.sql

Trường hợp dump bị lỗi có thể dùng cmd dưới đây

mysqldump -u root -p --complete-insert --routines --triggers --single-transaction --all-databases > alldb.sql

Trường hơp việc dump all database bị lỗi, bạn xem xét dump từng database 1

với script

mysql -N -e 'show databases' | while read dbname; do mysqldump --complete-insert --routines --triggers --single-transaction "$dbname" > /root/backup_db_full/"$dbname".sql; done

– Bước 3: Cho rename các file trong /var/lib/mysql: ibdata1, ib_logfile0, ib_logfile1

– Bước 4: Mở lại file /etc/my.cnf > bỏ dòng innodb_force_recovery trước đó đã thêm > restart lại mysql ở chế độ bình thường.

– Bước 5: Chạy lệnh bên dưới để đảm bảo mv hết các table sử dụng inodb

cd /var/lib/mysql/

find . -type f -name "*.ibd" -exec mv {} {}.bak \;

– Bước 6: Xong chạy import lại file alldb.sql

mysql -u root -p < /root/alldb.sql