檢查日志的時候發現 mariadb 報了好多錯,最近一段時間 一直有崩潰的;并且正好趕上要修改資料庫看表字段,較多表要修改。
雖然修改表理論上是不會蹦了書庫的,單最後結果是崩潰頻率增加,當天下午到晚上就起不來資料庫庫了,我也要崩了!!!∑(゚Д゚ノ)ノ
1. 解決啟動崩潰
然後 根據錯誤查找解決辦法:
140605 13:39:32 [ERROR] Plugin 'InnoDB' init function returned error.
140605 13:39:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140605 13:39:32 [ERROR] Unknown/unsupported storage engine: InnoDB
140605 13:39:32 [ERROR] Aborting
解決辦法: 删日志》》 資料庫資料檔案夾下的 ib_logfile0,ib_logfile1 檔案,删除後果然可以了;
但是很快又蹦了,并且啟動不了,根據錯誤訓示,加 innodb_force_recovery 參數 ;
然後嘗試,從1到6,一直試到5 才能啟動。
2. 備份
然後趕快備份咯。
mysqldump -uusername -ppswd dbname > 20210712.dbname.sql
這樣單庫備份過程中經常遇到備份到某個表時資料庫又蹦了,添加忽略參數忽略這個表吧:
mysqldump -uuser -ppswd dbname --ignore-table=dbname.t1 --ignore-table=dbname.t2 --ignore-table=dbname.t3 --ignore-table=dbname.t4 --ignore-table=dbname.t5 > 20210712.dbname.sql
但是後來遇到 一個庫裡好多個表會蹦庫~!
這招不行,重新來過的過程和次數太折磨人了~~~ 庫大,耗時
并且這些表也是重要的表,要備份的!
遂嘗試了 單個表備份,發現這會蹦的表,單個備份時竟然不蹦了~!!
于是,寫腳本吧,一個庫的表一個批次:
mysqldump -uusername -ppswd dbname t1 >> 20210712.dbname.sql
mysqldump -uusername -ppswd dbname t2 >> 20210712.dbname.sql
mysqldump -uusername -ppswd dbname t3 >> 20210712.dbname.sql
注意: 是雙箭頭重定向符号
儲存為 bk_dbname ,然後執行 bash bk_dbname
3. 重建立庫
把原資料檔案夾 改名,重建立立一個同樣名稱的檔案夾,改權限
chown -R mysql.mysql /var/lib/mysql
建立初始資料,和 初始化mysql 等
mysql_install_db
mysql_secure_installation
然後連接配接上 建立各個資料庫, 然後還原
mysql -hhostname -uusername -ppassword dbname < backupdb.sql
4. 最後發現,可以更簡單的操作
配置多執行個體,可以直接從壞庫導入到新庫!
echo dump table t1
mysqldump -c -n --insert-ignore -uuser -ppswd -S/data/3308/mysql.socket dbnamet1| mysql -uuser -ppswd dbname
echo dump table t2
mysqldump -c -n --insert-ignore -uuser -ppswd -S/data/3308/mysql.socket dbnamet2| mysql -uuser -ppswd dbname
-S 參數指定 壞庫的 socket 檔案路徑
多執行個體(飛機傳送),配置上并不複雜,新版更輕松。
PS: 最後, 檢查日志, 是一個表的索引壞了引起崩潰,然後其他表也出現了索引壞了,最後大蹦.
--- auth:lzpong