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

Все эти выходные я рыскал по Интернету в надежде найти множество сценариев, которые я могу редактировать для достижения своей цели.

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

с использованием 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 в электронном письме, оказывается пустым

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

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

тогда я также могу получить список БД и «вручную» удалить системные БД

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

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
888
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]

поэтому все вывод идет на электронную почту.

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

спасибо, что красиво помещает все резервные копии БД в электронное письмо, любые предложения о том, как получить там размер БД? Итак, где я должен поместить пароль mysql для сценария, если вы не возражаете, я спрашиваю.

Fishy 21.05.2018 07:30
stackoverflow.com/questions/23216341/…
Diego Torres Milano 21.05.2018 07:38

Другие вопросы по теме