Перенос баз данных MySQL

Обновился Open Server и появилась задача перенести все базы данных со старой версии в новую.

Я работаю на компьютере с Windows 10

Буду использовать:

  • Консоль Windows PowerShell
  • Консоль Git Bash
  • Текстовый редактор — Vim

Создаём место для хранения

D:/backups/MySQL/ - папка для хранения баз данных. Из этой папки будут исполняться все консольные команды
D:/backups/MySQL/list.txt - список имён баз данных
D:/backups/MySQL/export.sh - команды для экспорта
D:/backups/MySQL/create.sh - команды для создания баз данных
D:/backups/MySQL/import.sh - команды для импорта

Можно создать все нужные файлы командами в Git Bash:

mkdir -p backups/MySQL
cd backups/MySQL
touch list.txt export.sh import.sh create.sh import.sh

Получаем список баз данных

Запускаем консоль администратора Windows PoserShell

Подключаемся к MySQL командой

mysql -u root

Выводим список всех баз данных

show databases;

Копируем текст и вставляем в текстовый редактор Vim.

Заполняем файл list.txt

vim list.txt

Очищаем от ненужных знаков | и пробелов.

В результате получится список с названиями баз данных.

database_1
database_2
...
database_n

Из полученного списка нужно удалить служебные базы данных

information_schema
performance_schema
mysql
sys

Экспорт баз данных

Открываем файл export.sh в редакторе vim

vim export.sh

Загружаем в него список баз данных

:read list.txt

С помощью регулярного выражения, превращаем список имён в команды экспорта

%s/\v(^.*$)/mysqldump --column-statistics=0 -u root \1 > \1.sql/g

В результате

mysqldump --column-statistics=0 -u root database_1 > database_1.sql
mysqldump --column-statistics=0 -u root database_2 > database_2.sql
...
mysqldump --column-statistics=0 -u root database_n > database_n.sql

Запускаем его в Windows PoserShell

C:\> export.sh

Создаём базы данных

Останавливаем сервер и запускаем новую версию.

Открываем файл create.sh и загружаем список имён баз данных

vim create.sh
:read list.txt

С помощью регулярного выражения или вручную приводим список к следующему виду

%s/\v(^.*$)/create database \1;/g

Результат

create database database_1;
create database database_2;
...
create database database_n;

Копируем полученные команды

Подключаемся к MySQL в

mysql -u root

Вставляем скопированные команды.

В результате у нас созданы все необходимые базы данных.

Импорт

Работаем с файлом import.sh

Открываем его в vim и копируем в него список имён баз

vim import.sh
:read list.txt

С помощью регулярного выражения превращаем список баз данных в команды

%s/\v(^.*$)/use \1; source \1.sql;/g

Результат

use database_1; source database_1.sql;
use database_2; source database_2.sql;
...
use database_n; source database_n.sql;

Копируем полученные команды

Подключаемся к MySQL в Windows PoserShell

mysql -u root

Вставляем скопированные команды.

Ждём …

На этом всё!

Обратный звонок
Заказ в 1 клик
название товара

Задать вопрос

Заполните форму обратной связи и я свяжусь с вами в ближайшее время