Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/torstein-eide/backupmysql
Scripts for backing up mysql server
https://github.com/torstein-eide/backupmysql
backup database mariadb mariadb-server mysql mysql-server tar
Last synced: 20 days ago
JSON representation
Scripts for backing up mysql server
- Host: GitHub
- URL: https://github.com/torstein-eide/backupmysql
- Owner: Torstein-Eide
- License: gpl-2.0
- Created: 2018-07-14T23:18:44.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-12T19:23:04.000Z (9 months ago)
- Last Synced: 2025-01-10T19:59:52.948Z (21 days ago)
- Topics: backup, database, mariadb, mariadb-server, mysql, mysql-server, tar
- Language: Shell
- Homepage:
- Size: 57.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# backup of mysql/mariadb
note: this script runs unsecured connection, so don't use it over the internet.## get the scripts:
```
install -d /etc/scriptscd /etc/scripts
wget https://raw.githubusercontent.com/Eideen/backupMysql/master/db_backup_daily.sh
wget https://raw.githubusercontent.com/Eideen/backupMysql/master/db_backup_common.sh
wget https://raw.githubusercontent.com/Eideen/backupMysql/master/db_backup_horly.sh
chmod +x ./db_backup*.sh
chmod 700 ./db_backup_common.sh
```
## make a backup user:
* HOSTNAME
Server that the script is running on.
* DB_USERNAME
database backup username
* DB_PASSWORD
database backup user passowrd, make a random password.### A way to make a password:
```
date +%s | sha256sum | base64 | head -c 32 ; echo
```
## On the mysql server:Open Maria/Mysql program, with admin privlages.
```
mariadb -u root
```Run sql commands.
```sql
CREATE USER '${DB_USERNAME}'@'Localhost' IDENTIFIED BY '${DB_PASSWORD}';
GRANT LOCK TABLES, SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER ON *.* TO '${DB_USERNAME}'@'Localhost' ;
flush privileges;
```
## edit the scripts to fit your setup:
* DB_USERNAME
database backup username, it is recommend to use a dedicated backup user.
* DB_PASSWORD
database backup user passowrd
* DB_HOSTNAME
database backup hostname
* DEST
path you wanted to save the backup
* TEMPdir
path to temporary store datebase files before
your mail, if you wanted to send mail to you. you also need to make sure you have setup `ssmtp`.
* DAYS
Number of days to save.
* SKIP
Databases to skip.
default is `information_schema` and `performance_schema`. One line per datebase.
```
Nano db_backup_horly.sh db_backup_daily.sh
```## Now test your script:
```
/etc/scripts/db_backup_horly.sh
/etc/scripts/db_backup_daily.sh
```
output example:
>```
>list of databases:
>* information_schema
>* mysql
>* performance_schema
>folder /volum/@backup/mysql/daglig exist
>skiping information_schema
>skiping performance_schema
>extracted mysql in 0 cpu seconds
>mail not setup
>MySQL backup is completed without export fail## you can control the content of the backup with the following commands:
```
tar -tvf $DEST/$NOW.tar.gz
```
example:
>```
> # tar -tvf /volum/@backup/mysql/daglig/[backupfile].tar.gz
>drwxr-xr-x root/root 0 2018-11-11 11:32 2018-11-11_1132/
>drwx------ root/root 0 2018-11-11 11:32 2018-11-11_1132/mysql/
>-rw-r--r-- root/root 831 2018-11-11 11:32 2018-11-11_1132/mysql/mysql.sql
> ```
## restore database:
```
tar -xf [backupfile].tar.gz
cd .[backupfile]/mysql/
mysqladmin -u root -p[root_password] create[database_name]
mysql -u root -p[root_password] [database_name] < dumpfilename.sql
```
## Setup crontab:
```
echo "#mysql database backup
32 1 * * * root /etc/scripts/db_backup_daglig.sh > /dev/null 2&>1
44 * * * * root /etc/scripts/db_backup_horly.sh > /dev/null 2&>1" | tee /etc/cron.d/backup_MYsql
```
### Verfie that cron is working
```
grep "/etc/tilpasset/db_backup_horly.sh" /var/log/syslog
```