Практика
Частенько приходится делать дампы баз через ssh, захотелось как то это упростить, а на 100% нужного мне варианта не нашлось, написал свой небольшой скриптец, он выполняет поиск всех баз на сервере и предлагает выбрать одну из них для создания резервной копии (архива в формате gz куда и будет запакован дамп):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/usr/local/bin/bash
# MySQL backup script
# Copyright (c) 2012 Roman Gushel
# ---------------------------------------------------------------------
#ulimit -t 3600
#user name
USER="user"
#user password
PASSWORD=" password "
#MYSQL host address ("localhost" by default)
HOST="host"
#dirrectory for backups
DIR="dir"
GZIP="$(which gzip)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
NOW=$(date +"%Y_%m_%d_%H-%M")
echo "Choose database number:"
i=0
for db in $($MYSQL -u$USER -h$HOST -p$PASSWORD -Bse 'show databases')
do
echo "$i - $db"
DATABASES[$i]=$db
i=$((i+1))
done
read RESULT
if [ "$RESULT" -ge 0 ] && [ "$RESULT" -lt ${#DATABASES[@]} ]
then
eval "DB=${DATABASES[$RESULT]}"
eval "FILE=$DIR$DB-$NOW.sql.gz"
$MYSQLDUMP -u$USER -h$HOST -p$PASSWORD $DB | $GZIP -9 > $FILE
else
echo "Wrong number!"
fi
|
В случае когда объем выгружаемой базы велик возможно появление ошибки Cputime limit exceeded: [текущее макс. процессорное время], для этого стоит увеличить максимальное количество процессорного времени в секундах используя команду ulimit с флагом -t, но это не всегда возможно, т.к. данная команда может требовать повышенных привилегий и в ответ на ее выполнение вы просто получите ошибку.
Настройки которые следует указать:
USER=”user” – имя пользователя
PASSWORD=” password ” – пароль пользователя
HOST=”host” – хост, на котором висит субд
DIR=”dir” – директория в которую будут сохранены дампы
Комментарии
Оставить комментарий
Базы данных - MySql (Maria DB)
Термины: Базы данных - MySql (Maria DB)