[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
[Как делать backup средствами PHP]
Есть как минимум 3 варианта как делать backup базы данных MySQL сайта [1]:
1. Выполнить запрос к базе данных (для backup) из файла PHP. 2. Запустить утилиту mysqldump с использованием функции system() из файла PHP. 3. Использовать для backup оснастку phpMyAdmin [2].
Вариант 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. 2. Как установить phpmyadmin на WEB-сервер. 3. Joomla: заметки по использованию, п. 9.
|