MySQL CLI 關閉 auto commit 避免失誤

MySQL 於 CLI 操作時,通常都要特別小心再小心,但是也是很難避免有意外的發生,此時可以使用 Transaction 的特性,再多一層保障。

  • 注意:上述需要支援 Transaction(交易)(例如:InnoDB),MyISAM 是不支援 Transaction 的

閱讀全文〈MySQL CLI 關閉 auto commit 避免失誤〉

MySQL InnoDB 遇到 ./ib_logfile0 is of different size 5242880 bytes 修復

MySQL 使用 Innobackupex 來做備份,詳見此篇:使用 Percona innobackupex 備份 與 還原 MySQL

執行下述命令:

  • $ sudo innobackupex --user=root --password=password /home/user/2017-01-01/

出現下述錯誤訊息:

InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes

註:原始 DB 是 Debian 預設的 MySQL

修復方式如下步驟:

  1. vi /etc/mysql/my.cnf # 增加 innodb_log_file_size 的參數即可
    [mysql]
    innodb_log_file_size=5M
  2. /etc/init.d/mysql reload
  3. 再來 innobackupex 就可以正常執行了

使用 Percona innobackupex 備份 與 還原 MySQL

MySQL 的 InnoDB 只能用 mysqldump,而沒辦法使用 cp 來備份,這點可以使用 Percona 出的 innobackupex 來解決~

Percona 出很多 MySQL 的工具,可以做同步、快速備份 等等 ..

閱讀全文〈使用 Percona innobackupex 備份 與 還原 MySQL〉

MySQL 出現 InnoDB STORAGE ENGINE failed 修復

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 STORAGE ENGINE failed 修復〉

MySQL 内部模塊 及 InnoDB 儲存引擎架構圖

MySQL 內部模組 與 InnoDB 的架構圖(不知道出處是哪邊),原始資料是 PDF,我另外抓成圖檔比較好查看。

MySQL 內部模組 與 InnoDB 的架構圖 圖檔

MySQL 内部模塊 及 InnoDB 儲存引擎架構圖