Я предлагаю три варианта:
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
mysqldump -uAdmin -pMyPass --all-databases > all_databases.sql
mysqldump --no-data --databases my_db1 my_db2 my_db3 > structurebackup.sql
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/';
$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 войдите в него (напр. http://localhost/phpmyadmin/), слева выберите базу данных которая вас интересует, и кликните на вкладку Export, вы попадете примерно на такую страницу:
Как видите тут есть разные настройки, возможность выбрать тип будущего дампа базы данных, архивация дампа и т.п. Жмем на кнопку “Go” что бы приступить к бекапу БД, выскакивает окошко с просьбой указать место на вашем ПК куда будет сохранен дамп базы данных, указываем и наслаждаемся процессом резервного копирования БД. PHPMyAdmin. Ввостановление базы данных
Процедура довольно проста, заходим в phpmyadmin, кликаем на Import, видим форму, используем ее для выбора локального файл-дампа базы данных. При клике на “Go” база данных восстановится.
Sypex Dumper
Также очень интересный на мой взгляд, бесплатный скрипт – “Sypex Dumper” написанный на PHP.Любой начинающий пользователь, или администратор который не хочет заморачиватся с разными консольными утилитами и многофункциональными веб интерфейсами может выбрать для себя удобный, простой и вполне работоспособный скрипт Sypex Dumper.
Скриншоты:
Источник
Этот комментарий был удален автором.
ОтветитьУдалитьКуда он сохраняет бекапы?
ОтветитьУдалитьmysqldump -uadmin -pSuperPassword mydb_forum > /home/user/dump.sql
ОтветитьУдалитьЕсли путь не указан, то сохраняет в ту директорию из которой был запущен скрипт
ОтветитьУдалитьГоспода! Помогите! Впервые с таким столкнулся - раньше все нормально бэкапилось. Есть сервер с базой вордпресса - делаю бэкап mysqldump -uroot -pPass -B wordpressdb > dump.sql .В файле все есть - полноценный бэкап, как и положено. Но, самое интересное, когда я начинаю его разворачивать - он мне в консоль выводит комменты и все. То есть я беру файл, переношу на новый сервер, создаю из консоли базу и запускаю: mysqldump -uroot -pPass -B wordpressdb < dump.sql . В итоге даже таблицы не создает... При том при всем через phpmyadmin такой бэкап льется полноценно и нормально. Может какие-то параметры нужны. Пытался и кодировку выставить и слить полностью все базы эффект тот же просто комменты в консоль.
ОтветитьУдалитьПопробуйте сделать дамп, а затем развернуть его не используя флаг -B
Удалитьmysqldump -uroot -pPass wordpressdb > dump.sql
mysql -uroot -pPass wordpressdb < dump.sql
Пробовал. Не помогает. Очень странно. Сразу скажу попробовал и на виртуалке, тот же эффект. Привеллегии у рута есть все, это безусловно... Что еще может быть не так? Возможен баг в 16.04 убунте?
ОтветитьУдалитьЯ использую ubuntu 16.04 проблем с дампом нет,можно еще попробовать так развернуть:
ОтветитьУдалитьmysql -uroot -pPass
use wordpressdb;
source dump.sql;
или как в документации с использованием флага -e:
ОтветитьУдалитьhttp://www.mysql.ru/docs/man/mysqldump.html
Это работает, понятно. Мне это надо воспроизвести одной командой, поскольку все это дело запускается ProcessBuilder из Java - приложения. Потому и надо бы заставить это делать вида mysqldump -uroot -pPass wordpress < dump.sql. Может какая-то проблема быть с тем, что базу создаю отдельно? Хотя тоже из под рута. А может надо добавить какие-то ключи?
ОтветитьУдалитьИ еще перед тем как разворачивать дамп, удалите базу и создайте ее снова.
ОтветитьУдалитьНа всякий случай кусок дампа:-- 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`),
Я на новую машину переношу, соответственно удалял, создавал, что только уже не делал.
ОтветитьУдалитьА вот хороший еще вариант с bacula - https://www.backup-solutions.ru/rezervnoe-kopirovanie-mysql/
ОтветитьУдалить