Как и с чем можно сконвертировать базы размером более 30GB в mysql с cp1251 в utf8?

Имеются базы размером более 30GB, необходимо перевести схемы в utf8 и также сконвертировать данные.
Есть у кого идеи как оптимальнее всего это сделать?
  • Вопрос задан
  • 230 просмотров
Пригласить эксперта
Ответы на вопрос 3
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Если тег highload поставлен не от балды (вообще-то база на 30 гб - никакая) и в базу действительно идет перманентная нагрузка, от которой избавиться нельзя, то:
1) если есть возможность переключить базу и сервис в read-only - переключаем.
1.1) если нет - пишем в приложении прослойку к mysql-базе, которая сначала делает запрос в новую базу с utf8, потом в старую с cp1251, мерджит результаты.
2) перегоняем построчно/потаблично данные в новую базу, конвертируя на лету. Проверяем, что строка есть в новой базе, удаляем строку из старой базы,

Если же у вас highload поставлен от балды, то дамп, iconv, restore в базу с новым именем. Приложение перед этим потушить, чтобы данные не потерялись (или в read-only базу перевести).
Ответ написан
Vapaamies
@Vapaamies
В творческом кризисе
А в самом MySQL нельзя разве? Создать таблицу в UTF-8 и при помощи insert as select перегнать данные. Затем старую таблицу можно удалить, а новую переименовать в имя старой, если это нужно.

После перегонки всех таблиц изменить умолчательную кодировку базы на UTF-8. Можно даже до, думается, раз кодировка в каждой таблице отдельно хранится.
Ответ написан
Bessome
@Bessome
Администратор Linux, Windows. 1С программист
iconv в linux успешно перекодирует. Однако поддержу Vapaamies , лучше выгрузить из MySQL в нужной кодировке (там у таблиц она задается).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы