- PVSM.RU - https://www.pvsm.ru -
Спустя почти месяц после того, как я впервые зафиксировал [1] свой опыт использования PXC, я вынужден констатировать, что переноса первых проектов в кластер пока так и не произошло.
Основных причин этому две:
Справедливости ради отмечу, что некоторые глюки возникают совсем на другом уровне, например в слое балансировки нагрузки или утилите xtrabackup. Но о глюках в другой раз, а в этой заметке я остановлюсь на проблеме из п. 1 и попробую резюмировать главное из того, что я узнал о накладных расходах в Galera репликации и о способах минимизировать потерю производительности, связанную с ними.
Overhead возникает при операциях записи, что вполне предсказуемо для синхронной репликации. Функция wsrep-провайдера Galera заключается в создании специального набора данных (WriteSet), в который на этапе коммита преобразуется пользовательская транзакция, его передаче все группе узлов кластера, и последующим применении синхронно на всех узлах.
Поэтому накладные расходы в PXC составляют следующие операции:
— создание writesets — подготовка, сериализация, кэширование, и т.п.;
— групповая коммуникация — отслеживание статуса нод в группе, передача writesets по сети;
— локальная сертификация — поиск конфликтов в наборах данных, стоящих в очереди на применение;
— применение writeset, успешно прошедших сертификацию;
— контроль за изменением состояния данных, присваивание Global Transaction ID каждой транзакции;
— запись кэша writesets на диск, если он не помещается в памяти;
— и наверняка много другое
Насколько этот оверхед испортит вам жизнь, зависит в том числе и от ваших конкретных условий — например, конфигурации оборудования или скорости сети. Но совершенно очевидно, что если рядом с вашим текущим сервером БД поставить еще один в такой же конфигурации, и активировать на них Galera репликацию, то вы получите падение производительности записи.
Какова же все-таки величина оверхеда, хотя бы приблизительно? Приведу несколько ссылок, где можно посмотреть на результаты тестов, где сраниваются показатели Galera с другими вариантами конфигураций MySQL серверов, а также оценивается влияние конфигурационных параметров на конечный результат.
www.mysqlperformanceblog.com/2011/10/13/benchmarking-galera-replication-overhead/ [2]
www.codership.com/content/scaling-out-oltp-load-amazon-ec2-revisited [3]
openlife.cc/blogs/2011/august/running-sysbench-tests-against-galera-cluster [4]
Изначально я хотел опубликовать результаты своих тестов, но:
а) их сложно было бы воспроизвести;
б) учитывая количество конфигураций, которое дает разные результаты, изобразить это в более удобном и наглядном виде, чем по ссылкам выше, требует неоправданно много времени.
Да и главное наверное все же не цифры, а описать по максимуму те факторы, которые позволяют нивелировать последствия оверхеда.
ИМХО: решили построить отказоустойчивый кластер — не поскупитесь на хорошее железо.
Конечно же в этой области все очень индивидуально, зависит от многих факторов, но все же есть несколько очевидных настроек.
Overhead есть.
Но ведь есть и синхронная репликация и гарантированная целостность данных, а с замедлением записи можно и нужно бороться.
Автор: grobbelaar
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/replication/22479
Ссылки в тексте:
[1] впервые зафиксировал: http://habrahabr.ru/company/FabrikaOnline/blog/158377/
[2] www.mysqlperformanceblog.com/2011/10/13/benchmarking-galera-replication-overhead/: http://www.mysqlperformanceblog.com/2011/10/13/benchmarking-galera-replication-overhead/
[3] www.codership.com/content/scaling-out-oltp-load-amazon-ec2-revisited: http://www.codership.com/content/scaling-out-oltp-load-amazon-ec2-revisited
[4] openlife.cc/blogs/2011/august/running-sysbench-tests-against-galera-cluster: http://openlife.cc/blogs/2011/august/running-sysbench-tests-against-galera-cluster
[5] Источник: http://habrahabr.ru/post/160921/
Нажмите здесь для печати.