Bash скрипт для бэкапа и восстановления всех баз и пользователей в mysql


Эта заметка о том, как можно быстро сдампить все базы MySql в отдельные файлы в среде bash:
Backup:

for db in $(echo "show databases;" |mysql |grep -v "Database\|^mysql$\|information_schema\|performance_schema\|^test"); 
do 
   mysqldump --routines --opt $db |gzip > "$db".sql.gz; 
   echo "done with $db"; 
done

Restore:

for db in $(ls |cut -d "." -f 1); 
do 
   mysql $db < "$db".sql; 
  echo "done with $db"; 
done

Если нужно при восстановлении еще и создать новые базы:

for db in $(ls |cut -d "." -f 1); 
do 
   echo "create database \`$db\`;" |mysql; 
   mysql $db < "$db".sql; 
   echo "done with $db"; 
done

Все это можно просто скопировать и вставить в терминал.
Я делаю вывод "done with $db", что бы знать, какие базы уже обработаны.

А вот таким образом можно получить всех mysql пользователей с паролями и правами на базы:

for user in $(echo "select concat(user,'@',host) from mysql.user;" |mysql |grep -v concat); 
do 
   echo "show grants for $(echo $user|sed -e "s|@|'@'|g" -e "s|^|'|g" -e "s|$|'|g");" |mysql |grep -v "^Grants for\|root" |sed 's/$/;/g'; 
done

Полученный вывод можно скопировать и ставить в консоле mysql на новом сервере, или сохранить в файл.
Исключаем пользователя root, что бы при восстановлении на новом сервере, не затереть существующего.

Share Button
(Visited 296 times, 1 visits today)

Один комментарий на «“Bash скрипт для бэкапа и восстановления всех баз и пользователей в mysql”»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.