Running improper script on a running database can be proved to be a foolish work. We have own developed simple free tools for uploading backup to OpenStack Swift, WordPress Plugin to take whole FTP backup and methods to upload the whole FTP to Dropbox from SSH. Here are the ways to backup MySQL database and save to cloud storage including OpenStack Swift from SSH side. This guide essentially a good way to remind our readers about our useful old guides.
List Of Ways To Backup MySQL Database
For one Ubuntu based MySQL database is to run :
1 | sudo apt-get install automysqlbackup |
The configuration file is located at /etc/default/automysqlbackup
, open it
---
1 | sudo nano /etc/default/automysqlbackup |
This contains file also contains the login information. The default location for backups is /var/lib/automysqlbackup
. Ubuntu manual pages has official usage guide :
1 | http://manpages.ubuntu.com/manpages/zesty/man8/automysqlbackup.8.html |
Second option is a tool named Percona XtraBackup. Percona XtraBackup is a pro grade free tool to perform hot backup of database. MySQL database must be using the InnoDB storage engine, not MyISAM storage engine. In case of MyISAM storage engine, the database will be locked for a period during the backup. Persona has own guide on installing the tool :
1 | https://www.percona.com/doc/percona-xtrabackup/2.3/installation.html |
MySQL also has their tool to backup and a good guide :
1 | https://dev.mysql.com/doc/refman/5.7/en/backup-methods.html |
On MySQL’s website you’ll notice many matters. On our other guides on our website like how to install WordPress on Ubuntu 16.04 you’ll see how carefully we guided to configure database.
For smaller websites, blogs we suggest to not do any work on web GUI and simply do SSH to run the command on regular interval for backup :
1 | mysqldump -h localhost -u root -p databasename > backupname.sql |
PHPMyAdmin web interface definitely another way to take backup but that is not quite safe to keep PHPMyAdmin running on a live website hosted on one server but that is good way to take backup of each tables in easy way.
We are not database expert. But never forget, it is not exactly easy to take database backup on a live running single server. Scripts like by Major Hayden to optimise my.cnf, our guide to optimise MySQL are calculated based on possible extra load during backup. But if your website suddenly face a huge traffic during backup, it is difficult situation unless you are using good web host who knows about hardware.
Ways To Backup MySQL Database And Save To Cloud Storage
We have script to upload things to OpenStack Swift and also another guide which combines our WordPress plugin.
We have guide on how to configure DropBox to upload things from SSH.
This script takes backup and uploads to another FTP, it is kept on Github too :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/bash ############### Infos - Edit them accordingly ######################## DATE=`date +%Y-%m-%d_%H%M` LOCAL_BACKUP_DIR="/backups" DB_NAME="database_name" DB_USER="root" DB_PASSWORD="root_password" FTP_SERVER="111.111.111.111" FTP_USERNAME="ftp-user" FTP_PASSWORD="ftp-pass" FTP_UPLOAD_DIR="/upload" LOG_FILE=/backups/backup-DATE.log ############### Local Backup ######################## mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DATE-$DB_NAME.sql.gz ############### UPLOAD to FTP Server ################ ftp -nv $FTP_SERVER << EndFTP user "$FTP_USERNAME" "$FTP_PASSWORD" binary cd $FTP_UPLOAD_DIR lcd $LOCAL_BACKUP_DIR put "$DATE-$DB_NAME.sql.gz" bye EndFTP ############### Check and save log, also send an email ################ if test $? = 0 then echo "Database Successfully Uploaded to the Ftp Server!" echo -e "Database Successfully created and uploaded to the FTP Server!" | mail -s "Backup from $DATE" your_email@email.com else echo "Error in database Upload to Ftp Server" > $LOG_FILE fi |