# MySQL Backup A basic script to backup mysql instance ## How it work MySQL backup list your databases. On each database, MySQL Backup lists tables, dumps schemas and data on two separate files on each tables. In `databases` folder, you will find the structure for each database and each table. In `extras` folder, you will find the routine, trigger and event of your database. In `schemas` folder, you will find each table structure per file. In `datas` folder, you will find each table data per file. You need to configure a user with somes permissions like this : For all tables : ``` *.*:SELECT,SHOW VIEW,RELOAD,REPLICATION CLIENT,EVENT,TRIGGER,LOCK TABLES ``` For `sys` table (MariaDB 10.11 on Debian 12) : ``` sys.*:LOCK TABLES,SHOW VIEW,EXECUTE ``` ## How use it ? Create a backup user with these grants : `SELECT, RELOAD, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, TRIGGER` Download `mysqlbackup.sh`. Execute script with good parameters Take a coffee ``` su - mysqlbackup cd ~ wget https://git.drycat.fr/Dryusdan/mysql-backup/raw/branch/master/mysqlbackup.sh chmod +x mysqlbackup.sh ./mysqlbackup.sh /empty/folder/for/mysqldump 7 backup S3c4ET 127.0.0.1 ``` | Parameters | Explain | | -------- | -------- | | Folder | Folder where dumps were stored. This folder must be empty | | Retention | Time on the day before dropping a dump | | Username | Username of you're mysql's backup user | | Password | Password of you're mysql's backup user | | Host | You're MySQL Host. Default is 127.0.0.1 | | Port | You're MySQL Port. Default is 3306 |