Репликация MySQL - одна против нескольких баз данных, много баз данных или много таблиц - PullRequest
0 голосов
/ 29 января 2019

У меня есть некоторые проблемы с репликацией на Mysql 5.6.27.

Лучше разделить все таблицы между несколькими базами данных или лучше использовать одну базу данных с большим количеством таблиц внутри (с точки зрения репликации) илиэто не имеет значения?

Например, поможет ли я, если я разделю свои таблицы (+ - 100 таблиц, некоторые из них + - 50 млн записей), например, на 5 баз данных, или это не имеет значения?

также у моего мастера есть несколько ядер, и каждое из них интенсивно используется (+ - 80% ресурсов используется на каждом ядре), но на ведомом устройстве установлено аналогичное оборудование, но используется только 1 ядро ​​(+ -80%),другие используются только в 10%.

Большое спасибо за любые советы С уважением, S

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Что касается вашего комментария процессора, это на самом деле нормально (в зависимости от типа репликации, который вы настроили).Обычно реплицируется не тот «запрос», который вы используете, а только изменения.Например, на главном сервере, который вы запускаете:

update users set city = 'New York' limit 100

Мастер выполняет поиск 100 строк, затем выполняет обновление ... для этого требуется процессор.Мастер (действительно упрощенно) посылает Рабу:

Change Row ID: 123 city = 'New York'
Change Row ID: 124 city = 'New York'
Change Row ID: 125 city = 'New York'
и т. Д. И т. Д. ...

Ведомый использует значительно меньше ЦП, так как он не «находит» строки, которые нужно обновить, а только обновляет строки, которые Мастер указал ключом.

0 голосов
/ 29 января 2019

В большинстве случаев это не имеет значения.

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

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

Вы можете выбрать для хранения таблиц в отдельных базах данных длянекоторые другие причины:

  • Упрощение резервного копирования и восстановления всех таблиц в каждой базе данных
  • Упрощение назначения привилегий для всех таблиц в каждой базе данных
  • Разрешить использование одного и того же имени таблицы в нескольких базах данных

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

...