Помогите с бекапом пожалуйсто!!!
Помогите с бекапом пожалуйсто!!!
При запуске /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!!!!!
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!!!!!
У меня в 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
#!/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
метод тот же самый что и utm5_backup.sh
именно он и даёт ошибку по памяти
опция --quick помогает слабо, т.е. bakup грохается всё равно но только делает это молча.
Код: Выделить всё
$sqldump_path -u $database_login $database_password $database | gzip > $backup_path/UTM5.$dst_dir.gz
опция --quick помогает слабо, т.е. bakup грохается всё равно но только делает это молча.
попробуй сделать вручную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, которое используется в нетаповском скрипте
и кстати какой размер базы?
У меня такой скрипт бэкапит:
--------------------
#!/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).
--------------------
#!/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).
-
- Сообщения: 180
- Зарегистрирован: Пн дек 26, 2005 13:17
- Откуда: msk
при типе таблиц InnoDB нет смысла копировать директории mysql, так нельзяcalculator писал(а):Kostya
У нас InnoDB таблицы в базе, бекаплю копированием папки /var/lib/mysql при остановленом биллинге.
p.s. Пробовали mysqlhotcopy и mysqldump - база бъется.
mysqlhotcopy по смыслу тоже самое, в этом случае не подходит
в этом случае все должно нормально бэкапится при использовании mysqldump, ничего бится не должно, так как таблицы на время дампа блокируются
При больших базах (несколько гигов) надо настраивать репликацию, то есть параллельную работу баз mysql,
вот тут появляется предположение: может для БД биллинга лучше использовать Interbase или Oracle...
Есть перловый скрипт для бекупа базы данных и сливания ее по фтп на сервер хранения.
Вот его содержание:
Вот его содержание:
Код: Выделить всё
#!/usr/bin/perl
use Net::FTP;
// Создаем массив с датой создания директории
@time=localtime();
if (@time[4] <=9) {
@date= (@time[3],"0",@time[4]+1,"0",@time[5]-100);
} else {
@date=(@time[3],@time[4+1],"0",@time[5]-100);
}
($a,$b,$c,$d,$e)=@date;
$f=$a.$b.$c.$d.$e;
// Соединение с фтп для создания директории по дате
$ftp = Net::FTP->new ('ip_address') || die "can't connect to ftp server";
$ftp->login ('user','password') || die "can't login to ftp server";
$ftp->mkdir ($f) || die "can't create dir at ftp server";
$ftp->quit;
// И наконец сливаем файлы базы данных
system("cd /usr/var/db/mysql/UTM5 \
ftp -n ip_address\ <<End-Of-Session \
user user password \
cd $f \
prompt \
mput * \
quit");
ну тогда оракл остаетсяdalex писал(а):ИМХО интербейс слишком слабый а оракл слишком сильныйможет для БД биллинга лучше использовать Interbase или Oracle...)))
просто не хочется через год, когда база станет под 10 гигов прыгать вокруг нее и рвать на себе волосы...
тем более как ведет себя биллинг во время бекапа, когда идет дамп таблицы с трафиком (то есть она заблокирована mysqldump'ом) и что произойдет если ядро биллинга в этот момент попытается сделать запись в эту таблицу? core dumped? segfault?
Получается "реальность времени" биллинга теряется? напишите ответ пожалста уважаемые разработчики..
Последний раз редактировалось j4ck Пт июн 09, 2006 09:24, всего редактировалось 1 раз.
он не подойдет, если тип таблиц InnoDB, только для MyISAM - это четко написано в документации на mysqlMad Dogg писал(а):Есть перловый скрипт для бекупа базы данных и сливания ее по фтп на сервер хранения.
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”.
-
- Сообщения: 180
- Зарегистрирован: Пн дек 26, 2005 13:17
- Откуда: msk
При выключенном биллинге и мускуле копировать можно, но это разовый метод и не для биллинга, работающего в режиме реального времениcalculator писал(а):j4ck
Повторюсь - биллинг и mysql остановлены. Почему неправильно копировать папку mysql? По крайней мере за пол года бекапов ни одного глюка с базой по этой причине небыло. Базу восстанавливал раза 4.
mysqlhotcopy - скрипт на perl, который просто копирует директории, к тому же при остановленном биллинге. Как часто вы делаете бекап базы, допустим 2 раза в день и что 2 раза в день останавливаете utm5_core и mysqld?
InnoDB does not store table contents in database directories, and mysqlhotcopy works only for MyISAM and ISAM tables.