Решил написать небольшой пост на тему повторной установки MySQL на компьютер, на котором он уже был установлен, так как столкнулся с некоторыми нюансами. А именно, выполняя всё по своей же инструкции, встретил повторяющуюся ошибку, повисание вот на этом месте…
Не помогала ни перезагрузка, ни удаление и повторная установка. Через пару часов копаний решение нашел и достаточно элегантное.
Делаем Дамп / Backup
Я здесь не говорю о том, что при любой переустановке – неплохо бы делать дампы, или по-другому бэкапы. Предполагается, что перед сносом MySQL дампы для восстановления готовы.
Win+X>Командная строка (администратор)
Итак откроем cmd.exe и поменяем в нем директорию
1 |
cd C:\Program Files\MySQL\MySQL Server 5.5\bin |
Здесь нюанс состоит в том, что если открыть cmd под обычным пользователем, то есть так…
И поменять в нем рабочую директорию, то при дальнейшей попытке сделать дамп будет ошибка “Отказано в доступе”. Поэтому необходимо зайти под администратором.
Нужно cmd.exe открыть под админом, например через WIN+X | Выбрать Командная строка (администратор)
Далее пишем стандартные инструкции для бэкапа (самый простой вариант)
Для начала нам нужно заблокировать все таблицы во всех базах данных
1 |
FLUSH TABLES WITH READ LOCK |
Теперь собственно сделаем дамп или другими словами бэкап
Этот пример для дампа одной базы данных
1 |
mysqldump test_db > dump.sql |
test_db здесь это имя базы данных. Бэкап сохраняется в папке BIN, в той же самой, в которой установлена утилита mysqldump.exe да и собственно mysqld.exe
Примечание из документации
Для движков InnoDB необходимо добавлять –single-transaction, например так…
Этот пример для дампа всех баз данных
1 |
mysqldump --single-transaction --all-databases > backup_sunday_1_PM.sql |
Полученный .sql файл содержит набор INSERT инструкций, которые могут быть использованы, чтобы загрузить архивные таблицы позже. Также здесь применен параметр –all-databases, который сделает архив всех баз данных.
Как победить баг?
Итак, чтобы победить этот баг, нужно сделать следующее
-Удалить программу с помощью инсталлятора. Просто попробуйте инсталлировать – и она сама предложить вариант Remove.
-Включить отображение скрытых файлов и папок. В Windows 10 это можно сделать так…
Win+X > Панель управления > Параметры проводника
-перейти в C:\ProgramData\MySQL и удалить или куда-нибудь перенести папку MySQL Server 5.5
-Установить MySQL Server заново
Мне эти шаги помогли, но кому не поможет – почитайте ещё здесь
Устанавливаем Max_Allowed_Packet в my.ini
У меня дамп одной из баз данных был равен примерно 18 мб., а max_allowed_packet по умолчанию при установке равен 1 МБ, соотвественно, при попытке его загрузить обратно в базу выскакивала ошибка MySQL has goneAway.
Чтобы этого не происходило – зайдите в WIndows под администратором,
Если учетная запись администратора не включена, то включить её можно вот так…
Win+X –> Командная строка ( администратор )
Для включения встроенной учетной записи Администратор в русской версии Windows используйте команду
net user Администратор /active:yes
В системе с английской локализацией встроенная учетная запись администратора называется Administrator, поэтому команда будет выглядеть так:
net user Administrator /active:yes
-найдите файл
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
-найдите в нем секцию
[mysqld]
-и допишите туда max_allowed_packet=1024M
1024M это максимально допустимое значение этого параметра в MySQL, можете поставить меньше, в зависимости от своей задачи.
Загружаем базу обратно, на новый сервер MySQL
-сначала вызываем консоль и заходим с данными root аккаунта
Win+R > mysql -uroot -pmasterkey
-создаем пустую базу данных с таким же именем, в моем случае имя базы, которую я архивировал было test_db
1 |
create database testdb; |
-переносим файл дампа (dump.sql) в директорию вновь установленного сервера
C:\Program Files\MySQL\MySQL Server 5.5\bin
-загружаем базу из дампа на сервер
1 |
mysql -uroot -pmasterkey test_db < dump.sql |
Проверяем работу
-запускаем консоль mysql из Win+R
-просим показать все базы данных show databases
Ура! Всё работает и всё на месте!!!