Сценарий резервного копирования MySQL с уведомлением

0

Я пробовал интернет в течение всего этого уик-энда в надежде найти множество сценариев, которые я могу редактировать для достижения своей цели.

Я пытаюсь создать сценарий, который будет автоматически создавать резервные копии и сжимать все базы данных mysql в отдельный файл на локальном хосте, а затем выводить список dbs с резервными копиями с размером каждого db в электронном письме

используя Centos7 и последнюю версию mysql (mariaDB) (устанавливается 2018) и mailx для почтового агента

это сценарий, который у меня есть до сих пор...

#!/bin/bash
# Custom script to backup all MySQL dbs on localhost
# and output db list and sizes to email

# Some Variables
myuser="root"
mypass="******"

# Get current date
# date +"%d-%m-%y %T"

# Get list of DBs to backup
mysql -u $myuser -p$mypass -e 'show databases' > dblist

# Cleanup dblist
sed -i '/information_schema/d' dblist
sed -i '/mysql/d' dblist
sed -i '/performance_schema/d' dblist
sed -i '/Database/d' dblist

for db in $(mysql -u root -p****** -e 'show databases');
do
if [[ "$db" != *Database* && "$db" != *schema* && "$db" != "mysql" && "$db" != *performance* && "$db" != "mysql" ]];
then
mysqldump -u root -p****** $db | gzip -c > /backups/WEB02DBs/$db.sql.gz
fi
done

echo $dblist | mail -s "WEB02 DBs Backed UP" [email protected]

если я использую только $ db в эхо в конце, он включает только производительность db в тело электронной почты, в основном что-то еще, что я пытаюсь получить список dbs в электронной почте, появляется emtpy

часть размера db я может просто не получить права, либо есть синтаксическая ошибка, либо она ничего не помещает в электронную почту, даже если я выводю результаты в файл, тело электронной почты пуст

первые несколько переменных - я пытаюсь использовать $ myuser и $ mypass в скрипте вместо того, чтобы вводить root/password для каждой функции

то я также могу получить список dbs, а "вручную" удалить системные DB

может ли кто-нибудь помочь мне заставить это работать?

Теги:
centos7
mailx

1 ответ

1
Лучший ответ

Я предполагаю, что вы хотите что-то вроде этого

for db in $(mysql -u root -p****** -e 'show databases');
do
if [[ "$db" != *Database* && "$db" != *schema* && "$db" != "mysql" && "$db" != *performance* && "$db" != "mysql" ]];
then
    mysqldump -u root -p****** $db | gzip -c > /backups/WEB02DBs/$db.sql.gz && \
    printf '%s backed up\n' "$db"
fi
done | mail -s "WEB02 DBs Backed UP" [email protected]

поэтому весь выход идет по электронной почте.

Вы не должны включать пароли в сценарии.

  • 0
    спасибо, что приятно помещает все резервные копии БД в электронное письмо, есть ли какие-либо предложения о том, как получить размер БД? Так, где я тогда должен поставить пароль mysql для скрипта, если вы не возражаете, я спрашиваю.
  • 1
    stackoverflow.com/questions/1733507/...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню