Как сохранить бд из phpmyadmin на компьютер. Как быстро перенести базу данных MySQL с помощью приложений

Здравствуйте друзья! Статья касается блогосферы и в ней мы рассмотрим сохранение базы данных сайта на хостинге TimeWeb.

Хостинг TimeWeb, базы данных сайт

Каждый человек создавший собственный сайт (блог), знает, что периодически надо сохранять базу данных своего сайта. Для этого есть причины.

Могут быть технические проблемы на хостинге, злоумышленники могут подобрать пароль к админпанели Вашего сайта и другие проблемы. Люди по разному относятся к периодичности сохранения базы данных, но сохранять их надо однозначно. В начальный период, после создания собственного блога (писал в статье ), я знал, что надо делать его копию. Первая моя попытка не увенчалась успехом, хотя ничего сложного там нет (это я узнал позже). Понятно, что и оптимизацию базы данных провести также не смог.

Смотрел статьи в Интернете, но там написано, в общем. Потренировавшись методом проб и ошибок, всё получилось. Поэтому решил написать короткую статью о том, как сделать копию базы данных сайта на жесткий диск, возможно, пригодится мой опыт.

Сайт размещен на хостинге TimeWeb (движок WordPress). Базу данных сайта сохраняю один раз в неделю, кто-то делает чаще, кто-то реже – это дело каждого. Сохранять надо две основные структуры сайта, это файловая система и база данных сайта. В файловую систему входят: движок WordPress, установленные темы, плагины и картинки.

В базу данных входит контент сайта (страницы, статьи, комментарии). Хостинг TimeWeb постоянно делает backup и хранит их в течении последних трёх суток. Можно сохранять данные из админпанели, можно напрямую с хотинга, я делаю по второму варианту.

Итак, заходим на хостинг в панель управления (Рис.1).

Нажимаем кнопку «Управление BACKUP». В открывшемся окне, нажимаем на стрелку в строке public_html. Подтверждаете, что Вы действительно хотите сохранить архив файла/директории public_html в Вашем домашнем каталоге (Рис. 2).

Через несколько секунд архивация завершается. Далее не выходя из этого окна, в строке, где прописан Ваш домен, нажимаете на стрелочку и подтверждаете, что Вы действительно хотите сохранить архив файла/директории.

Архивация длится несколько минут (всё зависит от объёма данных на сайте). После этого нажимаем «На стартовую страницу» (внизу таблицы) и на главной странице нажимаем «Файловый менеджер». Выбираем по дате архивации нужные нам два файла и поочередно их сохраняем.

Для этого по выделенным файлам, поочередно, делаем двойной щелчок мышкой (Рис. 3), спрашивается куда сохранить, сохраняем. Сохранённые файлы прячем в надёжные папки, лишним не будет сохранить их на диск DVD. Обязательно сохраняйте свои данные.

И еще. После написания этой статьи, у меня возникали проблемы с данными моего сайта (блога), проблемы были успешно решены. Поэтому, по результатам моей работы были опубликованы статьи о создании резервной копии базы данных (статья ), а также о сохранении и оптимизации базы данных (статьи

Последнее обновление: 31.10.2015

Сохранение в базу данных файлов

Рассмотрим, как мы можем сохранять файлы, в частности, файлы изображений в базу данных. Для этого добавим в базу данных новую таблицу Images с четырьмя столбцами: Id (первичный ключ и идентификатор, имеет тип int), FileName (будет хранить имя файла и имеет тип nvarchar), Title (будет хранить заголовок файла и также имеет тип nvarchar) и ImageData (будет содержать бинарные данные файла и имеет тип varbimary(MAX)).

Определим код, в котором будут загружаться данные в таблицу:

Private static void SaveFileToDatabase() { string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; command.CommandText = @"INSERT INTO Images VALUES (@FileName, @Title, @ImageData)"; command.Parameters.Add("@FileName", SqlDbType.NVarChar, 50); command.Parameters.Add("@Title", SqlDbType.NVarChar, 50); command.Parameters.Add("@ImageData", SqlDbType.Image, 1000000); // путь к файлу для загрузки string filename = @"C:\Users\Eugene\Pictures\cats.jpg"; // заголовок файла string title = "Коты"; // получаем короткое имя файла для сохранения в бд string shortFileName = filename.Substring(filename.LastIndexOf("\\")+1); // cats.jpg // массив для хранения бинарных данных файла byte imageData; using (System.IO.FileStream fs = new System.IO.FileStream(filename, FileMode.Open)) { imageData = new byte; fs.Read(imageData, 0, imageData.Length); } // передаем данные в команду через параметры command.Parameters["@FileName"].Value = shortFileName; command.Parameters["@Title"].Value = title; command.Parameters["@ImageData"].Value = imageData; command.ExecuteNonQuery(); } }

После выполнения этой программы в базе данных появится соответствующая запись:

Извлечение файлов из базы данных

В прошлой теме мы рассмотрели, как добавить файл в базу данных. Теперь произведем обратную операцию - получим файл из БД. Вначале определим класс файла, который упростит работу с данными:

Public class Image { public Image(int id, string filename, string title, byte data) { Id = id; FileName = filename; Title = title; Data = data; } public int Id { get; private set; } public string FileName { get; private set; } public string Title { get; private set; } public byte Data { get; private set; } }

Затем в коде программы определим следующий метод:

Private static void ReadFileFromDatabase() { string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; List images = new List(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string sql = "SELECT * FROM Images"; SqlCommand command = new SqlCommand(sql, connection); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { int id = reader.GetInt32(0); string filename = reader.GetString(1); string title = reader.GetString(2); byte data = (byte)reader.GetValue(3); Image image = new Image(id, filename, title, data); images.Add(image); } } // сохраним первый файл из списка if(images.Count>0) { using (System.IO.FileStream fs = new System.IO.FileStream(images.FileName, FileMode.OpenOrCreate)) { fs.Write(images.Data, 0, images.Data.Length); Console.WriteLine("Изображение "{0}" сохранено", images.Title); } } }

В этом методе с помощью SqlDataReader мы получаем значения из БД и по ним создаем объект Image, который потом добавляется в список. И в конце смотрим, если в списке есть элементы, то берем первый элемент и сохраняем его на локальный компьютер. И после сохранения в папке нашей программы появится загруженный из базы данных файл.

От автора: недавно в гости родственники заезжали. Так они за пару дней истощили сначала всю продуктовую базу, затем «прокомпостировали» всю нервную, а под конец спалили музыкальную (музыкальный центр). В общем, от греха подальше я решил побыстрее перенести базу данных MySQL. Если вы тоже оказались в такой ситуации, тогда обязательно прочитайте эту статью.

Быстрый способ экспорта

Начнем с обзора phpMyAdmin. Чтобы перенести базу, сначала нужно создать ее дубликат. Для этого в программе имеется специальный функционал. Рассмотрим детально данный процесс:

Можно сначала выбрать в списке слева нужную базу, и затем перейти по вкладке меню «Экспорт». Если использовать данный вариант, то будет произведен потабличный перенос MySQL. Для этого в «Способ экспорта» устанавливаем «Обычный», а в «Таблицы» выбираем элементы экспорта.

Если требуется экспортировать БД целиком (со всеми таблицами), то сразу переходите в «Экспорт». Только здесь мы уже оперируем не таблицами, а базами. В «Способ экспорта» также устанавливаем «Обычный». Затем выделяем нужную БД, и в разделе «Вывод» выбираем вариант «Сохранить вывод в файл».

Следующим шагом задаем формат, в котором будет сохранена копия базы. Выбираем в соответствующем списке значение «SQL». Это будет гарантом того, что копию можно будет использовать на большей части платформ. Но если собираетесь переносить базу на конкретную основу, то здесь можно выбрать соответствующий формат: массив PHP, CSV, PDF и другие.

Ниже в разделах «Параметры формата» и «Параметры сохранения данных» можно настроить более « » параметры для переноса базы MySQL. Но мы не будет подробно останавливаться на их обзоре. Если вы не знакомы с какими-либо из них, то лучше не менять (без необходимости) установленные значения по умолчанию. Здесь можно настроить максимальную совместимость со старыми версиями СУБД и как будут сохранены таблицы. Можно экспортировать только данные или структуры. Мы скопируем таблицы полностью (вариант «структура и данные).

После установки всех параметров для создания копии базы нажимаем внизу «Ок». В результате мы получаем дубликат БД, который легко перенести на другой сервер. По умолчанию созданный файл сохраняется в папке загрузок вашего браузера.

Импортируем

С помощью phpMyAdmin можно не только создавать копии всего сервера, баз и отдельных таблиц. Программа позволяет легко перенести данные MySQL на другой экземпляр СУБД. Выполнение этого процесса во многом схоже с экспортом базы. phpMyAdmin «умеет» присоединять как отдельные таблицы к базе, так и сразу несколько БД к серверу. Для присоединения таблиц слева в списке выберите нужную базу, и затем переходите по вкладке «Импорт».

Чтобы присоединить к серверу базу (или несколько баз), сразу переходите по указанной вкладке. Затем в разделе «Импортируемый файл» отмечаем пункт «Обзор вашего компьютера», и через проводник указываем месторасположение файла БД.

Здесь нужно указать кодировку, в которой представлены данные в импортируемом источнике. С этим параметром следует быть аккуратнее, иначе вместо строк в таблицах получите настоящие «иероглифы», и для их расшифровки придется нанимать коренного японца или китайца. А с ними в нашей местности – настоящий дефицит .

Чаще всего используется кодировка UTF-8, которая и установлена по умолчанию. Поэтому, даже если не знаете точно, какая используется в переносимой базе MySQL, то стоит попробовать данную кодировку. В любом случае вы всегда сможете удалить импортированную базу, и затем «перезалить» ее с другой кодировкой.

Также спешу огорчить «рьяных» поклонников phpMyAdmin. Данная утилита подходит только для экспорта-импорта небольших баз (до 2 «метров»). Этого значение вполне хватает для частичного (поэтапного) переноса сервера, что может быть не совсем удобно и затянуть надолго весь процесс.

В разделе «Формат» устанавливаем значение «SQL». Если нужно, то включаем режим совместимости. А также отключаем автоматическое создание значения ключа для столбцов с нулевым значением (зависит от структуры таблиц импортируемого источника). И для окончания импорта жмем «Ок».

Если собираетесь перенести базу данных MySQL из бэкапа, то не забудьте перед началом импорта удалить с сервера «оригинал» источника. Иначе получите сообщение об ошибке, поскольку данная БД уже существует.

Если процесс прошел удачно, то система программы выведет соответствующее сообщение.

Альтернативное ПО

Я обещал по ходу изучения MySQL знакомить вас с различным программным обеспечением для администрирования СУБД. Так вы сможете расширить свой «профессиональный» кругозор, и выбрать ту программу, которая больше всего подходит под ваши потребности и род деятельности.

Сегодня мы протестируем возможности переноса MySQL с помощью мощного многофункционального приложения, разработанного создателями СУБД. Скачать MySQL Workbench можно с официального ресурса компании. Тут же детально описаны несколько сторонних дистрибутивов (и ссылки на них), которые потребуются для администрирования СУБД с помощью данной платформы.

Повторюсь еще раз: рассматриваемое средство обладает мощным функционалом, поэтому мы рассмотрим лишь тот, который предназначен для импорта-экспорта отдельных баз в формате SQL. Для этого запускаем программу, жмем по иконке нужного соединения (если их несколько).

В новом раскрывшемся окне слева в панели «Navigator» выбираем нужную вкладку (для экспорта или импорта). Я импортирую дубликат базы, созданный с помощью phpMyAdmin.

Чтобы осуществить перенос данных MySQL, переходим через пункт «Data Import». В одноименной вкладке в разделе «Import Options» выбираем второй вариант (обозначен на снимке).

Так как у нас никаких схем нет, то внизу нажимаем на «Start Import». В соседней вкладке «Import Progress» отображается состояние процесса переноса указанного файла. Эта опция может пригодиться при импорте больших объемов данных.

После окончания переноса MySQL в списке баз у нас появится db1, дубликат которой мы создали с помощью phpMyAdmin.

Ну, а пока я «прятал» свою БД MySQL, все родственники разъехались. Так как я был занят, а пополнять продуктовую базу холодильника было некому. Вот как любимая СУБД спасла меня от «родственной» напасти. За что ей огромное спасибо .

В связи с переездом на новых хостинг, пришлось осваивать азы переноса базы данных MySQL. К слову, в качестве CMS своего блога я использую MaxSiteCMS . А новый хостинг, а точнее виртуальный выделенный сервер, я приобрел в компании Adman .

Я уже давно использую собственный скрипт для создания резервных копий сайта и базы данных MySQL. О котором писал в статье . Но воспользоваться результатами проделанной работы пока не приходилось. Что конечно меня не расстраивало, так как предыдущий хостинг исправно работал и восстановление данных не требовалось.

Как сохранить базу данных MySQL

Напомню, что ее нельзя скопировать просто переписав какой-нибудь файл.
А для сохранения дампа необходимо выполнить нижеследующее в консоли:

Mysqldump -u username -p databasename > databasebackup.sql

Как восстановить базу данных MySQL

Так как резервная копия базы данных у меня уже была, то предыдущая инструкция мне не пригодилась. А для восстановления необходимо воспользоваться командой:

Mysql -u username -p newdatabasename < databasebackup.sql

Какие способы бывают?

1 - при помощи интерфейса phpMyAdmin.

2 - при помощи панели управления хостинг-провайдера.

3 - при помощи сторонней программы.

Какой способ лучше?

Мы рекомендуем первый, т.к. его схема проста, и используется большинством вебмастеров. Третий способ мы не рекомендуем использовать! Никогда не доверяйте содержимое своего сайта сторонним программам, к тому же от непонятных разработчиков. Еще можно использовать второй способ, но его алгоритм очень разнится, и зависит от панели управления хостера. Поэтому, мы детально рассмотрим первый вариант, и расскажем как грамотно перенести базы данных MySQL, без потери и повреждения данных.

Создаем базу данных на новом хостинге

Если Вы хотите перенести базу данных MySQL, значит у Вас уже есть БД, и Вы умете ее создавать. В любом случае этот процесс разный для каждого из хостинг-провайдеров, но сводится к одному общему алгоритму:

1 - Ищем раздел “MySQL”, “Базы данных” или что-то похожее.

2 - В нем нажимаем “Создать”.

3 - Вписываем название базы данных, прикрепляем к ней пользователя (обычно пользователь БД уже создан, если нет, то создайте его и установите самые большие права) и вводим пароль для БД.

4 - База данных создана, но она пока что пустая.

Экспортируем БД со старого хостинга

Сейчас мы воспользуемся тем, что называют дамп базы данных. Т.е. сохраним текущую БД с сервера, к себе на компьютер. Для этого нам понадобится интерфейс phpMyAdmin, который нужно отыскать в личном кабинете хостинг-провайдера, у которого находится Ваш текущий сайт. Опять же единого алгоритма нет, поэтому приводим общую схему:

2 - Слева в углу выберите свою базу данных (ту, которую вы собираетесь экспортировать на компьютер, чтобы потом перенести на другой хостинг).

4 - Возможно Вас попросят выбрать способ экспорта “Обычный” (много настроек) или “Быстрый” (мало настроек). Не имеет значения какой выбирать, главное изменить только те настройки, которые мы описываем ниже.

5 - Нужно выбрать все таблицы, нажав на кнопку “Выделить все”.

7 - На всякий случай, запоминаем кодировку, но не трогаем ее.

8 - Жмем “Ок” и сохраняем файл с БД себе на компьютер. Обычно сохраняемый файл имеет расширение.sql.

Импорт БД на сервер нового хостера

1 - Таким же образом ищем phpMyAdmin на новом хостинге.

2 - В нем выбираем нужную базу данных (мы ее создавали в начале статьи, и она осталась пустой).

3 - Жмем на вкладку “Импорт”.

4 - Нажимаем “Обзор” и выбираем сохраненную на компьютере базу данных.

5 - Проверьте, чтобы кодировка совпадала с той, в которой Вы сохраняли БД.

6 - Больше ничего не меняете, жмете “Ок” и Ваша база данных импортируется на новый хостинг.

Какие бывают проблемы?

1 - При импорте БД в ней не должно быть запросов типа «CREATE DATABASE, /*!40101 SET @OLD ». Чтобы проверить их наличие - откройте файл БД на своем компьютере любым текстовым редактором (лучше всего подходит Notepad++) и через Ctrl+А поищите эти запросы. Если найдете, то просто удалите их, и попробуйте снова импортировать БД.

2 - При импорте, база данных, которая находится у нового хостера должна быть пустой, если в ней уже существуют какие-либо таблицы - выделите и удалите их.

Статьи по теме: