Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Как правильно сделать полный бекап для переноса данных с сервера MySql 5.5 на другой сервер MariaDB 10.2.13
Планирую так
mysqldump.exe -u backup -p***** -A -R -E --triggers --single-transaction > full_backup.sql
Я так понимаю, что пользователи тоже будут перенесены?
Отредактированно klow (15.03.2018 17:43:57)
Неактивен
Да, -A бэкапит все базы, включая базу mysql, в которой живут пользователи.
При переносе я бы, наверное, просто скопировал данные бинарно (innobackupex или просто остановить-скопировать, если есть возможность): это сильно быстрее для больших баз, чем перегонять через текст.
Неактивен
Нужно через текст для уменьшения бинарного файла. Он и так уже сильно вырос.
Неактивен
и не получилось
sql написал:
ERROR 1911 (HY000) at line 8097: Unknown option 'date_format'
То есть, нужно исключить MySql из бекапа. А как перенести пользователей?
Отредактированно klow (17.03.2018 11:54:20)
Неактивен
странно, дока говорит что date_format в марии есть и не используется также как и в mysql 5.5
Похоже на багу - возможно в марии 10.2 уже удалили эту переменную (как планируют сделать в mysql 8), но в доке не отобразили.
Что в этой строке? Можно закомментировать?
Неактивен
значение
date_format = %Y-%m-%d
есть еще
time_format = %H:%i:%s
datetime_format = %Y-%m-%d %H:%i:%s
Переменные не используются, но они есть. Вот поэтому меня смущает полный перенос ДБ MySql/
По поводу закомментировать - не понял.
Отредактированно klow (17.03.2018 15:03:32)
Неактивен
мда. Оказывается к переменным это не имеет отношение.
ругается на подключаемую таблицу
Отредактированно klow (17.03.2018 15:24:06)
Неактивен
действительно баг
Если убрать кавычки то отрабатывает без ошибок
Неактивен
Еще проблему обнаружил. Пользователи перенеслись, но пароли недействительные.
Это я что-то не так делаю или баг?
Неактивен
так, странности продолжаются.
Если попытаться выполнить команду
SQL Ошибка (1133): Can't find any matching row in the user table
Но если попытаться изменить пароль через интерфейс HeidiSQL то это срабатывает и после все остальные пользователи нормально могут работать, то есть, их пароли становятся рабочими. Запуск
Отредактированно klow (18.03.2018 13:32:27)
Неактивен
Для бэкапа при mysqldump можно поиграть с ключом --compatible, он автоматически вырежет все дополнительные свойства полей типа datetime_format. Что касается паролей, то Мария может хранить их в другом формате, поэтому бинарный перенос может не полечить, это правда. Как вариант — можно не дампить базу mysql вообще, снять гранты через pt-show-grants и накатить их текстом на целевую машинку.
Правильным «каноническим» способом я всё еще считаю запуск нового кода над старыми данными, после этого можно сделать mysqldump / mysql для уменьшения размера и преобразования форматов (в рамках одной версии кода все ключи должны быть совместимы).
Неактивен
paulus написал:
Для бэкапа при mysqldump можно поиграть с ключом --compatible, он автоматически вырежет все дополнительные свойства полей типа datetime_format.
Вырезать datetime_format не нужно - без него работать не будет.
В данном случае это явный баг. Кавычек в datetime_format не должно быть.
По поводу паролей, похоже тоже на баг, он он проявляется только если установить чистую MariaDB и залить БД MySql.
Неактивен
Баг с кавычками стоит на багтрекер запостить, если существует простая возможность его воспроизвести.
Неактивен
уже запостил. Воспроизводится легко
Неактивен
По поводу ошибки с пользователями. Кто может протестировать?
Воспроизведение ошибки:
1. Делаем бекап БД MySql.
Внимание!
Должны быть пользователи отличные от root.
Достаточно только базы mysql, например: mysqldump.exe --user=root -p MySQL > MySql.sql
2. Устанавливаем MySql (MariaDB) на "чистую" машину (на другой сервер или предварительно сносим MySql)!
3. Заливаем бекап из п.1.
4. Проверяем возможность зайти пользователем отличным от root или изменить пользователя
Отредактированно klow (21.03.2018 15:44:43)
Неактивен
Попробовал — у MariaDB 10 структура таблицы user отлична от структуры MySQL 5.7, поэтому просто так пользователей заливать нельзя, придется воспользоваться pt-show-grants таки.
Если восстанавливать текстом, то получится вот так:
180322 7:30:33 [ERROR] Fatal error: mysql.user table is damaged or in unsupported 3.20 format.
Если восстанавливать бинарно, то получится вот так:
180322 7:31:47 [ERROR] Unknown/unsupported storage engine: InnoDB
Всё-таки, системные таблицы — это системные таблицы. И плохо, что разломали бинарную совместимость, отстреливают себе ноги
Неактивен
Спасибо за инфу. Но в данном случае я все делаю на одной версии MariaDB 10.2.13. Ошибка у меня легко воспроизводится. Уже передал баг разработчику. Но интересно, это характерно только для MariaDB или для MySql тоже? А может этот баг проявляться только у меня?
Неактивен