|
|
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток! Уважаемые админы, подскажите, пожалуйста. Опишу ситуацию. К примеру, есть некое приложение, которое работает с БД. Выходит новая версия этого приложения, которой уже необходима измененная структура БД (к примеру, добавить колонку в какую-нибудь таблицу). Пусть в таблице, в которую нужно добавить новую колонку 50 миллионов записей. Процесс добавления займет долгое время - таблица будет залочена --> соответственно, приложения не сможет работать с этой таблицей пока она не разлочится. Чтобы организовать бесперебойную работу приложения, явно нужны две БД с репликацией данных. И вот тут я, к сожалению, вообще не в курсе, как все работает. К примеру: 1) Есть две БД с репликацией 2) Отключаем вторую БД (так или нет?), применяем все скрипты 3) ??? можно ли каким-либо образом синхронизировать текущие данные первой БД с изменненной БД? То есть, чтобы все данные из таблиц, которые есть в первой БД, перелились во вторую? Это звучит дико, но вдруг такое есть. К примеру: Изначальная БД Изменненная Таблица Person Таблица Person ------------------------------------------ firstName firstName lastName lastName age email В итоге age колонка удалилась, email добавилась. Нужно перелить все данные колонок firstName, lastName. Для следующего этапа необходимо, чтобы ничего из работающей БД не потерялось, и вторая БД (изменненная) содержала актуальные данные. 4) Отключаем первую БД, включаем вторую (измененную) и проделываем то же с первой. Извините, если порю глупость. Еще ничего не читал по этому поводу. Буду очень признателен за ответы. ______________________________________________________ while(!death){ Life.liveAndBeHappy(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 21:16:12 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Если нет опыта и если задача актуальна для практики, а не как учебная, то лучше просто выделить время для регламентных работ во время наименьшей нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 22:05:29 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
miksoft, Спасибо. Согласен... Но задача пока стоит без "регламентных работ" - за которые я всеми руками и ногами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 11:56:49 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
я бы всётаки двигался в сторону. сделать грубо говоря сервер рядом, развернуть там всё но уже с обновлениями, перетянуть данные...и потом конфигом заставить новые запросы уже обрабатываться на новом месте если очень критично...временно сделал бы синхронизацию изменений между старым и новым. а то...новый столбик говорите..а вы зуб дадите что в этом движке нету где строгой завязки к перечню столбцов в таблице, и что вариант новая таблица с столбиком, или новый код а таблица без столбика не выдаст сбой? если пхп код и база гдето очень завязаны одно под другое, а скорей всего так и есть, то обновиться должно одновременно всё и мгновенно. а запросы не обрабатываються мгновенно поэтому как не крути безпрерываная работа, подразумевает что часть запросов ещо будет отрабатывать на стоаром коде и старой базе ,часть уже на новой. так что делать дубль, и если критична полная синхронизация рилтайм - то организовать синхронизацию изменений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 12:27:33 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453я бы всётаки двигался в сторону. сделать грубо говоря сервер рядом, развернуть там всё но уже с обновлениями, перетянуть данные...и потом конфигом заставить новые запросы уже обрабатываться на новом месте Спасибо, в этом и вопрос. Представьте ситуацию, что в секунду идет обработка... ну 1000 запросов. Как можно обновить измененную БД до состояния неизмененной, переключение запросов с условием беспрерывной работы? Ведь данные на измененной все равно будут чуть не актуальными... Причем сделать это не "руками", а какими-то стандартными средствами (если есть такое вообще). Это, конечно, фантастика - все равно хоть какой-то малюсенький, но лаг во времени будет. Но вот как это делают на подобного рода высоконагруженных системах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 12:43:24 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
На высоконагруженных системах, да ещё критичных к простою, структуру не меняют "на лету". Сначала на копии реальных данных полностью оптимизируют и отлизывают процесс обновления структуры, а потом с учётом минимизации потерь выбирают время для регламентных работ, в ходе которых будет проведена процедура изменения структуры и тестирования результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 16:57:27 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо. Это и является моим предположением. Мне хотелось узнать, насколько мое предположение соответствует реальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 17:17:30 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
типо запрос попал на старую базу, вписал число 10 другой запрос попал на новую и ищет число 10 а его ещо нету... --- а если бы на старом коде при записи 10, 10 не записалось, что было бы? если не чп, то ничего страшного... ну при переходе на новую, выбьет юзеров по разу из логина (изер залогинился и в старой базе запись есть что он залогинился и айди сесии) а следующий запрос попал уже в новую ,где нету айди сессии...ну выбьет юзера на логин страничку...критично? или по другому...более критично чем юзер увидит - извини, мы не умеем беспрерывано работать, через часа три сервис будет доступен... я лично видел и на высоконагруженых системах такое...что в один вечер все заметили что их выбивало из логина. или комент добавил, обновил комента не видишь... обновил ещо пару разов и не видешь ни своего не других новых...ибо изменения попали в старую на новую с опозданием...и что? хуже чем 3 часа ждать ? врядли у него система коректировки векторов орбитальных звездолётов при воздействии гравитационных полей пролетающей мимо кометы. так что думаю, не обязательно останавливать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 17:31:54 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитМне хотелось узнать, насколько мое предположение соответствует реальности.Вы просто представьте, что вдруг в ходе изменения структуры что-то перекосилось. Потом посчитайте потери от такой неприятности - в человеко-часах на восстановление и в рублях за работу и за простой системы. Думаю, полученная сумма будет за гранью реального. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 18:06:45 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
AkinaБольшой Синий КитМне хотелось узнать, насколько мое предположение соответствует реальности.Вы просто представьте, что вдруг в ходе изменения структуры что-то перекосилось. Потом посчитайте потери от такой неприятности - в человеко-часах на восстановление и в рублях за работу и за простой системы. Думаю, полученная сумма будет за гранью реального. Я абсолютно с вами согласен! Именно это я и талдычу заказчику. Но пока мало действует, к сожалению. По поводе актуальности данных - они ДОЛЖНЫ быть "мега-актуальными", потому что это все касается денег. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 18:34:47 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Большой Синий Китбез "регламентных работ"Большой Синий Китэто все касается денег.Тогда не ту СУБД выбрали, имхо. Тут нужен Оракл или еще кто из топовых СУБД, но не MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 18:45:55 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Как один из вариантов костылей - новые поля добавлять не в существующую таблицу, а в новую, связанную со старой отношением 1:1 или 1:0..1. Иногда, кстати, из-за изменений в постановке задачи такая табличка вырастает в 1:N и перестает быть костылем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 18:48:32 |
|
||
|
Как вы обновляете базу в режиме бесперебойной работы?
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитИменно это я и талдычу заказчику. Но пока мало действует, к сожалению. Пффф... так будь проще! "Любой каприз за Ваши деньги!". Только сначала В БУМАГЕ изложи порядок своих действий, прогнозируемое время выполнения, и все возможные последствия, если что-то пойдёт не так - подвисание процесса, отказ, разрушение данных и пр.,- плюс прогнозируемые время и ресурсы на восстановление. Если заказчик согласен с этими рисками - пусть ставит подпись и печать. Поставил? делай и не забивай себе голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2014, 19:00:01 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38776594&tid=1834085]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 308ms |

| 0 / 0 |
