BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 25 июн 2025, 15:49

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 28 мар 2013, 13:20 
Не в сети

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Всем привет.
У меня стояла задача обеспечить бекап базы BGB4.6 средствами mysqdump. Т.е. в текстовые sql файлы.
Другие методы не подходили по ряду причин.
Полный бекап занимает пример 40 минут. И в это время системой практически нельзя пользоваться. Даже абонентские соединения начинают отваливаться. В общем не вариант. Известно, что BGB заводит новые таблицы на каждый месяц. Я решил, что будет правильно бекапить только новые таблицы и те, что изменились.
Своего рода инкрементальный бекап.
Получился скрипт, который выношу на обсуждение:

Цитата:
#!/bin/sh

DBHOST=$1
DBUSER=$2
DBPASS=$3
DBNAME=$4
BACKUPDIR=$5

CMD=`mysql -h $DBHOST -u $DBUSER -p$DBPASS $DBNAME --silent --batch --raw -e "SHOW TABLE STATUS;"`

SAVEIFS=$IFS
IFS='
'
for i in $CMD
do
TABNAME=`echo $i | awk -F '\t' '{print ($1)}'`
PRETABDATE=`echo $i | awk -F '\t' '{print ($13)}'`
TABENGINE=`echo $i | awk -F '\t' '{print ($2)}'`
if [ $TABENGINE != "MyISAM" -a $TABENGINE != "InnoDB" ]
then
continue
fi
if [ "$PRETABDATE" = "NULL" ]
then
PRETABDATE=`echo $i | awk -F '\t' '{print ($12)}'`
fi
TABDATE=`date -d "$PRETABDATE" +%s`
if ( [ -f $BACKUPDIR/$TABNAME ] )
then
DATE1=`ls --full-time $BACKUPDIR/$TABNAME | awk '{print $6;}'`
DATE2=`ls --full-time $BACKUPDIR/$TABNAME | awk '{print $7;}' | sed "s/\\..*//"`
DATE3=$DATE1" "$DATE2
FDATE=`date -d "$DATE3" +%s`
if ( [ $TABDATE -le $FDATE ] )
then
echo $TABNAME ... Skip
continue
fi
fi
echo $TABNAME ... Backup
/usr/bin/mysqldump --opt -h $DBHOST -u $DBUSER -p$DBPASS $DBNAME $TABNAME > $BACKUPDIR/$TABNAME
done

IFS=$SAVEIFS

echo "All done."
exit 0


Скрипт сравнивает дату модификации (или создания) таблицы и дату файла-бекапа. Если его нет или дата старая - делается бекап.
Теперь бекап-обновление у меня происходит за 1.5 минуты. Можно делать несколько раз в день.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2013, 13:40 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Можно еще бекапить через slave как вариант


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2013, 14:01 
Не в сети

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Можно. Но это будет не бекап, а реплика. Не поможет в случае массой порчи данных или удаления строк, т.к. изменения тут же произойдут и на реплике.
Были случай когда из-за неверно составленного запроса терялись исходные данные. Выручал бекап.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2013, 14:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
У нас каждый день делается полный бэкап со слейва по ночам: отключается репликация, делается бэкап, репликация включается, данные догоняются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 мар 2013, 17:58 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Cromeshnic писал(а):
У нас каждый день делается полный бэкап со слейва по ночам: отключается репликация, делается бэкап, репликация включается, данные догоняются.


по хорошому для этого снапшоты надо бы делать и с него бакапить


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.035s | 26 Queries | GZIP : On ]