Hello,<div><br></div><div>We deployed an ejabberd cluster a couple weeks ago, and the size of our roster and last_activity tables seem to have become problematic.</div><div><br></div><div>We sometimes want to do rolling restarts on the cluster, and the nodes now take 5 minutes+ each to start. We think this is probably because of the size of Mnesia.</div>

<div><br></div><div>I have tested a set up where an ejabberd cluster uses mod_last_odbc and mod_roster_odbc with the native MySQL driver, and that seems to work fine for new data, but I need to find a way to migrate the data that currently exists in Mnesia to MySQL.</div>

<div><br></div><div>The documentation says we can't run both versions of a module.</div><div><br></div><div>We were thinking of doing something along those lines:</div><div><ul><li>Disconnect all users (while keeping the nodes up)</li>

<li>Using a custom erlang module to read the data from the last_activity and roster Mnesia tables and write it to the corresponding MySQL tables.</li><li>Changing the nodes' config so that it uses the odbc versions of the modules.</li>

<li>Restarting the nodes (or doing the module unloading and loading live...)</li><li>Once we're certain everything's fine: delete the old Mnesia data.</li></ul></div><div>We don't mind having a bit of downtime if that makes things simpler and more reliable, although we certainly are interested in doing this without downtime if there is a proven solution to do so.</div>

<div><br></div><div>I haven't found an already-implemented way of doing such data migration, but if it exists, I'd like to know about it! Otherwise, we'll roll out our own implementation of the data migration module, in which case, any advice or best practices recommendation would be greatly appreciated!</div>

<div><br></div><div>Thanks :)</div><div><br></div><div>--<br>Felix<br>
</div>