Мы используем Percona MySQL 5.6 на Debian 8 для агрегатора электронной торговли. Для этого существует мастер-сервер, выполняющий весь ETL (обработка продуктов от партнеров) и подчиненный сервер MySQL, используемый внешними веб-серверами. Это отдельная база данных с данными объемом около 600 ГБ.Загрузка нагрузки на большую нагрузку на MySQL slave
Обе машины имеют RAID10 с твердотельными накопителями серии Datacenter. Master MySQL - это двойной Xeon E5 с 128 ГБ оперативной памяти, а slave - это один Xeon E5 с 64 ГБ оперативной памяти. Наша проблема заключается в том, что ETL настолько тяжелый I/O (с тысячами IOPS), что мастер способен обрабатывать нагрузку ввода-вывода, но подчиненный сервер не может справиться с репликацией. Большая часть работы выполняется в ramdisk, и только реальные необходимые данные уже записываются в базу данных.
Ведомое устройство имеет больше чтений, чем пишет, но репликация не может догнать. Какие существуют опции для масштабирования записей репликации (т. Е. Нагрузки ввода-вывода) на ведомом?
Редактировать 2016-11-18: С «вариантами» я не только прошу оптимизировать MySQL, но и для совершенно других методов или программного обеспечения, которые могли бы справиться с этой ситуацией лучше.
https://www.percona.com/blog/2015/08/19/how-much-could-you-benefit-from-mysql-5-6-parallel-replication/ ...? –
@Michael No. Параллельная репликация уже активна. Но, как я уже писал, это единственная база данных, и параллельная репликация не имеет никакого эффекта в этой ситуации. – rabudde
Я подозревал, что это может быть так. Какова ценность '@@ BINLOG_FORMAT' для мастера и' @@ INNODB_FLUSH_LOG_AT_TRX_COMMIT' на реплике, и есть ли у вас какие-либо таблицы без первичного ключа? –