MySQL 於 CLI 操作時,通常都要特別小心再小心,但是也是很難避免有意外的發生,此時可以使用 Transaction 的特性,再多一層保障。
- 注意:上述需要支援 Transaction(交易)(例如:InnoDB),MyISAM 是不支援 Transaction 的
個人筆記, 記錄關於 系統、程式、新聞 與 日常生活 等資訊
MySQL 於 CLI 操作時,通常都要特別小心再小心,但是也是很難避免有意外的發生,此時可以使用 Transaction 的特性,再多一層保障。
MySQL 使用 Innobackupex 來做備份,詳見此篇:使用 Percona innobackupex 備份 與 還原 MySQL
執行下述命令:
出現下述錯誤訊息:
InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes
註:原始 DB 是 Debian 預設的 MySQL
修復方式如下步驟:
MySQL 的 InnoDB 只能用 mysqldump,而沒辦法使用 cp 來備份,這點可以使用 Percona 出的 innobackupex 來解決~
Percona 出很多 MySQL 的工具,可以做同步、快速備份 等等 ..
MySQL 要從備份還原啟動,但是發生啟動失敗,在 mysql 的 error log 裡面看到下述訊息。
Unable to start MySQL service: Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
InnoDB: Using Linux native AIO
InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
170122 12:01:00 InnoDB: Warning: table 'mysql/innodb_index_stats' InnoDB: in InnoDB data dictionary has unknown flags 50.
170122 12:01:00 InnoDB: Warning: table 'test/collect' InnoDB: in InnoDB data dictionary has unknown flags 50.
170122 12:01:00 [ERROR] /usr/sbin/mysqld: Table './mysql/user' is marked as crashed and should be repaired
170122 12:01:00 [Warning] Checking table: './mysql/user'
170122 12:01:00 [ERROR] 1 client is using or hasn't closed the table properly
170122 12:01:00 InnoDB: Warning: table 'test/users'
InnoDB: in InnoDB data dictionary has unknown flags 50.
要怎麼修復呢?
MySQL 內部模組 與 InnoDB 的架構圖(不知道出處是哪邊),原始資料是 PDF,我另外抓成圖檔比較好查看。
MySQL 內部模組 與 InnoDB 的架構圖 圖檔