Scheduler

6.2.1.1 Scheduler

monitoring-scheduler (2.1)
Item Value
Description "Enable task scheduler"
Type boolean
Default Value false

Note: The scheduler is disabled by default. On a fresh install, no maintenance jobs (backups, optimize, analyze, schema monitoring, etc.) will run until monitoring-scheduler is explicitly set to true in the configuration. The individual cron toggles (e.g. scheduler-db-servers-logical-backup) only take effect when the global scheduler is enabled.

6.2.1.2 CRON Expression Format

A cron expression represents a set of times, using 6 space-separated fields.

Field name Mandatory? Allowed values Allowed special characters
Seconds Yes 0-59 * / , -
Minutes Yes 0-59 * / , -
Hours Yes 0-23 * / , -
Day of month Yes 1-31 * / , - ?
Month Yes 1-12 or JAN-DEC * / , -
Day of week Yes 0-6 or SUN-SAT * / , - ?

Note: Month and Day-of-week field values are case insensitive. "SUN", "Sun", and "sun" are equally accepted.

Special Characters Asterisk ( * )

The asterisk indicates that the cron expression will match for all values of the field; e.g., using an asterisk in the 5th field (month) would indicate every month.

Slash ( / )

Slashes are used to describe increments of ranges. For example 3-59/15 in the 1st field (minutes) would indicate the 3rd minute of the hour and every 15 minutes thereafter. The form "*\/..." is equivalent to the form "first-last/...", that is, an increment over the largest possible range of the field. The form "N/..." is accepted as meaning "N-MAX/...", that is, starting at N, use the increment until the end of that specific range. It does not wrap around.

Comma ( , )

Commas are used to separate items of a list. For example, using "MON,WED,FRI" in the 5th field (day of week) would mean Mondays, Wednesdays and Fridays.

Hyphen ( - )

Hyphens are used to define ranges. For example, 9-17 would indicate every hour between 9am and 5pm inclusive.

Question mark ( ? )

Question mark may be used instead of '*' for leaving either day-of-month or day-of-week blank.

6.2.1.3 Default Schedule Summary

The following table summarizes all scheduler defaults:

Task Flag Default Cron Runs Enabled
Schema monitoring monitoring-schema-scheduler-cron 0 0 2 * * * Every day at 2:00 AM yes
Checksum all tables monitoring-checksum-scheduler-cron 0 0 2 * * 5 Every Friday at 2:00 AM no
Logical backup scheduler-db-servers-logical-backup-cron 0 0 1 * * 6 Every Saturday at 1:00 AM yes
Physical backup scheduler-db-servers-physical-backup-cron 0 0 0 * * 0-4 Sunday to Thursday at midnight yes
Logs backup scheduler-db-servers-logs-cron 0 0/10 * * * * Every 10 minutes yes
Optimize tables scheduler-db-servers-optimize-cron 0 0 3 1 * * 1st of every month at 3:00 AM yes
Analyze tables scheduler-db-servers-analyze-cron 0 0 4 2 * * 2nd of every month at 4:00 AM yes
Logs table rotate scheduler-db-servers-logs-table-rotate-cron 0 0 0/6 * * * Every 6 hours yes
Rolling restart scheduler-rolling-restart-cron 0 30 11 * * * Every day at 11:30 AM no
Rolling reprovision scheduler-rolling-reprov-cron 0 30 10 * * 5 Every Friday at 10:30 AM no
DB jobs SSH scheduler-jobs-ssh-cron 0 * * * * * Every minute yes
SLA rotate scheduler-sla-rotate-cron 0 0 0 1 * * 1st of every month at midnight yes
Alert disable scheduler-alert-disable-cron 0 0 0 * * 0-4 Sunday to Thursday at midnight no

On startup, if no cached table metadata exists (e.g. after a fresh upgrade), a one-time schema scan is triggered automatically regardless of the cron schedule.

6.2.1.4 CRON Jobs Configuration

scheduler-db-servers-logical-backup (2.1)
Item Value
Description Schedule logical backup
Type boolean
Default Value true

Logical backup in Replication-manager (2.1) are done via mysqldump client from the replication-manager host to the master database with non blocking and replication position options.

It's alway safer to backup the master despite it was advice to backup slaves, Signal18 don't think this a best practice to backup slave.

Yes Logical backup are slow, but for good reason it's supposed not to get all your databases CPU and IO so that you may take it without trouble to your workload!

Logical backup are needed for long time archiving of your data, it's the only way to prevent physical data corruption that can happen with hardware issues, databases bugs, Kernel and FS bugs.

scheduler-db-servers-logical-backup-cron (2.1)
Item Value
Description Logical backup cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 1 6" Every Saturday at 1:00 AM
scheduler-db-servers-physical-backup (2.1)
Item Value
Description Schedule physical backup
Type boolean
Default Value true
scheduler-db-servers-physical-backup-cron (2.1)
Item Value
Description Physical backup cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 0 0-4" Sunday to Thursday at midnight

Physical backups are day to day backups in MySQL & MariaDB and works like FS snapshots, tracking database changes while copying physical pages. It is non blocking when InnoDB storage engine is mostly used for most tables , big non transactional table will be lock for WRITES a (READ LOCK) will still enable to READ non transactional tables.

Physical backups like innodbhotbackup, xtrabackup and mariabackup need to take place on the database host itself but can be stream to replication-manager for archiving or reused for re-seeding new slaves or old died masters.

scheduler-db-servers-logs (2.1)
Item Value
Description Schedule database logs fetching
Type boolean
Default Value true
scheduler-db-servers-logs-cron (2.1)
Item Value
Description Logs backup cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0/10 " Every 10 minutes

replication-manager take care of monitoring replication but can be extend to a central point for database error logs and query log analyze, using this option the logs of the database are requested on this schedule to replication-manager for a central point of analyze and alerting. We will provide the tools to classify the queries and understand databases miss configuration and workload

Our donor script will purge the log on the database server after sent out so that growing logs don't consume the disk space and memory of the db host itself.

scheduler-db-servers-optimize (2.1)
Item Value
Description Schedule database optimize
Type boolean
Default Value true
scheduler-db-servers-optimize-cron (2.1)
Item Value
Description Optimize cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 3 1 " 1st of every month at 3:00 AM
scheduler-db-servers-analyze (2.1)
Item Value
Description Schedule database analyze
Type boolean
Default Value true
scheduler-db-servers-analyze-cron (2.1)
Item Value
Description Analyze cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 4 2 " 2nd of every month at 4:00 AM
scheduler-db-servers-logs-table-rotate (2.1)
Item Value
Description Schedule database logs table rotation
Type boolean
Default Value true
scheduler-db-servers-logs-table-rotate-cron (2.1)
Item Value
Description Logs table rotate cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 0/6 *" Every 6 hours (midnight, 6 AM, noon, 6 PM)
monitoring-schema-scheduler (2.1)
Item Value
Description Enable scheduled schema monitoring
Type boolean
Default Value true
monitoring-schema-scheduler-cron (2.1)
Item Value
Description Schema monitoring cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 2 *" Every day at 2:00 AM

Schema monitoring detects table additions, removals, and structural changes (columns, indexes). On startup, if no cached table metadata exists (e.g. after a fresh upgrade), a one-time schema scan is triggered automatically regardless of the cron schedule.

monitoring-checksum-scheduler (2.1)
Item Value
Description Enable scheduled checksum of all tables
Type boolean
Default Value false
monitoring-checksum-scheduler-cron (2.1)
Item Value
Description Checksum cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 2 5" Every Friday at 2:00 AM
scheduler-rolling-restart (2.1)
Item Value
Description Enable scheduled rolling restart of database servers
Type boolean
Default Value false
scheduler-rolling-restart-cron (2.1)
Item Value
Description Rolling restart cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 30 11 *" Every day at 11:30 AM
scheduler-rolling-reprov (2.1)
Item Value
Description Enable scheduled rolling reprovision of database servers
Type boolean
Default Value false
scheduler-rolling-reprov-cron (2.1)
Item Value
Description Rolling reprovision cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 30 10 5" Every Friday at 10:30 AM
scheduler-jobs-ssh (2.1)
Item Value
Description Enable scheduled remote execution of database jobs via SSH
Type boolean
Default Value true
scheduler-jobs-ssh-cron (2.1)
Item Value
Description DB jobs SSH cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 *" Every minute
scheduler-sla-rotate (2.1)
Item Value
Description Enable scheduled SLA rotation
Type boolean
Default Value true
scheduler-sla-rotate-cron (2.1)
Item Value
Description SLA rotate cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 0 1 " 1st of every month at midnight
scheduler-alert-disable (2.1)
Item Value
Description Enable scheduled alert disable window
Type boolean
Default Value false
scheduler-alert-disable-cron (2.1)
Item Value
Description Alert disable cron expression represents a set of times, using 6 space-separated fields.
Type string
Default Value "0 0 0 0-4" Sunday to Thursday at midnight