Если скрипты для создания автоматического ежедневного бекапа всех баз данных?Собственно основная задача в том, чтобы скрипт делал бекапы всех баз данных, имеющихся на сервере (т.к. базы могут постоянно добавляться и добавлять их в бекап в ручную неудобно).
+ есть требование: чтобы для каждой базы создавался свой .sql файл.Видела скрипты, которые позволяют реализовать все, кроме как - автоматическое построение спсика бд для бекапа (например: http://www.opennet.me/base/sys/mysql_backup.txt.html), но как я писала ранее, руками добавлять БД в список для бекапа не подходит.
Надеюсь на Вашу помощь :)
Насколько я помню, для бекапа InnoDB придётся всё равно стопать сервер. Так кто вам мешает бекапить всю /var/db/mysql - все MySQL-базы как правило внутрях, даже список не нужен. Список нужен если бекапить надо не все, а только конкретные. Вот чтобы sql-файл создавался это несколько сложнее и тормозно будет, а смысла как-то не улавливаю.
#!/bin/shbackup_dir=/var/backups/mysql/
for i in `/usr/local/bin/mysql -ss -e "show databases;"`; do
if [ $i != test ] && [ $i != information_schema ]
then
backup_name=$i.`date +%Y%m%d%H%M%S`.dump.bz
/usr/local/bin/mysqldump $i | bzip2 > $backup_dir$backup_name
fi
donefind $backup_dir*.bz -type f -a -mtime +7 -exec rm {} \;
Только в дамп надо ключ добавить чтобы и процедуры тоже бекапил, если есть
>[оверквотинг удален]
> backup_name=$i.`date +%Y%m%d%H%M%S`.dump.bz
> /usr/local/bin/mysqldump $i | bzip2 > $backup_dir$backup_name
> fi
>done
>
>find $backup_dir*.bz -type f -a -mtime +7 -exec rm {} \;
>
>
>Только в дамп надо ключ добавить чтобы и процедуры тоже бекапил, если
>естьогромное спасибо!
буду сегодня тестироватьПроцедур пока нет слава богу, если будут - можете написать пример как делать, если будут процедуры?
подскажите пожалуйста еще, как задавать пароль при коннекте к серверу без промта?просто вида:
/usr/local/bin/mysql --user=root -password=XXXXXне получается (пишет, что доступ запрещен), хотя если делать просто
/usr/local/bin/mysql --user=root -password
(тогда он запрашивает и ввести пароль - нормально проходит)а вот без промта не получается.
с синтаксисом разобралась, протупила, для Mysqdump также нужен был логин и пароль :)При дампе возникают ошибки вида:
mysqldump: Got error: 1049: Unknown database 'XXXXX' when selecting the database
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLESиз-за чего это может быть? и как бороться
>mysqldump: Got error: 1049: Unknown database 'XXXXX' when selecting the databasemysql> use 'XXXXX' работает ?
>mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLESэто тоже можно отключить. только желательно представлять к чему это может привести.
Я попробовал написать на PHP следующий скрипт и у меня вывело на экран список баз MySQL... А дальше можно добавить mysqldump и имя файла db_name.sql... Мне интересно что будет дальше, поэтому сообщите мне, пожалуйста о ваших результатах... Если надо, то могу дописать скрипт до конца... Успехов!!!#!/usr/bin/php
<?php
$db=mysql_connect('localhost','root','');
$rez=mysql_query('show databases');
echo mysql_error();
while ($row=mysql_fetch_assoc($rez))
{
echo $row['Database']."\n";
}mysql_close($db);
?>