|
|
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Исходные данные: имеется сервер БД, на котором происходит изменение данных (вставка, удаление, обновление) + выборка (основной сервер). Также имеется второй сервер, аналогичный первому (резервный). Сервера находятся в разных дата-центрах. На серверах развёрнута СУБД MySQL 5.1.33, всё крутится под управлением ОС FreeBSD 8.0, 95% таблиц использует движок InnoDB. Конфигурация серверов: Core 2 Duo Quad, 8GB RAM, HDD 500GB, 100Mbit internet; Задача: обеспечить плавный переход на резервный сервер в случае, если основной сервер по какой-то причине ложится. Под плавным переходом подразумевается полное переключение на работу с БД на резервном сервере в течение 5-10 минут. Естественно, мусолится вариант с репликацией (master - slave схема). Основной сервер - Master, резервный - Slave. Соотв. они меняются местами, когда основной падает, т.е. резервный становится основным. Когда упавший сервер оживает, он становится резервным (на него переносится БД с нового master сервера, и он в свою очередь становится slave сервером). Схема не очень нравится, т.к. надо париться с переносом БД, когда упавший сервер оживает (а базы весят много, больше 10Гб). Если базы не переносить, а просто настроить снова репликацию в обратную сторону, то может быть проблема в случае, если перед падением основного сервера на нём в БД что-то писалось, и он не успел это отреплицировать на slave сервер. Отсюда вопрос: какие схемы используете вы в своих проектах и пользуетесь ли вы схемой master - master (про подводные камни этого решения знаю немного)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2010, 03:14 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Что, никто такими вещами не занимается на форуме или специалисты тут не водятся? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 01:38 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
GeniussЧто, никто такими вещами не занимается на форуме или специалисты тут не водятся? :) Сдается мне, вы просто немного не в том разделе тему забили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 10:57 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
OrtogonGeniussЧто, никто такими вещами не занимается на форуме или специалисты тут не водятся? :) Сдается мне, вы просто немного не в том разделе тему забили. Да вроде бы тема соответствует разделу. Ваши предложения по переносу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 11:35 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
GeniussOrtogonGeniussЧто, никто такими вещами не занимается на форуме или специалисты тут не водятся? :) Сдается мне, вы просто немного не в том разделе тему забили. Да вроде бы тема соответствует разделу. Ваши предложения по переносу? В раздел по MySQL, я думаю. В этой в основном студенты размышляют, как им табличек налепить по курсовику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 13:14 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Используйте Oracle в конфигурации со Standby сервером и клиентов с поддержкой failower. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2010, 14:43 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Условия исходной задачи поменять нельзя: используется именно СУБД MySQL. Oracle находится совсем в другой весовой категории, там наверняка есть общепринятые механизмы решения такого рода задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 11:33 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Метод решения задачи в лоб Репликация (накатывание лога, хотя не знаю умеет ли MySQL накатывать лог) накатывается не постоянно, а кусками, то есть вы закладываете рассогласование в пределах этого куска. При этом у вас всегда есть копия перед накатом лога/файла. получили лог накатили на копию передали на резерв, накатили там. в случае падения переключения изменения неотреплицированные считаются потерянными и новый лог с бывшего резервного сервера накатывается на копию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 05:19 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
по этой теме спецы водятся на http://phpclub.ru/talk/forumdisplay.php?s=&forumid=27 - там люди, разрабатывавшие высоконагруженные системы на мускуле на десятки серверов, которые могут посоветовать относительно репликаций все, что захотите :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 07:15 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Geniussт.к. надо париться с переносом БД, когда упавший сервер оживает (а базы весят много, больше 10Гб) ...а это неприемлемое время на перекачку между датацентрами? Можно сделать четырехнодное кольцо с двумя серверами в одном ДЦ и двумя в другом. Оно, кстати, и в мультимастер может работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 14:42 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
SERG1257, А сколько серверов принимает участие в схеме, три? pilot911, Спасибо, открою тему параллельно и там. Kew, > ...а это неприемлемое время на перекачку между датацентрами? Ну как, сервера могут быть территориально разбросаны, скажем один в США, другой в Европе. Хотя, конечно, с учётом того, что сервера падают далеко не каждый день - это в принципе приемлемое решение, тем не менее может есть лучшие решения. >можно сделать четырехнодное кольцо с двумя серверами в одном ДЦ и двумя в другом. >Оно, кстати, и в мультимастер может работать... А можно поподробнее? Я так понимаю, два сервера выступают в роли одного и находятся они в одном ДЦ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 17:27 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
В мануале по мускулю на его официальном сайте описана схема кольцевой репликации. Если 1. Репликация устроена так: Сервер1->Сервер2->Сервер3->Сервер4->(обратно Сервер1) 2. Сервер1, Сервер2 сидят в одном датацентре, Сервер3, Сервер4 -- в другом 3. Изменяются данные только в Сервер2 или паре Сервер2 и Сервер 4 то 1. Восстановление павшего Сервер 2 возможно сразу после окончания репликации отправленного с него лога на Сервер1 (это время можно довести до единиц секунд) 2. Восстановление производится из рядом расположенного Сервер1, т.е., очень быстро. 3. Отправленные с Сервер2 логи можно архивировать/чистить сразу после появления их в Сервер1, т.е. нужно обеспечить надежное хранение, в большинстве случаев, жалких единиц мегабайт данных. но 1. Компов в два раза больше :) Для случая падения Сервер1 процедура восстановления даже проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 18:02 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Пользуюсь аргументом стартера: Ну и как проверять качества решения, если конструктивной критики не следует? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2010, 21:10 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
GeniussА сколько серверов принимает участие в схеме, три? Серверов два, на каждом по две базы. Одна открыта, другая нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2010, 04:09 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Для параноиков можно три базы на сервер (на сервера для суперпараноиков) чтобы обеспечить накат изменений как одну супертранзакцию (если она обломилась по любой причине, у нас все равно есть консистентная копия, а с бакапом возится каждый раз хлопотно). Еще лучше если третья база будет отставать от первых двух на один-два наката () Данная схема была разработана для наката логов для Oracle Standard Edition. Насколько это применимо к МySQL решать вам, я МySQL не знаю совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2010, 22:07 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
SERG1257GeniussА сколько серверов принимает участие в схеме, три? Серверов два, на каждом по две базы. Одна открыта, другая нет. Схема в принципе реализуемая, наверное. Из плюсов стоит отметить возможность снятия бэкапов на основном сервере со скрытой СУБД. Впрочем, это можно делать и на втором (slave) сервере. Надо теперь изучить вопрос с накатыванием логов в MySQL. Правда, проблема тут возникнет в случае, если лог накатили на копию (локальную скрытую БД), но не успели передать на slave сервер, т.к. эта операция по сути неатомарная и выполняется не в транзакции. Тогда в случае поднятия старого master сервера придётся попариться с его синхронизацией с новым master сервером. Если же падение произошло после того, как накатили лог на копию и передали на slave сервер, достаточно будет просто скопировать копию на основную базу на старом master сервере и запустить репликацию в обратную сторону. KewВ мануале по мускулю на его официальном сайте описана схема кольцевой репликации. Если 1. Репликация устроена так: Сервер1->Сервер2->Сервер3->Сервер4->(обратно Сервер1) 2. Сервер1, Сервер2 сидят в одном датацентре, Сервер3, Сервер4 -- в другом 3. Изменяются данные только в Сервер2 или паре Сервер2 и Сервер 4 то 1. Восстановление павшего Сервер 2 возможно сразу после окончания репликации отправленного с него лога на Сервер1 (это время можно довести до единиц секунд) 2. Восстановление производится из рядом расположенного Сервер1, т.е., очень быстро. 3. Отправленные с Сервер2 логи можно архивировать/чистить сразу после появления их в Сервер1, т.е. нужно обеспечить надежное хранение, в большинстве случаев, жалких единиц мегабайт данных. но 1. Компов в два раза больше :) Для случая падения Сервер1 процедура восстановления даже проще. Тут вопрос в рациональности такой схемы. Дело в том, что если у нас два сервера в одном ДЦ - это уже залог неплохой стабильности, т.к. сервера в нормальном западном ДЦ падают не так уж и часто, а два сразу - так тем более. Единственный возможный вариант - отваливание всего ДЦ, но опять же - такое тоже крайняя редкость. По теме репликации, в том числе кольцевой, нарыл немного инфы, кому интересно - сюда: http://onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html http://www.scribd.com/doc/2569408/MySQL-Replication-Tutorial http://forums.mysql.com/read.php?26,110341,110341 Между прочим, товарищ предложил интересный вариант. Имеется два сервера в одном ДЦ, между ними гигабитный коннекшн, на каждом установлена СУБД MySQL. Один сервер основной (на нём работает MySQL), другой резервный (на нём MySQL развёрнута, но выключена). ФС обоих серверов построена, скажем, на базе вот этого: http://en.wikipedia.org/wiki/Chiron_FS. То есть у них общая ФС. Обоим доступен некоторый раздел, на котором находятся все базы, т.к. ФС общая. Ну и дальше понятно: на основном идут все операции (чтение / запись), резервный ждёт своего часа. Когда падает основной сервер, мгновенно включается MySQL на резервном и процесс продолжается дальше :) т.е. репликация данных, если так можно выразиться, происходит уже на уровне самой ФС, а не приложения. Внешне выглядит очень заманчиво. Критика приветствуется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 12:29 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
SERG1257Для параноиков можно три базы на сервер (на сервера для суперпараноиков) чтобы обеспечить накат изменений как одну супертранзакцию (если она обломилась по любой причине, у нас все равно есть консистентная копия, а с бакапом возится каждый раз хлопотно). Еще лучше если третья база будет отставать от первых двух на один-два наката () Данная схема была разработана для наката логов для Oracle Standard Edition. Насколько это применимо к МySQL решать вам, я МySQL не знаю совсем. Это совсем уже для параноиков) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 12:31 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Update: по поводу описанной схемы с общей ФС. Описано тут: http://www.scribd.com/doc/2569408/MySQL-Replication-Tutorial (слайд №57). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 13:00 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
GeniussТут вопрос в рациональности такой схемы. Схема предполагает катастрофический выход из строя одного из серверов (его файловой системы), требующий перезаливки установочного образа (развертывания подготовленного дистрибутива) с последующей актуализацией БД. Если риск такого события несущественен, то и огород городить незачем, тут вы правы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 13:15 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
GeniussФС обоих серверов построена, скажем, на базе вот этого: http://en.wikipedia.org/wiki/Chiron_FS. То есть у них общая ФС. Обоим доступен некоторый раздел, на котором находятся все базы, т.к. ФС общая. Ну и дальше понятно: на основном идут все операции (чтение / запись), резервный ждёт своего часа. Когда падает основной сервер, мгновенно включается MySQL на резервном и процесс продолжается дальше :) т.е. репликация данных, если так можно выразиться, происходит уже на уровне самой ФС, а не приложения. Кстати, мы использовали штатный GEOM FreeBSD -- его ggated (в линухе оно называется drbd). Работало без нареканий. Но от разрушения ФС оно не спасет все равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 13:20 |
|
||
|
Разработка switchover схемы для работы с БД
|
|||
|---|---|---|---|
|
#18+
Geniuss Надо теперь изучить вопрос с накатыванием логов в MySQL. Правда, проблема тут возникнет в случае, если лог накатили на копию (локальную скрытую БД), но не успели передать на slave сервер, т.к. эта операция по сути неатомарная и выполняется не в транзакции. Тогда в случае поднятия старого master сервера придётся попариться с его синхронизацией с новым master сервером. Если же падение произошло после того, как накатили лог на копию и передали на slave сервер, достаточно будет просто скопировать копию на основную базу на старом master сервере и запустить репликацию в обратную сторону.Вот как раз для этих случаев третья и нужна. Накатили на локальную копию - ошибок не было Накатили на удаленную копию - ошибок не было Накатили на удаленную основную - ошибок не было Операцию считаем удавшейся. Если получили ошибку (событие маловероятное) - у нас есть третья, пусть и опаздывающая на несколько накатов (или синхронизирующаяся раз в сутки против раз в час) Накатили запоздание - начали разбираться с ошибками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 17:25 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36602783&tid=1542731]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 534ms |

| 0 / 0 |
