Install cron-mysql-backup using npm:
$ yarn add cron-mysql-backup
or
$ npm install --save cron-mysql-backup
You will need a sendgrid account to send emails from.
Import cron-mysql-backup and backup every hour on the hour:
const cronMysqlBackup = require('cron-mysql-backup');
let options = {
directory:'./dumps',
cronSchedule:" 0 * * * *",
connection:{
host: 'localhost',
user: 'make-a-read-only-user',
password: 'password',
database: 'database',
},
sendTo:'[email protected]', // Notifications will be sent to this address. This can also be an array of email addresses
sendFrom:'[email protected]',
sendGridApiKey:'sendGridApiKeyHere',
sendSuccessEmailAfterXBackups:10, //Send confirmation email after every 10 backups()
maxBackups: 7*24 // the maximum number of backups(a weeks worth of hourly backups)
};
cronMysqlBackup();
Use a process manager to restart your process if it ever fails https://www.npmjs.com/package/pm2
This is a quick reference to cron syntax and also shows the options supported by cron-mysql-backup.
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── day of week
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
field | value |
---|---|
second | 0-59 |
minute | 0-59 |
hour | 0-23 |
day of month | 1-31 |
month | 1-12 (or names) |
day of week | 0-7 (or names, 0 or 7 are sunday) |