Резервное копирование БД с помощью mysql
Экспорт и импорт данных в MySQL обычно требуется при переносе информации из одной базы данных MySQL в другую и для осуществления резервного копирования.
Для выполнения действий по резервному копированию БД клиент может пойти тремя путями:
- Работать с БД через панель управления Plesk, используя СУБД (описание);
- Работать с БД используя unix shell;
- Обратиться в службу технической поддержки и попросить восстановить резервную БД.
Наиболее надежным вариантом будет тот, в котором Вы самостоятельно будете производить действия по резервному копированию БД, так как это 100% способ быть увереным в целостности данных.
Если Вы хотите самостоятельно выполнять регулярное резервное копирование информации воспользовавшись утилитой mysqldump, которая доступна через unix shell, Вам необходимо следовать инструкциям:
Экспортируем БД (создание dump):
mysqldump -u имя_пользователя -p -h имя_сервера_БД имя_базы > dump.sql
Данные будут сохранены в файле dump.sql. Далее (в случае необходимости) восстанавливаем данные из резервной копии (дампа) так:
mysql -u имя_пользователя -p -h имя_сервера_БД имя_базы < dump.sql
Запускаемые указанным образом утилиты для работы с MySQL будут запрашивать пароль к базе данных. Нужно вводить пароль соответствующего пользователя БД. Если пароль был утерян, Вы можете самостоятельно изменить его в Панели управления :
- Домены > имя домена > Базы данных > имя базы данных
- Выбираем пользователя БД и в появившемся окне можно произвести смену пароля.
Дополнительные опции утилиты mysqldump.
--add-drop-table — опция, которая добавляет команду DROP TABLE перед созданием таблиц. Перед восстановлением таблиц из дампа, таблицы с таким же именем в рабочей базе данных будут удалены и пересозданы из резервной копии. Рекомендуется использовать для предотвращения возможных ошибок после восстановления;
--add-locks — опция, которая добавляет команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы. Применяется для ускорения доступа к MySQL;
--quote-names — опция, сообщающая утилите о необходимости ставить кавычки для названий таблиц и столбцов.
Опции --quick и --opt рекомендуется использовать, если база данных MySQL слишком большая для того, чтобы целиком поместиться в памяти.
При этом утилита mysqldump выдает ошибку:
mysqldump: Out of memory (Needed XXXXX bytes)
mysqldump: Got error: 2008: MySQL client
run out of memory when retrieving data from server
В итоге строчка для создания копии базы данных получается следующей:
mysqldump --opt -u имя_пользователя -p -h имя_сервера_БД
--add-drop-table имя_базы > dump.sql
либо такой:
mysqldump --quick -u имя_пользователя -p -h имя_сервера_БД
--add-drop-table имя_базы > dump.sql
Для совместимости дампа, сделанного на стороннем сервере, мы рекомендуем создавать дамп базы данных с ключом:
--set-variable max_allowed_packet=1M
либо
-O max_allowed_packet=1M
Снятие/загрузка сжатого дампа
Часто возникает потребность сжать дамп непосредственно сразу после архивации или поместить в БД сжатый дамп. Эти операции можно выполнять на лету, одной строкой:
Снятие дампа и упаковка через gzip
mysqldump <Опции> | gzip > dump.sql.gz
gunzip < dump.sql.gz | mysql <Опции>
mysqldump < mysqldump options> | bzip2 > dump.sql.bz2
bunzip2 < dump.sql.bz2 | mysql <Опции>
mysqldump <Опции> | lzma > dump.sql.lzma
unlzma < dump.sql.lzma | mysql <Опции>
-uИМЯ_ПОЛЬЗОВАТЕЛЯ -pПАРОЛЬ -hХОСТ
Возможные проблемы
Если при выполнении снятия или заливки дампа вы получаете сообщение:
Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect
То, используйте в качестве параметра -h не localhost , а msk105.komtet.ru или msk106.komtet.ru , в зависимости от месторасположения Вашей БД, либо полное название Вашего домена .
Также Вы всегда можете обратиться в круглосуточную Службу технической поддержки , чтобы Вам помогли решить вопрос создания/восстановления дампа.