Если мы установим для параметра sync_binlog значение 0, что может задержать синхронизацию двоичного журнала с диском ОС, приведет ли это к задержке во времени, которое требуется ведомым устройствам для репликации этих двоичных журналов? Другими словами, передаются ли двоичные журналы на ведомые устройства до того, как они будут сброшены на диск?
Нет, не должно.
MySQL по-прежнему пишет в binlog, как и раньше, просто не вызывает саму синхронизацию. Это позволяет файловой системе очистить его на диск. MySQL не читает напрямую с диска, он читает из уровня виртуальной файловой системы, который уже имеет данные до того, как будет вызвана синхронизация (если будет вызвана).
Единственный серьезный недостаток, который я могу придумать для установки этого значения на 0, заключается в том, что в случае сбоя или прерывания доступа к базовому хранилищу вы можете потерять данные, которые еще не были сброшены на диск. Взамен у вас будет меньше синхронизаций, что может улучшить производительность базового хранилища.
Установка его в 0 просто позволяет ОС справляться с синхронизацией, как обычно с любым другим приложением. Установка его на 1 обеспечит вам максимальную надежность, но производительность, скорее всего, несколько пострадает.
Я запускаю свои производственные серверы с sync_binlog = 0 и никогда не замечал никаких задержек. Повышение его выше 0 может вызвать измеримую задержку, если ваше базовое хранилище действительно медленное.
В справочная страница для fdatasync (2) может помочь вам лучше понять.
Я знаю, что ответить уже поздно, но для справки.
Одна из ссылок, с которой я столкнулся Абдель-Маула (хорошая статья!), в которой показано сравнение пропускной способности, когда sync_log помечен как '0' и '1':
http://www.fromdual.com/galera-cluster-vs-pxc-vs-mariadb-galera-cluster-benchmarking
Кроме того, что можно было увидеть из Документация MySQLMySQL 5.7.7 имеет значение по умолчанию 1, что может повлиять на производительность.