Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как настроить автобэкап БД? помогите пожалуйсто...
 
 автор: nek-v   (29.08.2008 в 16:28)   письмо автору
 
 

есть в windows версии MySQL такой файл mysqldump.exe.
Он как я понимаю отвечает за создание дампа БД.
Если это так то может быть можно с помощью планировщика и cmd иожно настроить что то типа автоматического бэкапа?
Если кто пробовал - отпишитесь или может кто знает команды этой программы?

  Ответить  
 
 автор: ronin80   (29.08.2008 в 22:10)   письмо автору
 
   для: nek-v   (29.08.2008 в 16:28)
 

смотри

http://dev.mysql.com/tech-resources/articles/recovering-from-crashes-rus.html

  Ответить  
 
 автор: cheops   (29.08.2008 в 22:11)   письмо автору
 
   для: nek-v   (29.08.2008 в 16:28)
 

Что у вас вызывает затруднение - синтаксис утилиты mysqldump.exe или создание скрипта для автоматического резервирования данных? Для создания дампа достаточно выполнить команду
mysqldump -u user -ppass database > database.sql

Где user - имя MySQL-пользователя, pass - его пароль database - имя базы данных, а database.sql - имя файла с дампом. Выполнить эту команду например в PHP можно заключив её в обартные кавычки.

  Ответить  
 
 автор: nek-v   (30.08.2008 в 13:19)   письмо автору
 
   для: cheops   (29.08.2008 в 22:11)
 

можно подробнее? Я столкнулся с необходимостью автоматического бэкапа (однажды упал сервер,базы маленькие но для работы жизненно необходимы) но я мало смыслю в работе сервера MySQL =(
cheops можно подробнее? мне бы не через скрипт а как либо через bat файлы чтоб можно было запихнуть в планировщик.
Ибо наш центральный сервер это обычный комп на Windows XP Prof с гигом оперативы и 80гб диска.
Ни о каком кроне чтоб можно было через скрипты бэкапить речи не может идти.

  Ответить  
 
 автор: cheops   (30.08.2008 в 13:56)   письмо автору
 
   для: nek-v   (30.08.2008 в 13:19)
 

Во-первых в Windows XP имеется планировщик заданий, если он не подходит, можно воспользоваться бесплатным cron для Windows. Во-вторых скриптом удобнее воспользоваться, так как вероятно вы захотите, чтобы у вас дампы складировались в папку и их название каждый день было разным, чтобы можно было откатиться к версии, которая была несколько дней назад, а это проще языком выского уровня сделать. Для этого в cron достаточно запустить задание вида
10 0 * * * C:/PHP/php-win.exe D:/scripts/backup.php


PHP А что за сервер - он какие функции выполняет? Может ли его работа прерываться хоть на минуту и высокая ли нагрузка? Таблицы какие в основном используются MyISAM или InnoDB?

  Ответить  
 
 автор: nek-v   (30.08.2008 в 14:18)   письмо автору
 
   для: cheops   (30.08.2008 в 13:56)
 

Связка apache+php+mysql
Таблицы MyISAM
На этом сервере стоит
система управления гостиницей которую я сам пишу по просьбам трудящихся.
Пользователи это в основном бухгалтер,администратор,завхоз,зав.производством ну и я инженер.
круглосуточный доступ нужен только администратору поскольку заселение гостей круглосуточно.
Работа может прырыватся,это в принципе не страшно но не желательно.
Нагрузка не высока а упал сервер по причине долгосрочного отключения света и тупости ночной смены которая не отключила вовремя комп.
Все же можно как то через планировщик?
Или подскажите где взять скрипт для бэкапа?
поскольку познаний в php пока хватает только на минимальную работу с БД (запись выборка фильтрация и вывод в нужном виде).

  Ответить  
 
 автор: cheops   (30.08.2008 в 15:01)   письмо автору
 
   для: nek-v   (30.08.2008 в 14:18)
 

При создании скрипта можно отталкиваться от чего-то вроде
<?php
  $dblocation 
"localhost";
  
$dbuser "root";
  
$dbpasswd "";
  
$dbcnx mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) exit ("Error: can't get access to MySQL-server ".mysql_error());
  
chdir("D:/backup/db");
  
$gm date("YmdHi");
  
mkdir("D:/backup/db_sql/'.$gm");

  
$query "SHOW DATABASES";
  
$dbs mysql_query($query);
  if(!
$dbs) exit("Error: can't get access to databasess");
  if(
mysql_num_rows($dbs) > 0)
  {
    while(
$database mysql_fetch_array($dbs))
    {
      if(
$database['Database'] != 'information_schema')
      {
        
$copy 'mysqldump --opt '.$database['Database'].' >  D:/backup/db_sql/'.$gm.'/'.$database['Database'].".sql";
        `
$copy`;
      }
    }
  }
?>

Если имеется консольный zip или rar, можно ещё и сжать архив...

  Ответить  
 
 автор: nek-v   (30.08.2008 в 16:44)   письмо автору
 
   для: cheops   (30.08.2008 в 15:01)
 

cheops данный скрипт просто создает папки по дате.
А дамп как создать?

  Ответить  
 
 автор: Trianon   (30.08.2008 в 16:52)   письмо автору
 
   для: nek-v   (30.08.2008 в 16:44)
 

Дамп создает эта строка
        `$copy`; 

Само собой mysqldump должен быть доступен по пути.

  Ответить  
 
 автор: nek-v   (30.08.2008 в 16:54)   письмо автору
 
   для: Trianon   (30.08.2008 в 16:52)
 

он должен лежать в папке скриптта? о_О

  Ответить  
 
 автор: Trianon   (30.08.2008 в 17:14)   письмо автору
 
   для: nek-v   (30.08.2008 в 16:54)
 

Я этого не говорил.
Есть переменная окружения PATH
И вообще, кто мешает путь задать прямо в $copy = 'c:\\путь\\mysqldump --o ....'

  Ответить  
 
 автор: nek-v   (30.08.2008 в 17:38)   письмо автору
 
   для: Trianon   (30.08.2008 в 17:14)
 

не работает ваш вариант к сожалению,папки создает но самого дампа не делает =(

  Ответить  
 
 автор: nek-v   (30.08.2008 в 17:58)   письмо автору
 
   для: cheops   (30.08.2008 в 15:01)
 

ага...
вроде заработало...
Но результат удручает.
Вот что в файле дампа:
-- MySQL dump 10.11
--
-- Host: localhost    Database: mirabel
-- ------------------------------------------------------
-- Server version    5.0.51a-community-nt

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */

содержимого своих таблиц я что то не вижу...
Я что то не так делаю?

  Ответить  
 
 автор: Trianon   (30.08.2008 в 18:07)   письмо автору
 
   для: nek-v   (30.08.2008 в 17:58)
 

а пользователь и пароль при вызове mysqldump указаны были?

  Ответить  
 
 автор: nek-v   (30.08.2008 в 18:16)   письмо автору
 
   для: Trianon   (30.08.2008 в 18:07)
 

Конечно
ну иначе бы скрипт просто не запустился бы...
Как я понимаю это
if($database['Database'] != 'information_schema')

указывает какую базу не бэкапить?
Что вообще говорится в дампе который я привел?
Я просто в данный скрипт подставляю свои значения и пробую.

  Ответить  
 
 автор: nek-v   (30.08.2008 в 21:47)   письмо автору
 
   для: nek-v   (30.08.2008 в 18:16)
 

мда...
Ни у когот нет мыслей по данному поводу?
Что это в дампе то?
и почему туда пишется оно а не дамп баз?

  Ответить  
 
 автор: Trianon   (30.08.2008 в 22:20)   письмо автору
 
   для: nek-v   (30.08.2008 в 21:47)
 

Вероятно, у пользователя, из-под которого запускается mysqldump, не хватает привелегий на исполнение LOCK TABLES для БД.
mysqldump даже сообщает об этом в потоке ошибок, но Вы этого не видите.

mysqldump: Got error: 1044: Access denied for user 'user'@'%' to database 'mirabel' when using LOCK TABLES

  Ответить  
 
 автор: nek-v   (30.08.2008 в 23:05)   письмо автору
 
   для: Trianon   (30.08.2008 в 22:20)
 

о_О так если у рута мало прав то у кого их хватает?
Я из под рута запускаю этот скрипт!
Может чего не так делаю?

  Ответить  
 
 автор: Trianon   (30.08.2008 в 23:18)   письмо автору
 
   для: nek-v   (30.08.2008 в 23:05)
 

Собственно,ошибка может оказаться и другой....
Попробуйте запустить руками.

  Ответить  
 
 автор: nek-v   (30.08.2008 в 23:28)   письмо автору
 
   для: Trianon   (30.08.2008 в 23:18)
 

кого? сам mysqldump?
Если да то просто открывается и закрывается консоль

  Ответить  
 
 автор: Trianon   (30.08.2008 в 23:55)   письмо автору
 
   для: nek-v   (30.08.2008 в 23:28)
 

mysqldump -u root -pRootPassword --opt DatabaseName > dump.sql

И делать это надо в заранее открытой консоли.

  Ответить  
 
 автор: nek-v   (31.08.2008 в 00:13)   письмо автору
 
   для: Trianon   (30.08.2008 в 23:55)
 

Спасибо!!!
Работает!
А как нибудь скриптом на php можно эту команду сделать?

  Ответить  
 
 автор: Trianon   (31.08.2008 в 00:15)   письмо автору
 
   для: nek-v   (31.08.2008 в 00:13)
 

а cheops разве не в скрипте вызов показал?

  Ответить  
 
 автор: nek-v   (31.08.2008 в 00:33)   письмо автору
 
   для: Trianon   (31.08.2008 в 00:15)
 

Блин вот оно что!!!
Я параметры вызова дампа в скрипте не задал!!!
Спасибо вам всем за терпение...

  Ответить  
 
 автор: nek-v   (30.08.2008 в 14:20)   письмо автору
 
   для: cheops   (30.08.2008 в 13:56)
 

Кстати по ссылке только chm файл в архиве =(
Но гугл помог =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования