MySQL и MariaDB, бинарная совместимость по базам MYISAM
Модератор: Модераторы
MySQL и MariaDB, бинарная совместимость по базам MYISAM
Коллеги, вопрос проистекает из неожиданного сюрприза: обнаружено, что в MySQL 8.x напрочь убита бинарная совместимость таблиц MYISAM с предыдущими версиями, а конкретно - похерена как таковая поддержка файла-описателя формата .FRM. Оно теперь где-то глубоко внутри, не выковыривается. И, соответственно, легальный трансфер данных между разными инсталляциями возможен только через mysqldump и его текстовые дампы.
Надо, ввиду очень большого объёма и неприемлемости конвертирования в текст таскать именно бинарное представление между двумя точками инсталляций.
Вопрос разделю на несколько разных:
1. Какие есть средства (или алгоритмы процесса) вогнать имеющиеся бинарные файлы mysql 5.7 (MYISAM) в инсталляцию mysql 8.x, чтобы с информацией можно было работать? Кроме mysqldump. И существуют ли эти средства и методика вообще?
2. Как перетаскивать в бинарном виде базы MYISAM с одной инсталляции mysql 8.x на другую. Клонирование не подходит, сети между точками нет. Ткните, пожалуйста, в пошаговое описание процесса, если таковой существует.
3. Как с поддержкой MYISAM у MariaDB? Она вообще способна работать с экземплярами баз от mysql или нет? Если да, то в текущих версиях не сделали ли то же самое, что и в mysql с заголовком таблицы?
Надо, ввиду очень большого объёма и неприемлемости конвертирования в текст таскать именно бинарное представление между двумя точками инсталляций.
Вопрос разделю на несколько разных:
1. Какие есть средства (или алгоритмы процесса) вогнать имеющиеся бинарные файлы mysql 5.7 (MYISAM) в инсталляцию mysql 8.x, чтобы с информацией можно было работать? Кроме mysqldump. И существуют ли эти средства и методика вообще?
2. Как перетаскивать в бинарном виде базы MYISAM с одной инсталляции mysql 8.x на другую. Клонирование не подходит, сети между точками нет. Ткните, пожалуйста, в пошаговое описание процесса, если таковой существует.
3. Как с поддержкой MYISAM у MariaDB? Она вообще способна работать с экземплярами баз от mysql или нет? Если да, то в текущих версиях не сделали ли то же самое, что и в mysql с заголовком таблицы?
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
У меня на фирме из-за этого остановились на 5.7 и не стали обновляться. Совместимость 5.7 и MariaDB я в полной мере не проверял, но на простых базах без навороченных встроенных процедур, совместимость работала.
У меня линуксовый клиент (MariaDB) спокойно работал с сервером MySQL 5.7 на FreeBSD. Т.е. клиентские библиотеки ставились из репозитория ОС и через них моя прога работала. Файлы баз просто копировал с виндового сервака (там был MySQL 5.5) на сервак с FreeBSD. Базы MYISAM. Про наоборот сказать ничего не могу - не было таких задач.
Собственно, вопрос не о совместимости клиентов, а о том, как подставить копированный набор файлов таблицы (table.FRM, table.MYD, table.MYI) из 5.х в 8.х... Или возможно ли это вогнать в MariaDB...
Добавлено спустя 3 минуты 12 секунд:
Снег Север, не очень понятно, вы в MariaDB именно базы подставляли, или описываете совместимость работы программ с интерфейсом к MariaDB/mySQL?
Добавлено спустя 3 минуты 12 секунд:
Снег Север, не очень понятно, вы в MariaDB именно базы подставляли, или описываете совместимость работы программ с интерфейсом к MariaDB/mySQL?
SSerge писал(а):1. Какие есть средства (или алгоритмы процесса) вогнать имеющиеся бинарные файлы mysql 5.7 (MYISAM) в инсталляцию mysql 8.x, чтобы с информацией можно было работать? Кроме mysqldump. И существуют ли эти средства и методика вообще?
Нет. Такого способа нет, механизм хранения данных очень сильно изменился, таблицы MyISAM больше не используются для хранения схемы.
Так что данные переносить только с помощью дампа.
SSerge писал(а):2. Как перетаскивать в бинарном виде базы MYISAM с одной инсталляции mysql 8.x на другую. Клонирование не подходит, сети между точками нет. Ткните, пожалуйста, в пошаговое описание процесса, если таковой существует.
Теперь никак)) Только дампы.
SSerge писал(а): Как с поддержкой MYISAM у MariaDB? Она вообще способна работать с экземплярами баз от mysql или нет? Если да, то в текущих версиях не сделали ли то же самое, что и в mysql с заголовком таблицы?
Скорее всего пока будет работать.
Добавлено спустя 7 минут 32 секунды:
SSerge, а что мешает везде использовать именно 5.7? Если вы используете устаревший MyISAM то какой смысл использовать новые версии MySQL?
Добавлено спустя 30 минут 31 секунду:
Ещё можно попробовать включить на серверах innodb_file_per_table и конвертировать конвертировать таблицы в InnoDB.
дальше схема простая - останавливаем сервер, копируем данные, запускаем сервер, идем на второй сервер - останавливаем, копируем, запускаем.
По идее должно работать, но не гарантий не даю))
WAYFARER писал(а):Теперь никак)) Толь
Тут интересно вот что: при апгрейде, скажем, работающей Ubuntu 18.04 на 20.04, соответственно, апгредится mySQL с 5-го на 8-й. И при своей переустановке он конвертирует все таблицы в новый формат. Чем? Неужели, через mysqldump? Или есть "скрытая новая команда"?
WAYFARER писал(а):включить на серверах innodb_file_per_table
надо посмотреть, что из этого выйдет. Настораживает, что INNODB по всем своим описаниям в принципе не дефрагменитируема и при большом количестве удаленных записей физически так и сохранит их в себе; при таком подходе как бы объём файлов не был больше, чем у дампа, в несколько раз.
ЗЫ:
Может быть кто пробовал - процесс - создать пустую таблицу myISAM с той же структурой, как и копируемая база, и заменить далее файлы .MYD и .MYI при остановленном сервере, не спасёт ли отца русской демократии?
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
SSerge писал(а):Снег Север, не очень понятно, вы в MariaDB именно базы подставляли, или описываете совместимость работы программ с интерфейсом к MariaDB/mySQL?
Базы, изначально созданные в мускуле, переносил на марио сервер. Подключался из дельфийской программы мускуловским стандартным клиентом. Фич, которые могли быть не совместимыми, у меня не проявилось. И это под виндой 10 было.
SSerge писал(а):Коллеги, вопрос проистекает из неожиданного сюрприза: обнаружено, что в MySQL 8.x напрочь убита бинарная совместимость таблиц MYISAM с предыдущими версиями
там в MySQL не всегда даже 5ке базы совместимы бинарно. Чтобы Embedded оживить нужно искать libs с нужными цифрами.
Быали поподали вообще с 4 версии.. это было жестко, либлов даже на официальном сайте не найти.
SSerge писал(а):Тут интересно вот что: при апгрейде, скажем, работающей Ubuntu 18.04 на 20.04, соответственно, апгредится mySQL с 5-го на 8-й. И при своей переустановке он конвертирует все таблицы в новый формат. Чем? Неужели, через mysqldump? Или есть "скрытая новая команда"?
На самом деле процедура обновления намного сложнее. А базы от версии к версии переносятся дампами вручную. Ничего он не конвертирует при обновлении.
WAYFARER писал(а):Ничего он не конвертирует при обновлении.
да ну? Вы считаете, что это я сам их незаметно для себя вручную дампами перенёс?
Еще и пишет в процессе обновления "database rebuilding" и перечисляет, над чем именно работает.
