MySQL - как делать backup |
![]() |
Добавил(а) microsin |
В этой статье описывается несколько примеров работы с базами данных MySQL. [mysqldump и командная строка] Выгрузка базы в дамп. Выгрузка и загрузка базы данных через текстовый файл возможна с помощью утилиты mysqldump. Пример: mysqldump --add-drop-table -u dbusername -p dbname > dump.sql или лучше просто... # Внимание! Здесь username и userpass относятся не к MySQL, # это логин и пароль шелла mysqldump --opt -Q -u username -p userpass dbname > dump.sql В следующем варианте принудительно выбирается 8-бит ANSI-кодировка символов, поскольку на MySQL-сервере по умолчанию может быть включена другая кодировка, например неудобная двухбайтная UTF-8 (у меня так стало на хостинге Агава при переходе на MySQL версии 4.1.22). mysqldump --user=dbusername --password=dbpass --default-character-set=cp1251 dbname > dump.txt При использовании кронтаба для бэкапа, нужно в скриптах указывать полный путь до mysqldump: # так неправильно: mysqldump --opt -Q -u username -p userpass dbname > dump.sql # а так правильно: /usr/local/bin/mysqldump --opt -Q -u username -p userpass dbname > dump.sql Еще пример: #backup: mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME > dump.txt #restore: mysql -uLOGIN -PPORT -hHOST -pPASS DBNAME < dump.txt Для устранения этой ошибки достаточно создать конфигурационный файл, где будут указаны логин и пароль пользователя MySQL, и применить для mysqldump опцию командной строки --defaults-extra-file. Пример конфигурационного файла .config: [client] user = логин_пользователя_MySQL password = пароль_пользователя_MySQL После этого mysqldump можно запускать следующим образом, предупреждение выдаваться не будет: mysqldump --defaults-extra-file=./.config имя_базы_данных > dumpbase.sql Загрузка базы из дампа. Восстановление базы данных из дампа может быть выполнена командой: mysql -u логин_пользователя_MySQL имя_базы_данных < dimpbase.sql Enter password: здесь интерактивно вводится пароль пользователя MySQL Передача пароля пользователя MySQL через командную строку, это может быть полезно для запуска из скрипта [4]: mysql --password=пароль_пользователя MySQL -u логин_пользователя_MySQL имя_базы_данных \ < dimpbase.sql [Как делать backup средствами PHP] Есть как минимум 3 варианта как делать backup базы данных MySQL сайта [1]: 1. Выполнить запрос к базе данных (для backup) из файла PHP. Вариант 1, выполнение запроса к базе данных из PHP. Ниже приведен пример использования запроса SELECT INTO OUTFILE к базе данных для создания backup таблицы: < ?php include 'config.php'; include 'opendb.php'; $tableName = 'mypet'; $backupFile = 'backup/mypet.sql'; $query = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName"; $result = mysql_query($query); include 'closedb.php'; ?> Чтобы выполнить восстановление из backup, Вам просто нужно запустить запрос LOAD DATA INFILE, примерно так: < ?php include 'config.php'; include 'opendb.php'; $tableName = 'mypet'; $backupFile = 'mypet.sql'; $query = "LOAD DATA INFILE 'backupFile' INTO TABLE $tableName"; $result = mysql_query($query); include 'closedb.php'; ?> Хорошая идея - давать название файлу backup из названия таблицы базы данных, наподобие tablename.sql, тогда Вы всегда будете знать, к какой таблице относится файл backup. Вариант 2, запуск утилиты командной строки с использованием функции system(). На языке PHP функция system() используется для выполнения внешней программы. Поскольку MySQL всегда имеет в своем составе встроенный инструментарий для создания backup базы данных MySQL (это утилита mysqldump), то можно запускать этот инструментарий из скрипта PHP. < ?php include 'config.php'; include 'opendb.php'; $backupFile = $dbname . date("Y-m-d-H-i-s") . '.gz'; $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass$dbname | gzip > $backupFile"; system($command); include 'closedb.php'; ?> Вариант 3, использования для backup инструментария phpMyAdmin [2]. В этом случае с Вашей стороны не предполагается никакого программирования. Я не считаю этот вариант удобным, однако он все же заслуживает упоминания, чтобы Вы знали больше от возможностях бекапа баз данных. Чтобы сделать backup Вашей базы данных MySQL с использованием phpMyAdmin, кликните на ссылку "export", находящуюся на главной странице phpMyAdmin. Затем выберите базу данных, для которой Вы хотите создать backup, проверьте соответствующие опции SQL и введите имя для файла backup. [Как посмотреть, какие есть базы MySQL на сервере] mysql -u username(обычно root) -h localhost -p -Bse 'show databases' [Ссылки] 1. Perform MySQL backup using PHP site:tutorialspoint.com. |