Два сервера, оба виртуальные:
1. Master. HP Proliant DL560 G8 650GB RAM, 32vCPU. CentOS 7.2.1511 (Core). MySQL community 5.6.29-2.el7. База, примерно 2.3TB. Сетевое подключение - 10Gb/s.
2. Slave. HP Proliant DL560 G8 524Gb RAM, 32vCPU. CentOS 6.6 (Final). MySQL community 5.6.29-2.el6. Сетевое подключение - 10Gb/s
Все диски расположены на SAN-полках (FC 8Gb/s)
Как работает:
1. Клиенты пишут в мастер, а если есть запросы на чтение (преимущественно) - из слейва.
2. В пике, слейв отстаёт почти на 2000 секунд, а то и немногим более.
Какие есть варианты сокращения отставания?
Сегодня получу данные по производительности на пике. Но по ощущениям слейв работает быстрее мастера. Так как одна и та же операция с очень большими таблицами на слейве отрабатывает процентов на 35 быстрее. Процессорный пул загружен не сильно даже в пике (на слейве). Основной показатель по дискам (чтение) быстрее чем на мастере. Думаю, что вот причина может быть в чём:
на мастере запросы выполняются параллельно, а на слейв передаются в виде бин-логов последовательно. Может быть из-за этого? Получается, что для уменьшения отставания слейв должен быть раза в 2 быстрее мастера по всем показателям? :)
Вопрос решили.
1. По совету перлового скрипта по MySQL тюнингу произвели изменения на SLAVE.
2. Отключили двойную проверку записи.
Теперь отставание минимально... Вернее его вообще нет. :)
Эта ссылка рассказывает как уберечься от нагрузки на сетевой интерфейс мастера при репликации на множество слейвов. У нас не те проблемы. Подключение 10Gb/s.
А Вы лог и данные по разным носителям разнесли на мастере? Какой движок базы данных стоит на слейве и не замедляет ли его нагрузка по чтению? В принципе у Вас слэв мощный может на не нем два слейва вместо одного поднять и по дискам разнести данные и логи.
Там внизу список из 4-х пунктов по Вашей теме.
Ну да, они конкурируют между собой за устройство. Я думаю Вам в целом надо для террабайтной базы на хайлоад решение сдвигаться надо. Либо как мимнимум с comunity на entrpise версии переходить.
Если сократить подробности, репликация идет в один поток, что и является узким местом. Даже если слейв в 10 раз быстрее, это все равно упрется в 1 поток на мастере.
Решить вопрос, полагаю, можно пересмотром архитектуры приложения, не базы. Может быть придумать схему, когда пишущие клиенты будут сразу в несколько хранилищ писать параллельно.