Помогите с бекапом пожалуйсто!!!

Технические вопросы по UTM 5.0
Kostya
Сообщения: 10
Зарегистрирован: Сб окт 22, 2005 12:58

Помогите с бекапом пожалуйсто!!!

Сообщение Kostya »

При запуске /netup/utm5/bin/utm5_backup.sh после непродолжительного раздумья отвечает
Database type mysql. Dumping and archiving database ... please wait.
/usr/local/bin/mysqldump: Out of memory (Needed 1477684 bytes)
/usr/local/bin/mysqldump: Got error: 2008: MySQL client run out of memory when retrieving data from server
Done.
На компе 512М памяти куда больше!? Где копать? HELP!!!!!

Mikhail
Сообщения: 223
Зарегистрирован: Ср июл 27, 2005 06:25

Сообщение Mikhail »

У меня в cron'е (0 0 * * * /путь/где/лежит/скрипт):

#!/bin/sh
year=$(/bin/date +%Y)
month=$(/bin/date +%m)
day=$(/bin/date +%d)
user=Имя_пользователь
password=Пароль_пользователя

/bin/mkdir -p /usr/local/mysql/var/$year/$month
/usr/local/mysql/bin/mysqldump -u$user -p$password UTM5 > /usr/local/mysql/var/$year/$month/$day.sql
/usr/bin/gzip /usr/local/mysql/var/$year/$month/$day.sql
chmod 600 /usr/local/mysql/var/$year/$month/$day.sql.gz

Kostya
Сообщения: 10
Зарегистрирован: Сб окт 22, 2005 12:58

Сообщение Kostya »

метод тот же самый что и utm5_backup.sh

Код: Выделить всё

$sqldump_path -u $database_login $database_password $database | gzip > $backup_path/UTM5.$dst_dir.gz
именно он и даёт ошибку по памяти
опция --quick помогает слабо, т.е. bakup грохается всё равно но только делает это молча.

jack7
Сообщения: 73
Зарегистрирован: Пн июн 06, 2005 10:56

Сообщение jack7 »

Kostya писал(а):метод тот же самый что и utm5_backup.sh

Код: Выделить всё

$sqldump_path -u $database_login $database_password $database | gzip > $backup_path/UTM5.$dst_dir.gz
именно он и даёт ошибку по памяти
опция --quick помогает слабо, т.е. bakup грохается всё равно но только делает это молча.
попробуй сделать вручную

mysqldump -u user -p passwd UTM5 > UTM5.sql
так проще, без сжатия gzip, которое используется в нетаповском скрипте

и кстати какой размер базы?

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

У меня такой скрипт бэкапит:
--------------------
#!/bin/bash
date=`date +%d%m%G-%H%M`
mkdir /netup/utm5/backup/UTM5_$date
mysqlhotcopy --allowold --password=**** --user=UTM5 UTM5 /netup/utm5/backup/UTM5_$date
cd /netup/utm5/backup/
tar czvf utm5_$date.tgz UTM5_$date/
rm -rf UTM5_$date/
---------------
Вроде (тьфу-тьфу-тьфу) без проблем с июля прошлого года работает. Кажись, я его где-то здесь же и взял (может в FAQ).

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Сообщение calculator »

Kostya
У нас InnoDB таблицы в базе, бекаплю копированием папки /var/lib/mysql при остановленом биллинге.

p.s. Пробовали mysqlhotcopy и mysqldump - база бъется.

j4ck
Сообщения: 46
Зарегистрирован: Ср фев 09, 2005 09:44

Сообщение j4ck »

calculator писал(а):Kostya
У нас InnoDB таблицы в базе, бекаплю копированием папки /var/lib/mysql при остановленом биллинге.

p.s. Пробовали mysqlhotcopy и mysqldump - база бъется.
при типе таблиц InnoDB нет смысла копировать директории mysql, так нельзя
mysqlhotcopy по смыслу тоже самое, в этом случае не подходит

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

При больших базах (несколько гигов) надо настраивать репликацию, то есть параллельную работу баз mysql,

вот тут появляется предположение: может для БД биллинга лучше использовать Interbase или Oracle...

Аватара пользователя
dalex
Сообщения: 1306
Зарегистрирован: Пт янв 21, 2005 11:54

Сообщение dalex »

может для БД биллинга лучше использовать Interbase или Oracle...
ИМХО интербейс слишком слабый а оракл слишком сильный :-))))

Аватара пользователя
Mad Dogg
Сообщения: 197
Зарегистрирован: Чт мар 30, 2006 15:19

Сообщение Mad Dogg »

Есть перловый скрипт для бекупа базы данных и сливания ее по фтп на сервер хранения.
Вот его содержание:

Код: Выделить всё

#!/usr/bin/perl
use Net::FTP;
// Создаем массив с датой создания директории
@time=localtime();
if &#40;@time&#91;4&#93; <=9&#41; &#123;
@date= &#40;@time&#91;3&#93;,"0",@time&#91;4&#93;+1,"0",@time&#91;5&#93;-100&#41;;
&#125; else &#123;
@date=&#40;@time&#91;3&#93;,@time&#91;4+1&#93;,"0",@time&#91;5&#93;-100&#41;;
&#125;
&#40;$a,$b,$c,$d,$e&#41;=@date;
$f=$a.$b.$c.$d.$e;
// Соединение с фтп для создания директории по дате
$ftp = Net&#58;&#58;FTP->new &#40;'ip_address'&#41; || die "can't connect to ftp server";
$ftp->login &#40;'user','password'&#41; || die "can't login to ftp server";
$ftp->mkdir &#40;$f&#41; || die "can't create dir at ftp server";
$ftp->quit;
// И наконец сливаем файлы базы данных
system&#40;"cd /usr/var/db/mysql/UTM5 \
ftp -n ip_address\ <<End-Of-Session \
user user password \
cd $f \
prompt \
mput * \
quit"&#41;;

j4ck
Сообщения: 46
Зарегистрирован: Ср фев 09, 2005 09:44

Сообщение j4ck »

dalex писал(а):
может для БД биллинга лучше использовать Interbase или Oracle...
ИМХО интербейс слишком слабый а оракл слишком сильный :-))))
ну тогда оракл остается

просто не хочется через год, когда база станет под 10 гигов прыгать вокруг нее и рвать на себе волосы...
тем более как ведет себя биллинг во время бекапа, когда идет дамп таблицы с трафиком (то есть она заблокирована mysqldump'ом) и что произойдет если ядро биллинга в этот момент попытается сделать запись в эту таблицу? core dumped? segfault?
Получается "реальность времени" биллинга теряется? напишите ответ пожалста уважаемые разработчики..
Последний раз редактировалось j4ck Пт июн 09, 2006 09:24, всего редактировалось 1 раз.

j4ck
Сообщения: 46
Зарегистрирован: Ср фев 09, 2005 09:44

Сообщение j4ck »

Mad Dogg писал(а):Есть перловый скрипт для бекупа базы данных и сливания ее по фтп на сервер хранения.
он не подойдет, если тип таблиц InnoDB, только для MyISAM - это четко написано в документации на mysql
5.9.1. Database Backups

Because MySQL tables are stored as files, it is easy to do a backup. To get a consistent backup, do a LOCK TABLES on the relevant tables, followed by FLUSH TABLES for the tables. See Section 13.4.5, “LOCK TABLES and UNLOCK TABLES Syntax”, and Section 13.5.5.2, “FLUSH Syntax”. You need only a read lock; this allows other clients to continue to query the tables while you are making a copy of the files in the database directory. The FLUSH TABLES statement is needed to ensure that the all active index pages are written to disk before you start the backup.

To make an SQL-level backup of a table, you can use SELECT INTO ... OUTFILE. For this statement, the output file cannot already exist because allowing files to be overwritten would constitute a security risk. See Section 13.2.7, “SELECT Syntax”.

Another technique for backing up a database is to use the mysqldump program or the mysqlhotcopy script. See Section 8.11, “mysqldump — A Database Backup Program”, and Section 8.12, “mysqlhotcopy — A Database Backup Program”.

Create a full backup of your database:

shell> mysqldump --tab=/path/to/some/dir --opt db_name

Or:

shell> mysqlhotcopy db_name /path/to/some/dir

You can also create a binary backup simply by copying all table files (*.frm, *.MYD, and *.MYI files), as long as the server isn't updating anything. The mysqlhotcopy script uses this method. (But note that these methods do not work if your database contains InnoDB tables. InnoDB does not store table contents in database directories, and mysqlhotcopy works only for MyISAM and ISAM tables.)

Stop mysqld if it is running, then start it with the --log-bin[=file_name] option. See Section 5.11.4, “The Binary Log”. The binary log files provide you with the information you need to replicate changes to the database that are made subsequent to the point at which you executed mysqldump.

For InnoDB tables, it is possible to perform an online backup that takes no locks on tables; see Section 8.11, “mysqldump — A Database Backup Program”.

calculator
Сообщения: 180
Зарегистрирован: Пн дек 26, 2005 13:17
Откуда: msk

Сообщение calculator »

j4ck
Повторюсь - биллинг и mysql остановлены. Почему неправильно копировать папку mysql? По крайней мере за пол года бекапов ни одного глюка с базой по этой причине небыло. Базу восстанавливал раза 4.

Kostya
Сообщения: 10
Зарегистрирован: Сб окт 22, 2005 12:58

Сообщение Kostya »

Спасибо всем! Утилитки типа mysqldump с различными ключиками работают с базой под 2 Гб крайне плохо. (или в моих руках плохо :) ) Воспользовался методом копирования. Надрую машину перенёс базу и вроде как всё заработало. Тока как-то это криво получается.

j4ck
Сообщения: 46
Зарегистрирован: Ср фев 09, 2005 09:44

Сообщение j4ck »

calculator писал(а):j4ck
Повторюсь - биллинг и mysql остановлены. Почему неправильно копировать папку mysql? По крайней мере за пол года бекапов ни одного глюка с базой по этой причине небыло. Базу восстанавливал раза 4.
При выключенном биллинге и мускуле копировать можно, но это разовый метод и не для биллинга, работающего в режиме реального времени

InnoDB does not store table contents in database directories, and mysqlhotcopy works only for MyISAM and ISAM tables.
mysqlhotcopy - скрипт на perl, который просто копирует директории, к тому же при остановленном биллинге. Как часто вы делаете бекап базы, допустим 2 раза в день и что 2 раза в день останавливаете utm5_core и mysqld?

Аватара пользователя
Mad Dogg
Сообщения: 197
Зарегистрирован: Чт мар 30, 2006 15:19

Сообщение Mad Dogg »

j4ck
Почему только при выключенном биллинге ? )))
Я бекапы делаю при включенном )))))
Раз в день, как пологаецца!

Ответить