MySQL dump and restore — различия между версиями
Admin (обсуждение | вклад) (→Восстанавливаем базу MySql из дампа) |
Admin (обсуждение | вклад) (→Ошибки возникающие при работе с дампами) |
||
Строка 49: | Строка 49: | ||
sed -i "s/utf8/cp1251/" user_database.sql | sed -i "s/utf8/cp1251/" user_database.sql | ||
</geshi> | </geshi> | ||
+ | |||
+ | После чего снова попробовать восстановить базу из дампа. |
Версия 02:22, 10 января 2009
Делаем дамп базы MySql
Для того чтобы сохранить резервную копию базы данных MySql принято использовать так называемые дампы. Это текстовый файл содержащий структуру и содержимое базы данных в формате SQL запросов.
Итак, делаем дамп базы используя консольный клиент mysqldump, зайдя на сервер по Ssh. Снимать будем дамп базы user_database с сервера mysql12.leaderhost.ru, логин для доступа к базе у нас user_admin и пароль 12345.
<geshi lang=bash> mysqldump -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database > user_database.sql </geshi>
Наш дамп будет сохранен в файл user_database.sql. Если Вы ошибетесь в логине или пароле то получите ошибку на подобии этой:
mysqldump: Got error: 1045: Access denied for user 'user_admin'@'91.195.124.30' (using password: YES) when trying to connect
Если всё нормально, то никаких сообщений не выдастся. Посмотрим какого размера получился дамп: <geshi lang=bash> [user@s12 ~]$ du -hs user_database.sql 872K user_database.sql </geshi>
Восстанавливаем базу MySql из дампа
Выше описано как сделать дамп базы MySQL (резервную копию), далее опишем необходимые действия для восстановления базы из дампа.
Итак, таже база и теже логины/пароли, заходим на сервер по Ssh и выполняем в папке в которой лежит наш дамп. Например дамп user_database.sql лежит в папке сайта hostingfaq.ru (пример для хостинга ЛидерХост).
<geshi lang=bash> cd hostingfaq.ru/ mysql -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database < user_database.sql </geshi>
Ошибки возникающие при работе с дампами
Не редко, при восстановлении базы из дампа, можно столкнутся с такой ошибкой: <geshi lang=bash>
- 1062 - Duplicate entry 'у-665' for key 1
</geshi>
Зачастую, ошибка возникает из-за того что кодировка таблицы одна, а у данных другая. Что можно поделать? как правило в дампе базы сменить все указатели кодировки на одну. Например, данные в дампе в кодировке cp1251, а где-то встречается указатель на utf8: <geshi lang=sql> ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; ENGINE=MyISAM DEFAULT CHARSET=cp1251; </geshi>
В этом случае просто заменим utf8 на cp1251, сделать это можно вручную в текстовом редакторе с помощью "поиск и замена" или по Ssh <geshi lang=bash> sed -i "s/utf8/cp1251/" user_database.sql </geshi>
После чего снова попробовать восстановить базу из дампа.