Storage Engine Overview
A storage engine is a software module that a database management system uses to create, read, update data from a database.
For MySQL 5.5 and later, the default storage engine is InnoDB. The default storage engine for MySQL prior to version 5.5 was MyISAM.
InnoDB is the most widely used storage engine with transaction support. It supports row-level locking, crash recovery and multi-version concurrency control. It is the only engine which provides foreign key referential integrity constraint.
MyISAM is the original storage engine. It is a fast storage engine. It is used mostly in Web and data warehousing.
If your database tables have a proclivity for crashing, it is better to use InnoDB as the storage engine. For more information, read the following:
Checking Storage Engine Type
Run the following within mysql to determine the storage engine type for your database:
USE <database>;
SHOW TABLE STATUS\G
Nagios XI Databases
Database Name | Default Storage Engine |
nagios | MyISAM |
nagiosxi | InnoDB |
nagiosql | InnoDB |
Potential Nagios XI Symptoms
Your server is very slow and operates at high CPU. You also experience crashed tables frequently and must run the Nagios XI repair script to solve the error on a regular basis.
Possible Solution
Please read this article below to ensure that the steps presented in the article do not fix your issue before attempting the commands below:
Note: Ensure that you create a backup before attempting the below database commands.
The following commands will convert the storage engine to InnoDB for all Nagios XI tables. This should decrease the probability of crashed tables and other table errors that may cause high cpu usage.
mysql -h 127.0.0.1 -uroot -pnagiosxi nagios -e "SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') as '' FROM information_schema.tables AS tb WHERE table_schema = 'nagios' AND ENGINE = 'MyISAM' AND TABLE_TYPE = 'BASE TABLE' ORDER BY table_name DESC;" > /tmp/nagios_convert_myisam_to_innodb.sql
mysql -h 127.0.0.1 -uroot -pnagiosxi nagiosql -e "SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') as '' FROM information_schema.tables AS tb WHERE table_schema = 'nagiosql' AND ENGINE = 'MyISAM' AND TABLE_TYPE = 'BASE TABLE' ORDER BY table_name DESC;" > /tmp/nagiosql_convert_myisam_to_innodb.sql
mysql -h 127.0.0.1 -uroot -pnagiosxi -e "SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=InnoDB;') as '' FROM information_schema.tables AS tb WHERE table_schema = 'nagiosxi' AND ENGINE = 'MyISAM' AND TABLE_TYPE = 'BASE TABLE' ORDER BY table_name DESC;" > /tmp/nagiosxi_convert_myisam_to_innodb.sql
mysql -h 127.0.0.1 -uroot -pnagiosxi nagios < /tmp/nagios_convert_myisam_to_innodb.sql
mysql -h 127.0.0.1 -uroot -pnagiosxi nagiosql < /tmp/nagiosql_convert_myisam_to_innodb.sql
mysql -h 127.0.0.1 -uroot -pnagiosxi nagiosxi < /tmp/nagiosxi_convert_myisam_to_innodb.sql