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

0

Привет, у меня 10 баз данных, каждая база данных имеет 3 таблицы с одинаковыми именами пользователей

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

Поэтому я начал с этого образца кода.

mysql -uroot -p -e 'show databases' | while read dbname; do mysqldump -uroot -p -T/backup/$dbname/ --fields-terminated-by="|" "$dbname" > "$dbname".txt; done

Тогда я получаю эту ошибку.

mysqldump: Can't create/write to file '/home/database/users.sql' (Errcode: 2 - No such file or directory)

У меня нет много навыков с помощью скриптов bash. Пожалуйста, помогите мне!

Мой второй скрипт

#!/bin/bash

echo "MySQL backup"
mysql -u root -pPwd -e "show databases" \
    | grep -Ev 'Database|information_schema' \
    | while read dbname;
do
  echo "Dumping $dbname"
  mysqldump -u root -pPwd --fields-terminated-by="|" $dbname > /var/lib/mysql-files/$dbname/ > "$dbname".txt; done
done
Теги:

1 ответ

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

Вы указали папки для хранения дампов, но не создавайте их в скрипте, поэтому добавьте mkdir до команды mysqldump:

do
  echo "Dumping $dbname"
  mkdir -p /var/lib/mysql-files/${dbname} 
  mysqldump ... > /var/lib/mysql-files/${dbname}/${dbname}.sql
done

Ещё вопросы

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