|
|
|
| есть в windows версии MySQL такой файл mysqldump.exe.
Он как я понимаю отвечает за создание дампа БД.
Если это так то может быть можно с помощью планировщика и cmd иожно настроить что то типа автоматического бэкапа?
Если кто пробовал - отпишитесь или может кто знает команды этой программы? | |
|
|
|
|
|
|
|
|
для: nek-v
(29.08.2008 в 16:28)
| | Что у вас вызывает затруднение - синтаксис утилиты mysqldump.exe или создание скрипта для автоматического резервирования данных? Для создания дампа достаточно выполнить команду
mysqldump -u user -ppass database > database.sql
|
Где user - имя MySQL-пользователя, pass - его пароль database - имя базы данных, а database.sql - имя файла с дампом. Выполнить эту команду например в PHP можно заключив её в обартные кавычки. | |
|
|
|
|
|
|
|
для: cheops
(29.08.2008 в 22:11)
| | можно подробнее? Я столкнулся с необходимостью автоматического бэкапа (однажды упал сервер,базы маленькие но для работы жизненно необходимы) но я мало смыслю в работе сервера MySQL =(
cheops можно подробнее? мне бы не через скрипт а как либо через bat файлы чтоб можно было запихнуть в планировщик.
Ибо наш центральный сервер это обычный комп на Windows XP Prof с гигом оперативы и 80гб диска.
Ни о каком кроне чтоб можно было через скрипты бэкапить речи не может идти. | |
|
|
|
|
|
|
|
для: 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? | |
|
|
|
|
|
|
|
для: cheops
(30.08.2008 в 13:56)
| | Связка apache+php+mysql
Таблицы MyISAM
На этом сервере стоит
система управления гостиницей которую я сам пишу по просьбам трудящихся.
Пользователи это в основном бухгалтер,администратор,завхоз,зав.производством ну и я инженер.
круглосуточный доступ нужен только администратору поскольку заселение гостей круглосуточно.
Работа может прырыватся,это в принципе не страшно но не желательно.
Нагрузка не высока а упал сервер по причине долгосрочного отключения света и тупости ночной смены которая не отключила вовремя комп.
Все же можно как то через планировщик?
Или подскажите где взять скрипт для бэкапа?
поскольку познаний в php пока хватает только на минимальную работу с БД (запись выборка фильтрация и вывод в нужном виде). | |
|
|
|
|
|
|
|
для: 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, можно ещё и сжать архив... | |
|
|
|
|
|
|
|
для: cheops
(30.08.2008 в 15:01)
| | cheops данный скрипт просто создает папки по дате.
А дамп как создать? | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 16:44)
| | Дамп создает эта строка
Само собой mysqldump должен быть доступен по пути. | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 16:52)
| | он должен лежать в папке скриптта? о_О | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 16:54)
| | Я этого не говорил.
Есть переменная окружения PATH
И вообще, кто мешает путь задать прямо в $copy = 'c:\\путь\\mysqldump --o ....' | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 17:14)
| | не работает ваш вариант к сожалению,папки создает но самого дампа не делает =( | |
|
|
|
|
|
|
|
для: 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 */
|
содержимого своих таблиц я что то не вижу...
Я что то не так делаю? | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 17:58)
| | а пользователь и пароль при вызове mysqldump указаны были? | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 18:07)
| | Конечно
ну иначе бы скрипт просто не запустился бы...
Как я понимаю это
if($database['Database'] != 'information_schema')
|
указывает какую базу не бэкапить?
Что вообще говорится в дампе который я привел?
Я просто в данный скрипт подставляю свои значения и пробую. | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 18:16)
| | мда...
Ни у когот нет мыслей по данному поводу?
Что это в дампе то?
и почему туда пишется оно а не дамп баз? | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 22:20)
| | о_О так если у рута мало прав то у кого их хватает?
Я из под рута запускаю этот скрипт!
Может чего не так делаю? | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 23:05)
| | Собственно,ошибка может оказаться и другой....
Попробуйте запустить руками. | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 23:18)
| | кого? сам mysqldump?
Если да то просто открывается и закрывается консоль | |
|
|
|
|
|
|
|
для: nek-v
(30.08.2008 в 23:28)
| |
mysqldump -u root -pRootPassword --opt DatabaseName > dump.sql
|
И делать это надо в заранее открытой консоли. | |
|
|
|
|
|
|
|
для: Trianon
(30.08.2008 в 23:55)
| | Спасибо!!!
Работает!
А как нибудь скриптом на php можно эту команду сделать? | |
|
|
|
|
|
|
|
для: nek-v
(31.08.2008 в 00:13)
| | а cheops разве не в скрипте вызов показал? | |
|
|
|
|
|
|
|
для: Trianon
(31.08.2008 в 00:15)
| | Блин вот оно что!!!
Я параметры вызова дампа в скрипте не задал!!!
Спасибо вам всем за терпение... | |
|
|
|
|
|
|
|
для: cheops
(30.08.2008 в 13:56)
| | Кстати по ссылке только chm файл в архиве =(
Но гугл помог =) | |
|
|
|