Действительно ли возможно сделать N-ведущее-устройство => репликация с 1 ведомым устройством с MySQL?

Это - то, как Вы сделали бы это с ре:

import re
p = re.compile('^hello, re.I)
p.match('Hello')
p.match('hello')
p.match('HELLO')
6
задан Amadeus45 16 October 2009 в 07:19
поделиться

4 ответа

Репликация с несколькими ведущими (ведомое устройство с более чем одним ведущим устройством) не поддерживается MySQL (кроме MySQL Cluster). Вы можете выполнить репликацию мастер-мастер циклической (кольцевой) репликации (описанной здесь или здесь ).

В High performance MySQL 2nd edition авторы описывают способ эмуляции репликации с несколькими мастерами с использованием умной комбинации репликации мастер-мастер и механизма хранения Blackhole (Глава 8 Репликация > Топологии репликации> Решения для пользовательской репликации> Эмуляция многомастерной репликации стр. 373 - 375 ).

Они показывают две возможные топологии:

Использование двух совместных мастеров (позволяющих переключать мастер подчиненного устройства от главного устройства 1 к главного устройства 2 )

  • главного устройства 1: хосты DB1 и реплицирует DB2 с Master 2 ; механизм хранения для всех таблиц в DB2 изменен на Blackhole , так что данные не сохраняются эффективно на Master 1 .
  • Master 2: ] размещает DB2 и реплицирует DB1 с Master 1 ; механизм хранения для всех таблиц в DB1 изменен на Blackhole , поэтому данные не будут эффективно храниться на Master 2
  • Slave 1: реплицируется ] DB1 и DB2 от Мастера 1 или Мастера 2 (с возможностью переключения мастеров); в результате Slave 1 реплицирует обе базы данных, которые фактически размещены на двух разных мастерах.

Использование главной цепи

  • Master 1: только хосты DB1
  • Мастер 2: хосты DB2 и реплицирует DB1 с Мастер 1 ; механизм хранения для всех таблиц в DB1 изменен на Blackhole , поэтому данные не будут эффективно храниться на Master 2
  • Slave 1: реплицируется ] DB1 и DB2 из Master 2 ; в результате Slave 1 реплицирует обе базы данных, которые фактически размещены на двух разных мастерах.

Обратите внимание, что эта настройка позволяет отправлять обновления только с DB1 через Master 1 и обновления с DB2 на Master 2 . Вы не можете отправлять обновления ни в одну из таблиц произвольным мастерам.

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

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

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

10
ответ дан 10 December 2019 в 00:41
поделиться

Я мало знаю о MySQL, но разве у вас нет возможности установить конфигурацию репликации «только загрузка», в которой роль мастера / издателя заключается только в сборе обновлений сделано на уровне ведомого / подписчика.

0
ответ дан 10 December 2019 в 00:41
поделиться

Насколько мне известно, никуда не годится.

Однако, если здесь требуется просто наличие одной резервной машины на основе репликации, вы можете легко запустить три сервера MySQL (на разные адреса и / или порты) - мы делаем это здесь с двумя кольцами репликации, каждое из которых включает в себя наш внутренний промежуточный сервер в качестве узла.

Оригинальная идея, если вы действительно хотите, чтобы все данные помещались на один сервер, а схемы таблиц были либо фиксированными, либо в значительной степени статичными и находились под вашим контролем: настройте один сервер с тремя включенными базами данных и свяжите все таблицы, используя механизм объединения. Теоретически (большое предостережение: я никогда не пробовал!), Вы можете затем реплицировать эти объединенные таблицы на второй сервер (опять же, возможно, на той же машине), давая вам настоящие живые копии данных на одном MySQL пример. Вы даже можете попробовать повторить репликацию еще раз, но это, возможно, безумие :)

Теоретически (большое предостережение: я никогда не пробовал!), Вы можете затем реплицировать эти объединенные таблицы на второй сервер (опять же, возможно, на той же машине), давая вам настоящие живые копии данных на одном MySQL пример. Вы даже можете попробовать повторить репликацию еще раз, но это, возможно, безумие :)

Теоретически (большое предостережение: я никогда не пробовал!), Вы можете затем реплицировать эти объединенные таблицы на второй сервер (опять же, возможно, на том же компьютере), давая вам настоящие живые копии данных на одном MySQL пример. Вы даже можете попробовать повторить репликацию еще раз, но это, возможно, безумие :)

0
ответ дан 10 December 2019 в 00:41
поделиться

Might be worth a look at maatkit's table sync -- it's not "real" replication but it might be good enough.

0
ответ дан 10 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: