powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вы обновляете базу в режиме бесперебойной работы?
13 сообщений из 13, страница 1 из 1
Как вы обновляете базу в режиме бесперебойной работы?
    #38775654
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток!
Уважаемые админы, подскажите, пожалуйста.

Опишу ситуацию.
К примеру, есть некое приложение, которое работает с БД. Выходит новая версия этого приложения, которой уже необходима измененная структура БД (к примеру, добавить колонку в какую-нибудь таблицу). Пусть в таблице, в которую нужно добавить новую колонку 50 миллионов записей. Процесс добавления займет долгое время - таблица будет залочена --> соответственно, приложения не сможет работать с этой таблицей пока она не разлочится.

Чтобы организовать бесперебойную работу приложения, явно нужны две БД с репликацией данных.

И вот тут я, к сожалению, вообще не в курсе, как все работает. К примеру:
1) Есть две БД с репликацией
2) Отключаем вторую БД (так или нет?), применяем все скрипты
3) ??? можно ли каким-либо образом синхронизировать текущие данные первой БД с изменненной БД? То есть, чтобы все данные из таблиц, которые есть в первой БД, перелились во вторую? Это звучит дико, но вдруг такое есть.

К примеру:
Изначальная БД Изменненная
Таблица Person Таблица Person
------------------------------------------
firstName firstName
lastName lastName
age email


В итоге age колонка удалилась, email добавилась. Нужно перелить все данные колонок firstName, lastName.

Для следующего этапа необходимо, чтобы ничего из работающей БД не потерялось, и вторая БД (изменненная) содержала актуальные данные.

4) Отключаем первую БД, включаем вторую (измененную) и проделываем то же с первой.

Извините, если порю глупость. Еще ничего не читал по этому поводу.

Буду очень признателен за ответы.

______________________________________________________
while(!death){
Life.liveAndBeHappy();
}
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38775673
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нет опыта и если задача актуальна для практики, а не как учебная, то лучше просто выделить время для регламентных работ во время наименьшей нагрузки.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776023
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
Спасибо.
Согласен... Но задача пока стоит без "регламентных работ" - за которые я всеми руками и ногами...
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776076
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы всётаки двигался в сторону.

сделать грубо говоря сервер рядом, развернуть там всё но уже с обновлениями, перетянуть данные...и потом конфигом заставить новые запросы уже обрабатываться на новом месте

если очень критично...временно сделал бы синхронизацию изменений между старым и новым.

а то...новый столбик говорите..а вы зуб дадите что в этом движке нету где строгой завязки к перечню столбцов в таблице, и что вариант новая таблица с столбиком, или новый код а таблица без столбика не выдаст сбой?

если пхп код и база гдето очень завязаны одно под другое, а скорей всего так и есть, то обновиться должно одновременно всё и мгновенно. а запросы не обрабатываються мгновенно
поэтому как не крути безпрерываная работа, подразумевает что часть запросов ещо будет отрабатывать на стоаром коде и старой базе ,часть уже на новой.

так что делать дубль, и если критична полная синхронизация рилтайм - то организовать синхронизацию изменений.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776110
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453я бы всётаки двигался в сторону.

сделать грубо говоря сервер рядом, развернуть там всё но уже с обновлениями, перетянуть данные...и потом конфигом заставить новые запросы уже обрабатываться на новом месте


Спасибо, в этом и вопрос. Представьте ситуацию, что в секунду идет обработка... ну 1000 запросов. Как можно обновить измененную БД до состояния неизмененной, переключение запросов с условием беспрерывной работы? Ведь данные на измененной все равно будут чуть не актуальными... Причем сделать это не "руками", а какими-то стандартными средствами (если есть такое вообще).

Это, конечно, фантастика - все равно хоть какой-то малюсенький, но лаг во времени будет. Но вот как это делают на подобного рода высоконагруженных системах?
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776439
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На высоконагруженных системах, да ещё критичных к простою, структуру не меняют "на лету".

Сначала на копии реальных данных полностью оптимизируют и отлизывают процесс обновления структуры, а потом с учётом минимизации потерь выбирают время для регламентных работ, в ходе которых будет проведена процедура изменения структуры и тестирования результата.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776467
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Спасибо. Это и является моим предположением. Мне хотелось узнать, насколько мое предположение соответствует реальности.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776489
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типо запрос попал на старую базу, вписал число 10

другой запрос попал на новую и ищет число 10 а его ещо нету...

---
а если бы на старом коде при записи 10, 10 не записалось, что было бы? если не чп, то ничего страшного...

ну при переходе на новую, выбьет юзеров по разу из логина (изер залогинился и в старой базе запись есть что он залогинился и айди сесии) а следующий запрос попал уже в новую ,где нету айди сессии...ну выбьет юзера на логин страничку...критично? или по другому...более критично чем юзер увидит - извини, мы не умеем беспрерывано работать, через часа три сервис будет доступен...


я лично видел и на высоконагруженых системах такое...что в один вечер все заметили что их выбивало из логина.


или комент добавил, обновил комента не видишь... обновил ещо пару разов и не видешь ни своего не других новых...ибо изменения попали в старую на новую с опозданием...и что? хуже чем 3 часа ждать ?

врядли у него система коректировки векторов орбитальных звездолётов при воздействии гравитационных полей пролетающей мимо кометы.

так что думаю, не обязательно останавливать...
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776540
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитМне хотелось узнать, насколько мое предположение соответствует реальности.Вы просто представьте, что вдруг в ходе изменения структуры что-то перекосилось. Потом посчитайте потери от такой неприятности - в человеко-часах на восстановление и в рублях за работу и за простой системы. Думаю, полученная сумма будет за гранью реального.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776583
Большой Синий Кит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaБольшой Синий КитМне хотелось узнать, насколько мое предположение соответствует реальности.Вы просто представьте, что вдруг в ходе изменения структуры что-то перекосилось. Потом посчитайте потери от такой неприятности - в человеко-часах на восстановление и в рублях за работу и за простой системы. Думаю, полученная сумма будет за гранью реального.

Я абсолютно с вами согласен! Именно это я и талдычу заказчику. Но пока мало действует, к сожалению.

По поводе актуальности данных - они ДОЛЖНЫ быть "мега-актуальными", потому что это все касается денег.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776594
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий Китбез "регламентных работ"Большой Синий Китэто все касается денег.Тогда не ту СУБД выбрали, имхо.
Тут нужен Оракл или еще кто из топовых СУБД, но не MySQL.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776600
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как один из вариантов костылей - новые поля добавлять не в существующую таблицу, а в новую, связанную со старой отношением 1:1 или 1:0..1.
Иногда, кстати, из-за изменений в постановке задачи такая табличка вырастает в 1:N и перестает быть костылем.
...
Рейтинг: 0 / 0
Как вы обновляете базу в режиме бесперебойной работы?
    #38776610
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большой Синий КитИменно это я и талдычу заказчику. Но пока мало действует, к сожалению.
Пффф... так будь проще! "Любой каприз за Ваши деньги!".

Только сначала В БУМАГЕ изложи порядок своих действий, прогнозируемое время выполнения, и все возможные последствия, если что-то пойдёт не так - подвисание процесса, отказ, разрушение данных и пр.,- плюс прогнозируемые время и ресурсы на восстановление. Если заказчик согласен с этими рисками - пусть ставит подпись и печать.

Поставил? делай и не забивай себе голову.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вы обновляете базу в режиме бесперебойной работы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]