1. Create the DB Tables for Quartz
This was quite hard and I needed to dig into the Quartz Library Source Code to get a Schema for Mysql with InnoDB (which had a typo..). I then created a migration file for the Grails database-migration plugin.
Just copy this migration file into your grails-app/migration directory and register it in changelog.groovy
2. Configure database-migration plugin
Next, you need to tweak the database-migration config, so it ignores the Quartz tables. Otherwise, it would drop the tables with the next dbm_gorm_diff run. Example for application.groovy:grails.plugin.databasemigration.excludeObjects = ['QRTZ_BLOB_TRIGGERS','QRTZ_CALENDARS', 'QRTZ_CRON_TRIGGERS', 'QRTZ_FIRED_TRIGGERS', 'QRTZ_JOB_DETAILS', 'QRTZ_LOCKS', 'QRTZ_PAUSED_TRIGGER_GRPS', 'QRTZ_SCHEDULER_STATE', 'QRTZ_SIMPLE_TRIGGERS', 'QRTZ_SIMPROP_TRIGGERS', 'QRTZ_TRIGGERS']
3. Configure quartz-plugin
Next, you need to configure the Grails Quartz Plugin to use the jdbc store, and enable clustering.
See this example for application.groovy, and this example for application.yml (whatever you prefer).
4. Test clustering
Startup your application. You must see such message:
Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.