Перенос базы mysql на другой сервер windows

How can I move MySQL tables from one physical server to another? Such as this exact scenario: I have a MySQL server that uses innodb table and is about 20GB size. I want to move it to a new serv...

According to the MySQL 5.0 Certification Study Guide, Chapter 32 Section 32.3.4, Pages 456,457 describe the Conditions for Binary Portability which bring out the following:

Binary portability is important if you
want to take a binary backup that was
made on one machine and use it on
another machine that has a different
architecture. For example, using a
binary backup is one way to copy
databases from one MySQL server to
another.

For MyISAM, binary portability means
that you can directly copy the files
for a MyISAM table from one MySQL
server to another on a different
machine and the second server will be
able to access the table.

For InnoDB, binary portability means
that you can directly copy the
tablespace files from a MySQL server
on one machine to another server on a
different machine and the second
server will be able to access the
tablespace. By default, all the InnoDB
tables managed by a server are stored
together in the tablespace, so
portability of the tablespace is a
function of whether all individual
InnoDB tables are portable. If even
one table is not portable, neither is
the tablespace.

MyISAM tables and InnoDB tablespaces
are binary portable from one host to
another if two conditions are met:

  • Both machines must use two’s-complement integer arithmetic
  • Both machines must use IEEE floating-point format or else the
    tables must contain no floating-point
    columns (FLOAT or DOUBLE)

In practice, those two conditions pose
little restriction. Two’s-complement
integer arithmetic and IEEE
floating-point format are the norm on
modern hardware. A third condition for
InnoDB binary portability is that you
should use lowercase names for tables
and databases. This is because InnoDB
stores these names internally (in its
data dictionary) in lowercase on
Windows. Using lowercase names allows
binary portability between Windows and
Unix, to force the use of lowercase
names, you can put the following lines
in an option file:

[mysqld]
lower_case_table_names=1

If you configure InnoDB to use
per-table tablespaces, the conditions
for binary portability are extended to
include the .ibd files for InnoDB
tables as well. (The conditions for
the shared tablespaces still appliy
because it contains the data
dictionary that stores information
about all InnoDB tables.)

If conditions for binary portability
are not satisfied, you can copy MyISAM
or InnoDB tables from one server to
another by dumping them using some
text format (for example, with
mysqldump) and reloading them into the
destination server.

There are two major ways based on storage engine to move individual tables.

For the given example we will suppose the following:

  1. datadir is /var/lib/mysql
  2. database called mydb
  3. table in mydb database called mytable.

MyISAM tables

If mydb.mytable uses the MyISAM storage engine, the table will physically be manifested as three separate files

  1. /var/lib/mysql/mydb/mytable.frm (.frm file)
  2. /var/lib/mysql/mydb/mytable.MYD (.MYD file)
  3. /var/lib/mysql/mydb/mytable.MYI (.MYI file)

The .frm contains the table structure
The .MYD contains the table data
The .MYI contains the table index page

These files are used interdependently to represent the table from a logical standpoint in mysql. Since these file have no further logical association attach to it, migrating a table from one DB server to another. You can even to this from a Windows server to a Linux Server or a MacOS. Of course, you could shutdown mysql and copy the 3 table files. You could run the following:

LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;

in one ssh session to hold table as read only and hold the lock for 24 hours. One second later, perform the copy in another ssh session. Then kill the mysql session with the 24 hour lock. You need not wait 24 hours.

InnoDB tables

Based on the aforementioned quote from the Certification book, there are many factors that govern how to backup a specific InnoDB table. For sake of simplicity, clarity, and brevity, simply perform a mysqldump of the desired table using the —single-transaction parameters to have perfect point-in-time dump of the table. No need to cncern yourself with InnoDB semantics if you just want one table. You can reload that dumpfile to any MySQL server of your choose.

Since two questions were merged here (jcolebrand): EDIT

If you are more than willing to live with some slow DB performance, you can perform a series of rsyncs from the old server (ServerA) to the new server (ServerB) even while mysql is still running on ServerA.

Step 01) install the same version of mysql on ServerB that ServerA has

Step 02) On ServerA, run SET GLOBAL innodb_max_dirty_pages_pct = 0; from mysql and about 10 minutes (This purges dirty pages from the InnoDB Buffer Pool. It also helps perform a mysql shutdown faster) If your database is all MyISAM, you can skip this step.

Step 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql

Step 04) Repeat Step 03 until an rsync takes less than 1 minute

Step 05) service mysql stop on ServerA

Step 06) Perform one more rsync

Step 07) scp ServerA:/etc/my.cnf ServerB:/etc/

Step 08) service mysql start on ServerB

Step 08) service mysql start on ServerA (optional)

Give it a Try !!!

CAVEAT

You can create a replication slave like this. Just remember to have server-id explcitly set in the master /etc/my.cnf and a different number for server-id in the slave /etc/my.cnf

According to the MySQL 5.0 Certification Study Guide, Chapter 32 Section 32.3.4, Pages 456,457 describe the Conditions for Binary Portability which bring out the following:

Binary portability is important if you
want to take a binary backup that was
made on one machine and use it on
another machine that has a different
architecture. For example, using a
binary backup is one way to copy
databases from one MySQL server to
another.

For MyISAM, binary portability means
that you can directly copy the files
for a MyISAM table from one MySQL
server to another on a different
machine and the second server will be
able to access the table.

For InnoDB, binary portability means
that you can directly copy the
tablespace files from a MySQL server
on one machine to another server on a
different machine and the second
server will be able to access the
tablespace. By default, all the InnoDB
tables managed by a server are stored
together in the tablespace, so
portability of the tablespace is a
function of whether all individual
InnoDB tables are portable. If even
one table is not portable, neither is
the tablespace.

MyISAM tables and InnoDB tablespaces
are binary portable from one host to
another if two conditions are met:

  • Both machines must use two’s-complement integer arithmetic
  • Both machines must use IEEE floating-point format or else the
    tables must contain no floating-point
    columns (FLOAT or DOUBLE)

In practice, those two conditions pose
little restriction. Two’s-complement
integer arithmetic and IEEE
floating-point format are the norm on
modern hardware. A third condition for
InnoDB binary portability is that you
should use lowercase names for tables
and databases. This is because InnoDB
stores these names internally (in its
data dictionary) in lowercase on
Windows. Using lowercase names allows
binary portability between Windows and
Unix, to force the use of lowercase
names, you can put the following lines
in an option file:

[mysqld]
lower_case_table_names=1

If you configure InnoDB to use
per-table tablespaces, the conditions
for binary portability are extended to
include the .ibd files for InnoDB
tables as well. (The conditions for
the shared tablespaces still appliy
because it contains the data
dictionary that stores information
about all InnoDB tables.)

If conditions for binary portability
are not satisfied, you can copy MyISAM
or InnoDB tables from one server to
another by dumping them using some
text format (for example, with
mysqldump) and reloading them into the
destination server.

There are two major ways based on storage engine to move individual tables.

For the given example we will suppose the following:

  1. datadir is /var/lib/mysql
  2. database called mydb
  3. table in mydb database called mytable.

MyISAM tables

If mydb.mytable uses the MyISAM storage engine, the table will physically be manifested as three separate files

  1. /var/lib/mysql/mydb/mytable.frm (.frm file)
  2. /var/lib/mysql/mydb/mytable.MYD (.MYD file)
  3. /var/lib/mysql/mydb/mytable.MYI (.MYI file)

The .frm contains the table structure
The .MYD contains the table data
The .MYI contains the table index page

These files are used interdependently to represent the table from a logical standpoint in mysql. Since these file have no further logical association attach to it, migrating a table from one DB server to another. You can even to this from a Windows server to a Linux Server or a MacOS. Of course, you could shutdown mysql and copy the 3 table files. You could run the following:

LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;

in one ssh session to hold table as read only and hold the lock for 24 hours. One second later, perform the copy in another ssh session. Then kill the mysql session with the 24 hour lock. You need not wait 24 hours.

InnoDB tables

Based on the aforementioned quote from the Certification book, there are many factors that govern how to backup a specific InnoDB table. For sake of simplicity, clarity, and brevity, simply perform a mysqldump of the desired table using the —single-transaction parameters to have perfect point-in-time dump of the table. No need to cncern yourself with InnoDB semantics if you just want one table. You can reload that dumpfile to any MySQL server of your choose.

Since two questions were merged here (jcolebrand): EDIT

If you are more than willing to live with some slow DB performance, you can perform a series of rsyncs from the old server (ServerA) to the new server (ServerB) even while mysql is still running on ServerA.

Step 01) install the same version of mysql on ServerB that ServerA has

Step 02) On ServerA, run SET GLOBAL innodb_max_dirty_pages_pct = 0; from mysql and about 10 minutes (This purges dirty pages from the InnoDB Buffer Pool. It also helps perform a mysql shutdown faster) If your database is all MyISAM, you can skip this step.

Step 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql

Step 04) Repeat Step 03 until an rsync takes less than 1 minute

Step 05) service mysql stop on ServerA

Step 06) Perform one more rsync

Step 07) scp ServerA:/etc/my.cnf ServerB:/etc/

Step 08) service mysql start on ServerB

Step 08) service mysql start on ServerA (optional)

Give it a Try !!!

CAVEAT

You can create a replication slave like this. Just remember to have server-id explcitly set in the master /etc/my.cnf and a different number for server-id in the slave /etc/my.cnf

Введение

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

Для того, чтобы выполнить все дальнейшие действия, у вас должны быть:

а) доступ к серверу на базе Linux, на котором работает MySQL/MariaDB;
б) название базы данных и данные доступа к ней.

Используем консоль

Экспорт

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

Для экспорта базы данных введите вот такую команду:

mysqldump -u имя_пользователя -p название_БД > data-dump.sql

в которой нужно ввести имя пользователя с необходимым доступом, название нужной вам базы данных, а также data-dump.sql – файл в текущей директории, куда будут сохранены данные.

После ввода этой команды вы не увидите никакого вывода на экране, однако вы можете проверить содержимое файла data-dump.sql для того, чтобы убедиться, что теперь он является резервной копией вашей базы данных.

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

-- MySQL dump 10.13 Distrib 5.7.16, for Linux (x86_64)
--
-- Host: localhost Database: database_name
-- ------------------------------------------------------
-- Server version 5.7.16-0ubuntu0.16.04.1

Если во время процесса экспорта будут какие-нибудь ошибки, утилита mysqldump выведет на экран сообщение о них.

Импорт

Для того, чтобы импортировать существующий файл в MySQL или MariaDB, вам нужно начать с создания новой базы данных. Именно в нее вы затем загрузите содержимое резервной копии.

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

После того, как вы подключились к консоли MySQL, создайте новую базу данных (в данном случае new_database):

mysql> CREATE DATABASE new_database;

После этого на экране появился следующий вывод:

Output
Query OK, 1 row affected (0.00 sec)

Теперь для выхода из консоли MySQL нажмите CTRL+D. Далее переходите к самому импорту. Сделать это можно, введя вот такую команду:

$ mysql -u имя_пользователя -p new_database < data-dump.sql

Команда очень похожа на команду экспорта, вам нужно ввести имя пользователя, название новой базы данных, куда вы будете импортировать данные (в качестве примера new_database), и название самого файла, который вы собираетесь импортировать (data-dump.sql).

Если команда выполнена корректно, то никакого вывода на экране вы не увидите; на экране могут отобразиться только сообщения о каких-то ошибках. Как и в случае с экспортом, проверить, точно ли все прошло успешно, вы можете путем подключения к MySQL и просмотра данных. Сделать это можно, к примеру, используя команды USE и SHOW. Команда use определяет, какая база данных будет использоваться в дальнейших запросах. Введите:

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

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

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

Хотите увидеть список столбцов в какой-то определенной таблице? Используйте команду SHOW COLUMNS FROM и название нужно вам таблицы:

SHOW COLUMNS FROM название_таблицы

Статистику по работе сервера можно получить в ответ на команду:

mysql> SHOW GLOBAL STATUS;

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Используем phpMyAdmin

Экспорт и импорт баз данных можно также делать через phpMyAdmin. В общем и целом, пожалуй, это даже более простой путь, чем использование консоли.

Экспорт

Зайдите в phpMyAdmin и выберите базу данных, с которых вы хотите работать.

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

Как импортировать и экспортировать базы данных в MySQL и MariaDBПосле внесения нужных изменений нажмите «Вперед» и выберите, куда хотите поместить созданный файл. Все, экспорт базы данных был успешно выполнен.

Импорт

Выполнить импорт базы данных тоже совсем несложно. Как и в предыдущем случае, в списке слева выберите нужную вам базу данных, а затем перейдите во вкладку «Импорт».

Импорт баз данных

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

Импорт успешно завершён, выполнено 32 запроса.

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

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

Заключение

Выбор подходящего метода экспорта и импорта баз данных зависит только от вас и ваших предпочтений – кому-то проще работать в консоли, а для кого-то понятнее phpMyAdmin. Главное, нужно регулярно делать бэкапы, в том числе и ваших баз данных.

Кстати, полезную информацию о базах данных я также нашел в Справочном центре Timeweb.

Перенос сайта(ов) без простоя и потери данных между выделенными серверами

Время прочтения
4 мин

Просмотры 36K

Казалось бы, что сложного перенести сайт на другой сервер? Наверно многие из нас копировали свои первые хоумпейджи с хостинга на хостинг в поисках лучшего, еще учась в школе или на первых курсах университета. Или вешая на уши лапши руководству, объясняли, что задача эта не решается мгновенно и сайт сутки работать не будет, ибо DNS такая штука…

Если в целом, ерундовая задача, правда? Но как сделать все идеально? Так, чтобы без простоев, чтобы не было расхождений в БД, чтобы не потерялись какие-нибудь файлики-аватарки-картинки, когда обновляется DNS запись IN A и у половины пользователей старый сайт, а у половины новый. А если это highload? Или сайт делало несколько поколений «лучших» программистов, считающих своим долгом создать новое подключение к БД в своем «модуле» для сайта. Наконец, если таких сайтов >10?

  • Скопировать файлы
  • Сделать дамб баз данных
  • Развернуть на новом сервере
  • На старом сервере заменить все коннекты к бд к новому
  • Настроить DNS

Сколько это займет времени? Сколько драгоценных минут сайт не будет работатьне будет работать правильно?

Почему-то я не нашел какой-либо статьи на хабре, поэтому решил написать несколько приемов, как можно перенести корявый проект или сразу несколько так, чтобы шеф был доволен стабильной работой сайта.

Все это актуально скорее для сайтов, написанных на РНР, для администраторов столкнувшихся с проектами, где не использовались фреймворки, cms и голова при написании кода.

1. Перенос файлов

Лучший способ через ssh при помощи rsync:

rsync -avz -e ssh логин@удалённый.хост:/путь/откуда/ /путь/куда/

Так rsync синхронизирует папки инкрементально, то есть копирует только то, чего не хватает и не тронет что-то новое. Например, можно написать небольшой bash скрипт, который будет синхронизировать все папки с старого сервера на новый в момент обновления DNS, но все же лучшим вариантом будет спустя пару суток синхронизировать папки с ключом -n (—dry-run) чтобы просто увидеть расхождения. Думаю в документации по rsync найдутся решения любых задач по синхронизации файлов. Программа должна быть установлена на оба сервера.

По протоколу FTP rsync работать не умеет, тогда используем lftp:

lftp -e 'mirror каталог-на-сервере локальный-каталог; bye;' -u логин:пароль@удалённый.хост
2. Перенос БД на примере MySQL

На обоих машинах открываем порт сервера MySQL в мир:

[mysqld]
...
bind-address            = * #127.0.0.1
...

Я напишу пример как я делаю бекапы каждый день, вырезка из logrotate.d:

#!/bin/bash
CMD="mysqldump --defaults-file=/root/my.cnf --no-create-info=FALSE --order-by-primary=FALSE --force=FALSE --no-data=FALSE --tz-utc=TRUE --flush-privileges=FALSE --compress=TRUE --replace=FALSE --host=localhost --insert-ignore=FALSE --extended-insert=TRUE --quote-names=TRUE --hex-blob=FALSE --complete-insert=FALSE --add-locks=TRUE --port=3306 --disable-keys=TRUE --delayed-insert=FALSE --create-options=TRUE --delete-master-logs=FALSE --comments=TRUE --default-character-set=utf8 --max_allowed_packet=1G --flush-logs=FALSE --dump-date=TRUE --lock-tables=TRUE --allow-keyw
ords=FALSE --events=FALSE --databases --routines"

for i in $(mysql --defaults-file=/root/my.cnf --batch --skip-column-names -e 'SHOW DATABASES' | grep -v '^information_schema$'); do
	if [ ! -e /srv/dumps/$i ]; then mkdir -m 700 /srv/dumps/$i; fi
		$CMD $i | gzip -c > /srv/dumps/$i/$i.sql.gz
done

/root/my.cnf

[client]
user = root
password = passw

Почему не классически «mysqldump -u root -p database > dump.sql»? Тогда не будут сохранены view и хранимые процедуры. Правильно делает дампы MySQL Workbench, оттуда я и взял эту команду.

Далее, в переменную $CMD добавляем -h ip_старый_сервер и меняем строчку $CMD $i | gzip -c > /srv/dumps/$i/$i.sql.gz на:

$CMD $i | mysql -u root -ppasswod $i

Конечно нужно предварительно создать все базы данных:

mysql --defaults-file=/root/my.cnf --batch --skip-column-names -e 'SHOW DATABASES' | grep -v '^information_schema$'

3. Перенаправление всех соединений к localhost:3306 — старый сервер на новый сервер

Довольно просто, используем ssh tunnel (предварительно остановив mysql):

ssh -Nf -L 3306:REMOTE_IP:3306 user@localhost

Причем ssh требуется только на локальной машине. Проверяем:

netstat -lnpt | grep 3306
telnet 127.0.0.1 3306

Получаем удаленный MySQL сервер на локальной машине. Все бы хорошо, но MySQL client если видит, что соединение идет к localhost то соединяется с сервером через локальный socket и никакие настройки его делать так отучить не могут. Т.е.

telnet localhost 3306

Или как обычно мы пишем в скриптах:

$resource = new mysqli('localhost', 'user', 'password');

Работать не будут, т.к. такое соединение тоже будет по обработано через локальный сокет. Конечно можно пробежаться по всем соединениям сайта и заменить localhost на 127.0.0.1 или внешний IP сервера, уже заработает, но есть способ лучше.

Нужно отредактировать в hex редакторе файлы:

libmysqlclient.so.15.0.0
libmysqlclient_r.so.15.0.0
или (зависит от версии mysql)
libmysqlclient.so.16.0.0
libmysqlclient_r.so.16.0.0

Найти единственное совпадение по тексту localhost и заменить на что-нибудь другое, вроде lacalhost, в обоих файлах. После локальные соединения будут работать через TCP/IP! Единственное MySQL не пускает юзеров у которых удаленный хост может быть только localhost в привилегиях. Это надо исправить на % во время переноса.

Пропустим настройки веб сервера, по этой теме полно материалов.
В итоге мы имеем две рабочие машины с одним сервером БД. Спокойно перенастраиваем DNS и идем спать!

p.s. Так же пришла в голову идея проксировать запросы со старого сервера на новый через nginx. Кто-нибудь делал так?

upd:
Так же я не претендую на лучшее решение, скорее ищу его. Что скажете?

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

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

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

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

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

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

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

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

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

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

Импортируем

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

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

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

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

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

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

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

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

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

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

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

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

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

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

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

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

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

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

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

Хотите изучить MySQL?

Посмотрите курс по базе данных MySQL!

Смотреть

Для чего может быть нужен экспорт и импорт баз данных

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

Методы сохранения баз данных

Многие современные панели управления сервером предоставляют возможности по операциям экспорта/импорта баз данных. Например, в aapanel для сохранения дампа нужно кликнуть по ссылке Databases, чем создать дамп базы данных чтобы потом скачать ее;

pic1

pic2

pic3

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

pic4

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

mysqldump имя_БД > /путь/до/файла/dump.sql

pic5

Как импортировать дамп в базу данных

Чтобы импортировать базу данных через панель управления aapanel, нужно щелкнуть по ссылке Databases, затем Import, Upload from local, выберите файл с дампом на своем компьютере и нажмите Import;

pic6

pic7

Также есть возможность импортировать дамп через PHPMyadmin. Войдите в него, щелкните по имени базы данных, затем кликните по ___, выберите файл дампа и нажмите кнопку Go:

pic8

И, конечно же, вы можно импортировать дамп БД через SSH. Достаточно дать команду:

mysql -uимя_пользователя -p имя_базы < /путь/до/dump.sql

Затем введите ваш пароль.

pic9

Итоги

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

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

Понравилась статья? Поделить с друзьями:
  • Перенос баз postgresql на другой диск windows
  • Перенос профиля пользователя windows 10 transwiz
  • Перенос активации windows 10 на другой компьютер
  • Перенос профиля пользователя windows 10 profwiz
  • Перенос активации windows 10 на другой диск