By default, Concrete5 requires MyISAM database tables in MySQL. Recent versions of MySQL use InnoDB by default, and it's performance is now equal to or better than MyISAM for most workloads, plus it supports transactions, foreign keys and just gives better data consistency overall.
We were also looking to deploy Concrete5 in a High Availability environment using either Percona or MariaDB with the Galera multi-master clustering, which requires InnoDB tables.
It turns out this is extremely easy to do. The only reason C5 requires MyISAM is for the FULLTEXT indexes. From browsing the forums and the source code, these indexes aren't actually used by the core search block anymore, and haven't been for several versions. So even if your site uses the search block, this modification should be safe.
Note This does break the optional "Full Page Index" filter in the dashboard page search. That's the only place in Concrete5 currently using the FULLTEXT indices.
Before installing Concrete5, patch /concrete/config/db.xml
--- old.xml 2013-03-21 11:53:54.000000000 -0400
+++ db.xml 2013-07-16 17:41:12.000000000 -0400
@@ -1500,7 +1500,6 @@
</table>
<table name="FileVersions">
- <opt platform="MYSQL">ENGINE=MYISAM</opt>
<field name="fID" type="I" size="10">
<KEY/>
<DEFAULT value="0"/>
@@ -1922,7 +1921,6 @@
</index>
</table>
<table name="PageSearchIndex">
- <opt platform="MYSQL">ENGINE=MYISAM</opt>
<field name="cID" type="I" size="10">
<KEY/>
<DEFAULT value="0"/>
@@ -1941,21 +1939,6 @@
</field>
<index name="cName">
<col>cName</col>
- <FULLTEXT />
- </index>
- <index name="cDescription">
- <col>cDescription</col>
- <FULLTEXT />
- </index>
- <index name="content">
- <col>content</col>
- <FULLTEXT />
- </index>
- <index name="content2">
- <col>cName</col>
- <col>cDescription</col>
- <col>content</col>
- <FULLTEXT />
</index>
<index name="cDateLastIndexed">
<col>cDateLastIndexed</col>
@@ -1968,7 +1951,6 @@
</index>
</table>
<table name="PageStatistics">
- <opt platform="MYSQL">ENGINE=MYISAM</opt>
<field name="pstID" type="I8" size="20">
<KEY/>
<AUTOINCREMENT/>
You should have
default_storage_engine=InnoDB
in your MySQL my.cnf file. Create your C5 database and install as normal. Fully functioning Concrete5 on a High Availability MySQL cluster!