WHAT'S NEW?
Loading...

MySQL backup. Бекап базы данных MySQL

В данной статье я попытаюсь коротко но по существу, рассмотреть несколько вариантов как легко и быстро можно сделать бекап базы данных.
Я предлагаю три варианта:
  • mysqdump (Командная утилита)
  • phpmyadmin (Веб интерфейс для работы с бд)
  • Sypex Dumper (Скрипт)

mysqldump

Подключившись по SSH или имея локальный доступ через терминал, можно сделать бекап базы данных используя командную утилиту mysqldump которая входит в комплект установленного MySQL пакета. Рассмотрим синтаксис данной команды.
mysqldump -u [username] -p [password] [database] > [dump_name.sql]
[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_name.sql] – имя файла, дампа на выходе.
Пример как получить дамп базы данных mydb_forum на MySQL сервере:
mysqldump -uadmin -pSuperPassword mydb_forum > mydb_forum.sql
Восстановить полученный ранее дамп базы данных также легко.
mysql -uadmin -pSuperPassword mydb_forum < mydb_forum.sql
Что бы сделать дамп всех БД которые находятся у вас на MySQL сервере воспользуйтесь след. примером:
mysqldump -uAdmin -pMyPass --all-databases > all_databases.sql
Бекап структуры базы данных
mysqldump --no-data --databases my_db1 my_db2 my_db3 > structurebackup.sql
Cжатие данных на ходу
mysqldump -uAdmin -pSuperPass mydb | bzip2 -c > backup.sql.bz2
mysqldump -uAdmin -pSuperPass mydb | gzip -c > backup.sql.gz

PHPMyAdmin

PHPMyAdmin это легкий веб-интерфейс для работы с MySQL базами данных. Вы можете его использовать на сервере или домашнем ПК если у вас установлен и настроен PHP. Также это хороший вариант когда у вас нет доступа к серверу через telnet/ssh. Скачать последнюю версию
пакета PHPMyAdmin можно сдесь.
Настройки PHPMyAdmin
Прежде чем приступить к бекапу базы данных используя PHPMyAdmin я опишу как можно его настроить. После распаковки и установки пакета PHPMyAdmin нам нужно отредактировать файл
config.inc.php
Указываем полный URL к месту где находится phpmyadmin
$cfg['PmaAbsoluteUri'] = 'http://myexample.com/phpmyadmin/';
Настройки phpmyadmin для работы с базой данных
$cfg['Servers'][$i]['host'] = '235.104.1.5';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'admin';
$cfg['Servers'][$i]['password'] = 'FvAk41P';
Бекап MySQL базы данных используя PHPMyAdmin.
Что бы сделать бекап базы данных MySQL используя PHPMyAdmin войдите в него (напр. http://localhost/phpmyadmin/), слева выберите базу данных которая вас интересует, и кликните на вкладку Export, вы попадете примерно на такую страницу:

Как видите тут есть разные настройки, возможность выбрать тип будущего дампа базы данных, архивация дампа и т.п. Жмем на кнопку “Go” что бы приступить к бекапу БД, выскакивает окошко с просьбой указать место на вашем ПК куда будет сохранен дамп базы данных, указываем и наслаждаемся процессом резервного копирования БД. PHPMyAdmin. Ввостановление базы данных
Процедура довольно проста, заходим в phpmyadmin, кликаем на Import, видим форму, используем ее для выбора локального файл-дампа базы данных. При клике на “Go” база данных восстановится.



Sypex Dumper

Также очень интересный на мой взгляд, бесплатный скрипт – “Sypex Dumper” написанный на PHP.
Любой начинающий пользователь, или администратор который не хочет заморачиватся с разными консольными утилитами и многофункциональными веб интерфейсами может выбрать для себя удобный, простой и вполне работоспособный скрипт Sypex Dumper.
Скриншоты:


Источник

14 комментариев: Leave Your Comments

  1. Анонимный18 марта, 2015 17:45

    Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Анонимный18 марта, 2015 17:46

    Куда он сохраняет бекапы?

    ОтветитьУдалить
  3. mysqldump -uadmin -pSuperPassword mydb_forum > /home/user/dump.sql

    ОтветитьУдалить
  4. Если путь не указан, то сохраняет в ту директорию из которой был запущен скрипт

    ОтветитьУдалить
  5. Господа! Помогите! Впервые с таким столкнулся - раньше все нормально бэкапилось. Есть сервер с базой вордпресса - делаю бэкап mysqldump -uroot -pPass -B wordpressdb > dump.sql .В файле все есть - полноценный бэкап, как и положено. Но, самое интересное, когда я начинаю его разворачивать - он мне в консоль выводит комменты и все. То есть я беру файл, переношу на новый сервер, создаю из консоли базу и запускаю: mysqldump -uroot -pPass -B wordpressdb < dump.sql . В итоге даже таблицы не создает... При том при всем через phpmyadmin такой бэкап льется полноценно и нормально. Может какие-то параметры нужны. Пытался и кодировку выставить и слить полностью все базы эффект тот же просто комменты в консоль.

    ОтветитьУдалить
    Ответы
    1. Попробуйте сделать дамп, а затем развернуть его не используя флаг -B
      mysqldump -uroot -pPass wordpressdb > dump.sql
      mysql -uroot -pPass wordpressdb < dump.sql

      Удалить
  6. Пробовал. Не помогает. Очень странно. Сразу скажу попробовал и на виртуалке, тот же эффект. Привеллегии у рута есть все, это безусловно... Что еще может быть не так? Возможен баг в 16.04 убунте?

    ОтветитьУдалить
  7. Я использую ubuntu 16.04 проблем с дампом нет,можно еще попробовать так развернуть:
    mysql -uroot -pPass
    use wordpressdb;
    source dump.sql;

    ОтветитьУдалить
  8. или как в документации с использованием флага -e:
    http://www.mysql.ru/docs/man/mysqldump.html

    ОтветитьУдалить
  9. Это работает, понятно. Мне это надо воспроизвести одной командой, поскольку все это дело запускается ProcessBuilder из Java - приложения. Потому и надо бы заставить это делать вида mysqldump -uroot -pPass wordpress < dump.sql. Может какая-то проблема быть с тем, что базу создаю отдельно? Хотя тоже из под рута. А может надо добавить какие-то ключи?

    ОтветитьУдалить
  10. И еще перед тем как разворачивать дамп, удалите базу и создайте ее снова.

    ОтветитьУдалить
  11. На всякий случай кусок дампа:-- MySQL dump 10.13 Distrib 5.7.18, for Linux (x86_64)
    --
    -- Host: localhost Database: wordpressdb
    -- ------------------------------------------------------
    -- Server version 5.7.18-0ubuntu0.16.04.1-log

    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

    --
    -- Table structure for table `wp_commentmeta`
    --

    DROP TABLE IF EXISTS `wp_commentmeta`;
    /*!40101 SET @saved_cs_client = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `wp_commentmeta` (
    `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
    `meta_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
    `meta_value` longtext COLLATE utf8mb4_unicode_ci,
    PRIMARY KEY (`meta_id`),
    KEY `comment_id` (`comment_id`),

    ОтветитьУдалить
  12. Я на новую машину переношу, соответственно удалял, создавал, что только уже не делал.

    ОтветитьУдалить
  13. А вот хороший еще вариант с bacula - https://www.backup-solutions.ru/rezervnoe-kopirovanie-mysql/

    ОтветитьУдалить