Автор: Рубрики: Инструкции Просмотрено: 146
Резервное копирование баз данных MySQL утилитой mysqldump. Восстановление данных из дампа
04Дек2019

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

В этой статье мы обсудим как сделать копию БД MySQL и восстановить данные с нее. Резервное копирование будет выполняться с помощью утилиты mysqldump. Файл с копией базы называется дампом. Дампы базы данных – это просто текстовые файлы, содержащие все команды SQL, необходимые для воссоздания базы данных с нуля. 

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

Теперь более детально разберем:
Создание дампа БД
Восстановление БД из дампа

 

     Создание дампа БД

Сначала подключаемся к серверу по SSH ( данные для входа приходят на почту при активации услуги для VPS/VDS, а доступ по SSH на виртуальном хостинге предоставляется по запросу в техподдержку). Для подключения по этому протоколу можно использовать любой SSH-клиент, например, Kitty.

Дальше в командной строке вводим команду со следующим синтаксисом:

  • для резервного копирования одной базы:

mysqldump -u [username] -p[pass] [dbname] > [backupfile.sql]

Где:
-u [username]- имя пользователя БД;
-p[pass]- пароль пользователя к БД;
[dbname]- указываем название базы данных;
[backupfile.sql]- название файла, куда будет сливаться дамп, имеет расширение .sql.

Также можно указать папку или путь для сохранения этого файла:

mysqldump -u [username] -p[pass] [dbname] > [/tmp/backupfile.sql]

  • для резервного копирование нескольких баз:

mysqldump -u [username] -p[pass] –databases [dbname1][dbname2] >[backupfile.sql]

где, [dbname1][dbname2] – название баз данных, для которых нужно сделать backup.

  • для резервного копирования всех баз:

mysqldump -u [username] -p[pass] –all-databases > [backupfile.sql]

  • для определенных таблиц из БД:

mysqldump -u [username] -p[pass] [dbname] [table1name] [table2name] > [backupfile.sql]

где, [table1name] [table2name] – название таблиц БД [dbname] для которых нужно выполнить дамп.

  • если нужно исключить из дампа БД определенную таблицу:

mysqldump -u [username] -p[pass] [dbname] –ignore-table=[dbname].[tablename] > [backupfile.sql]

  • исключить несколько таблиц:

mysqldump -u [username] -p[pass] [dbname] –ignore-table=[dbname].[table1name]–ignore-table=[dbname].[table21name] > [backupfile.sql]

где, [table1name] и [table21name] – название таблиц из базы данных [dbname], которые не нужно включать в дамп.

Утилита mysqldump может включать в себе и другие опции, которые несут в себе дополнительный функционал при их использовании, с полным списком можно ознакомится на оф.сайте компании здесь.

 

     Восстановление БД из дампа

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

mysql -u [username] -p[pass] [dbname] < [backupfile.sql]

где [dbname] – название пустой созданной базы данных, куда будет заливаться дамп.
Если делалось резервное копирование всех БД, но нужно восстановить только одну конкретную БД. Для этого создаем пустую БД с оригинальным названием базы, которой мы также делали дамп.

mysqld -u [username] -p[pass] –one-database [dbname] < [backupfile.sql]

где [dbname] – название базы, куда будет сливаться дамп только определенной БД, название этих баз должны совпадать.
Например, если Вы сделали бекап баз: newbd и ordersbd, но хотите восстановить только базу newbd, то создаем пустую базу с названием newbd и в команде на месте [dbname] – прописываем также оригинальное название БД, а именно newbd.

Чтобы восстановить все базы из дампа:

mysqld -u [username] -p[pass] < [backupfile.sql]

От себя и команды “Гиперхост” советуем время от времени делать резервное копирование баз данных, чтобы уберечь себя от потери важной информации. Кроме всего, мы делаем ежедневные резервные копии всех клиентских хостинг аккаунтов.

147 раз(а) 3 Сегодня просмотрено раз(а)
  • Марина Семёнова

    У меня стоит автоматическое создание копии раз в месяц. Иногда ещё делаю по … когда короче всякие сомнительные личности начинают ползать по сайту и оставлять сомнительные ссылки на взлом и прочее подобное.

    • Семён Семёныч

      Марина, ты ведь форумом владеешь? Много у тебя занимает его резервная копия? Насколько копий хватит 100 мб? Примерно. Подскажи пожалуйста.
      Хочу копии тоже начать делать, но мне нужно определиться со способом и объёмом. Сейчас присматриваюсь к вот этому – https://hyperhost.ua/ru/data-backup

      • Владимир Дот

        У меня сайт вместе с форумом в бекапе оседает всего в 50 мб. Так что на 2 копии минимум точно хватит. Большего не скажу. Это точно к Марине надо.))