|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
Здравствуйте, поделитесь пожалуйста мыслями, опытом. Хочется улучшить/ускорить миграцию MySQL базы данных. У нас стандартный подход, скрипты в liquibase, выкатывается новая версия, скрипты запускаются. Но продуктивная БД достаточно большая и изменение таблицы(добавление колонки, изменение значений) с 10-15 миллионами записей может длится часами. Что призводит к блокировке таблицы и так д.. Поэтому деплой с изменениями стараются делать когда не слишком много запросов и так д.. Как можно улучшить сию ситуацию? Как делаете миграции вы? Как решали такую проблему? Где почитать о улучшениях при миграции/изменении БД? Решит ли частично проблемы переезд с MySQL на PostreSQL? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 09:03 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
поставить на сервер быстрые диски? сомневаюсь, что перевод на PostgeSQL что-то поменяет, а может даже сделает и хуже. У "промышленных" СУБД типа Oracle, скорее всего есть специальные решения для систем 24x7, но и то явно в EE редакции (дофига денег) тут только: 1. тупо ускорять (более быстрый сервер) 2. решать организационно - смериться с неизбежным, выгонять всех и например запускать скрипт ночью или (если ночи не хватает) на выхдных 3. не трогать таблицы без особой надобности честно говоря, IMHO проблема выглядит как-то надуманной. Что бы в нормальной рабочей системе требовалось регулярно менять основые таблицы.... бред какой-то. Не каждый же день выходят major патчи требущие изменения структур, даже если система в режиме разработки, пусть даже минор патчи раз в 1-2 недели, но major патчи чаще чем раз в 1-2 месяца... когда Вы эти изменения тестировать-то успеваете? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 15:19 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
_webdev_продуктивная БД достаточно большая и изменение таблицы(добавление колонки, изменение значений) с 10-15 миллионами записей может длится часами. Что призводит к блокировке таблицы Добавление поля? это вообще онлайновая операция и должна выполняться почти мгновенно. Ищите, где косячите... Изменение 15kk значений за несколько часов? у вас там первый пень и 32 метра оперативы, что ли, или БД на дискетку пишется? В крайнем случае - создание дополнительного поля, навешивание триггеров на его обновление при изменении поля-источника, потом копирование с обработкой чуньками по 5-10 тысяч, затем быстро лок-дроп-ренейм. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 15:41 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevсомневаюсь, что перевод на PostgeSQL что-то поменяет, а может даже сделает и хуже Ну как postgresql dba я знаю как вносить изменения схемы на живой проект без downtime или с секундными локами. Если приложение уверено, что только оно умеет вносить миграции (неправильно) - то это сложнее. Некоторые такие якобы умные штуки даже банальный create index concurrently не умеют... Для mysql - например вот в этот раздел документации смотреть надо: https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html Потом перконовский pt-online-schema-change, какие-нибудь пляски вокруг репликации. mysql я не админил, детально не распишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 15:43 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
Спасибо за ответ и мнение.. Leonid Kudryavtsevчестно говоря, IMHO проблема выглядит как-то надуманной. Что бы в нормальной рабочей системе требовалось регулярно менять основые таблицы.... бред какой-то. Не каждый же день выходят major патчи требущие изменения структур, даже если система в режиме разработки, пусть даже минор патчи раз в 1-2 недели, но major патчи чаще чем раз в 1-2 месяца... когда Вы эти изменения тестировать-то успеваете? - Вот так как-то и живём. Да, всё верно, релизимся раз в 2 недели. Такие апдейты, действительно бывают не часто, но бывают и каждый раз вспоминается, что нужно как-то оптимизировать... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:21 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
AkinaДобавление поля? это вообще онлайновая операция и должна выполняться почти мгновенно. Ищите, где косячите... - буду. Уже почитал о этом. Спасибо. AkinaИзменение 15kk значений за несколько часов? у вас там первый пень и 32 метра оперативы, что ли, или БД на дискетку пишется? Не знаю, сколько миллионов точно, но база весит около 20Гиг. Никак нет, вполне себе продуктивный Galera Cluster, правда какие у него параметры не знаю.. AkinaВ крайнем случае - создание дополнительного поля, навешивание триггеров на его обновление при изменении поля-источника, потом копирование с обработкой чуньками по 5-10 тысяч, затем быстро лок-дроп-ренейм. - пасиб ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:24 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
AkinaДобавление поля? это вообще онлайновая операция и должна выполняться почти мгновенно. Ищите, где косячите... - буду. Уже почитал о этом. Спасибо. AkinaИзменение 15kk значений за несколько часов? у вас там первый пень и 32 метра оперативы, что ли, или БД на дискетку пишется? Не знаю, сколько миллионов точно, но база весит около 20Гиг. Никак нет, вполне себе продуктивный Galera Cluster, правда какие у него параметры не знаю.. AkinaВ крайнем случае - создание дополнительного поля, навешивание триггеров на его обновление при изменении поля-источника, потом копирование с обработкой чуньками по 5-10 тысяч, затем быстро лок-дроп-ренейм. - пасиб ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:29 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
MelkijДля mysql - например вот в этот раздел документации смотреть надо: https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html Потом перконовский pt-online-schema-change, какие-нибудь пляски вокруг репликации. mysql я не админил, детально не распишу. Пасиб ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:29 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
_webdev_Вот так как-то и живём. Да, всё верно, релизимся раз в 2 недели. Такие апдейты, действительно бывают не часто, но бывают и каждый раз вспоминается, что нужно как-то оптимизировать... вопрос на 90% решается организационно. Если "окно" для накатов патчей все равно есть, то накатить их ночью, в выходные - лично я проблемы не вижу проблема только тогда, когда о них "и каждый раз вспоминается". Тогда понятно, предложение к коллегам неожиданно остаться поработать вечером, когда у них уже совершенно другие планы (например выпить пива в пятницу вечером) - может вызвать только негатива на кривых "патче-писателей" если же админы об этом заранее за неделю знают + не от программистов, а от начальство + им это как-то компенсируется + есть удаленный доступ из дома.... просьба запустить скрипт ночью или в выходные - без проблем. AFAIK & IMHO ну и IMHO любое усложнение скрипта - возрастание вероятности не штатных ситуаций, сбоев при накате - а любой сбой при накате, это не 10-30 минут "подождать", это от полдня до пары дней стояния на ушах все конторы (а то и хуже) плюс не копить все изменения на один раз. Я сейчас, например, все изменения структур/справочников (которые не ломают старый функционал), сразу на прод скидываю. Когда тестирование закончится, нужно будет накатить только пакеты. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 16:44 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
_webdev_, Я как то пытался думать, как быстрее поменять колесо на ходу, в итоге приходится останавливаться и все упирается в скорость откручиивания болтов. Так что железо и в африке железо ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 06:12 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevвопрос на 90% решается организационно. Если "окно" для накатов патчей все равно есть, то накатить их ночью, в выходные - лично я проблемы не вижу проблема только тогда, когда о них "и каждый раз вспоминается". Тогда понятно, предложение к коллегам неожиданно остаться поработать вечером, когда у них уже совершенно другие планы (например выпить пива в пятницу вечером) - может вызвать только негатива на кривых "патче-писателей" - Да, всё известно. Просто хотелось бы поменьше таких ситуаций где админы жалуются... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 08:16 |
|
Ускорение миграции/изменения таблиц в MySQL?
|
|||
---|---|---|---|
#18+
Alex_UstinovЯ как то пытался думать, как быстрее поменять колесо на ходу, в итоге приходится останавливаться и все упирается в скорость откручиивания болтов. Так что железо и в африке железо )))) Кста, Спрашивал вчера Galera Cluster -> /3 nodes / 60 Gb RAM / HDD Cluster ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 08:17 |
|
|
start [/forum/topic.php?fid=47&msg=39874191&tid=1828929]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 176ms |
0 / 0 |