Loading...
 
Skip to main content

History: Migrate from MyISAM to InnoDB

Preview of version: 4

Context: InnoDB and MyISAM are storage engines for the databases supported by Tiki: MariaDB, MySQL and Percona Server for MySQL.

Tiki uses the database for two types of data:

  1. The actual data (wiki pages, blog posts, etc.)
    • For Tiki data, MyISAM has been used since the beginning of Tiki (2002). In 2017, the default storage engine became InnoDB.
  2. The Unified Index: a copy of your data in format optimized for search
    • For the unified index, MyISAM has been used since the beginning of Tiki (2002). In 2024 Tiki28, it becomesInnoDB. It's not optional.



MyISAM still works just fine and will for many years. And you can easily convert later.

Migration steps:

  1. Make sure you are not using the deprecated tiki-searchresults.php feature (preference name feature_search_fulltext and removed after Tiki26), but instead use tiki-searchindex.php (preference name: feature_search)
  2. Do a full backup of your current database/installation
  3. Alter the database engine for all tables to InnoDB using db/tiki_convert_myisam_to_innodb.sql


Performing the conversion with phpMyAdmin may cause a PHP timeout. Running the script with the mysql command avoids that:

Copy to clipboard
mysql -u userName -p databaseName < db\tiki_convert_myisam_to_innodb.sql

Nevertheless, step 4 may fail converting the tiki_files table if innodb_log_file_size is not high enough. In one case, 25 MB was insufficient (80 MB sufficed).

The source code lives here: https://gitlab.com/tikiwiki/tiki/-/blob/master/db/tiki_convert_myisam_to_innodb.sql (This is for master, so you may want to look for corresponding file for your Tiki version)

In a future version, we will have a Console script: https://gitlab.com/tikiwiki/tiki/-/merge_requests/4915

History

Information Version
Marc Laporte 6
Marc Laporte 5
Marc Laporte 4
Marc Laporte 3
Marc Laporte 2
Marc Laporte Copy-paste from https://doc.tiki.org/InnoDB 1