MySQL MyISAM vs InnoDB

9 views
Skip to first unread message

Daniel Le Berre

unread,
Feb 26, 2017, 4:55:30 AM2/26/17
to GitLab
Dear all,

I installed my first version of Gitlab in September 2013 from source and used to update it every month.

I used a MySQL backend at the time because that was the DB we were used to in my organization.

It worked fine until June 2016, i.e. the migration from Gitlab 8.8 to gitlab 8.9.

The migration process failed. It took me some time to look in details to the issue, because I did not understand how the migration process worked in detail. I really needed to update to the latest gitlab so I dug into the migration internals.

One of the reason of the failure is that since then, gitlab uses references which are only supported by the MySQL InnoDB engine.

My default engine in my current gitlab instance is MyISAM. I checked and noted that the current MySQL documentation states that MySQL engine should default to InnoDB.
I am not sure when that requirement started.

My question is: is it safe to change the engine of all my tables from MyISAM to InnoDB?

I did an upgrade on a test copy of my instance by changing at each migration the engine of the table if needed. Here are the tables I had to update from 8.8 to 8.16.5:

ALTER TABLE users ENGINE=InnoDB;
ALTER TABLE protected_branches ENGINE
=InnoDB;
ALTER TABLE projects ENGINE
=InnoDB;
ALTER TABLE labels ENGINE
=InnoDB;
ALTER TABLE issues ENGINE
=InnoDB;
ALTER TABLE merge_requests ENGINE
=InnoDB;
ALTER TABLE namespaces ENGINE
=InnoDB;
ALTER TABLE ci_commits ENGINE
=InnoDB;

My aim is to update my current instance to latest version of gitlab and to switch to omnibus on a new machine by June.
(thus migrating from MySQL to PostgreSQL)

Regards,

Daniel

PS: I did all the updates one by one on my test machine, which took me several hours. Is it possible to directly update from 8.8 to 8.16? My gitlab and nginx config file are properly updated on my test machine.

Reply all
Reply to author
Forward
0 new messages