Программирование HTML MySQL - как делать backup Fri, December 06 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


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.
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'

[Ссылки]

1Perform MySQL backup using PHP site:tutorialspoint.com.
2. Как установить phpmyadmin на WEB-сервер.
3Joomla: заметки по использованиюп. 9.
4. How to pass password to mysql command line site:unix.stackexchange.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page