как создать скрипт для резервного копирования баз данных MySQL на отдельные файлы?

Мне нужно создать сценарий для автоматизации процесса резервного копирования для моего сервера базы данных. Сегодня на сервере имеется 19 баз данных и для предотвращения создания какой-либо схемы и не предусмотрены сценарием, я бы хотел, чтобы она резервировала все базы данных, перечисленные в запросе «show schemas».

Моя идея состоит в том, что каждая схема сбрасывается дважды (т. Е. В 0h00 и 12h00) в день, сжимается и сохраняется в папке /home/{user}/database_backup/daily/[day_of_week] .

Раз в неделю все папки [day_of_week] сжимаются и сохраняются в /home/{user}/database_backup/weekly/[week_of_month] .

Наконец, раз в месяц все [week_of_month] будут сжаты сохраненными в /home/{user}/database_backup/monthly/ и останутся там, чтобы другое приложение могло выполнить резервное копирование на ленту.

Сегодня это приложение для резервного копирования на магнитную ленту ежедневно поддерживает резервное копирование /var/lib/mysql , но должно быть, восстановление этих файлов или использование их на другом сервере базы данных несколько сложно.

Я знаю, что это слишком открытый вопрос, но помощь, как всегда, ценится.

Вы можете перебрать все базы данных на сервере и экспортировать их один за другим, как это в сценарии оболочки:

 #!/bin/sh HOSTNAME='localhost' MYSQLUSER='root' MYSQLPASS='xyz' for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases"); do local FILENAME=${HOSTNAME}_Database_${DB}.sql.gz mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines --event | gzip -c > $FILENAME done