После настройки репликации mysql со схемой master / slave db я заметил, что подчиненный сервер db не доступен только для чтения. Конечно, после этого я настроил его вручную в файле /etc/my.cnf.
Я просто не могу понять: разве это не поведение по умолчанию, что подчиненные устройства всегда работают в режиме только для чтения, или это всегда должно быть настроено вручную?
Нет, это не поведение по умолчанию, и да, если вы хотите, чтобы ведомые устройства были доступны только для чтения, вам нужно сделать это «вручную» (или скриптом).
Причина этого в основном просто в том, что так все началось и с тех пор не менялось. Однако существует множество способов, которыми это желаемое поведение, например, если ваши ведомые устройства имеют некоторые таблицы, которых нет у вашего ведущего (например, сводные таблицы отчетов). Или, если вы хотите запустить ALTER, вы можете сначала запустить его на своем ведомом устройстве, отработать отказ, а затем запустить его на своем главном устройстве, чтобы не повлиять на работающий сайт.
Хотя многие из наших ведомых устройств настроены на read_only, некоторые из них - нет.
В этих случаях это обычно происходит из-за того, что на этих серверах размещаются другие базы данных разработки / блокнота / отчетности. В этих случаях пользователям предоставляются только разрешения SELECT для первичной базы данных, но разрешения SELECT / UPDATE для вторичной базы данных.
Более того, если использовалась репликация с несколькими главными серверами, наличие для подчиненных устройств по умолчанию read_only было бы серьезной проблемой. :)
Я думаю, что режим только для чтения предназначен только для каждого пользователя, а не глобально для ведомого устройства. Поэтому убедитесь, что вы не реплицируете пользователей (база данных mysql), и, если необходимо, создайте пользователей только с опцией предоставления USAGE - таким образом эти пользователи есть только для чтения.
Довольно часто подчиненное устройство не находится в режиме read_only ..
на самом деле, если не ставить сам то никогда не включается ..
Хороший вопрос, зачем вообще его устанавливать ... ???
Вы пытаетесь защитить себя от ошибок? или ошибки сделали мой админ юзеры ??? или приложение?
Учитывая, что МНОГИЕ администраторы в любом случае используют MySQL как root, где здесь защита ??
Вы не можете точно защитить свои данные, как вы могли бы представить (так как все в любом случае реплицируется на ведомое устройство)
Вы знаете, что любой пользователь с суперпривилегиями и потоком репликации не соблюдает read_only ??
Сильный структурированный подход к пользователям и привилегиям - правильный способ решения проблем репликации, а не конфигурация read_only на ведомом устройстве.
По моему честному мнению, это на самом деле не очень защищает ... или полезно для чего-либо, кроме остановки нескольких пользователей, не пишущих ... (что в производственных системах - никогда не должно происходить в любом случае)
Например, в Mysql-Multi-Master (read_only устанавливается скриптами) Теоретически это только для того, чтобы просто решить, какой сервер является «Истинным мастером» в конфигурации мастер-мастер.
В общем .. Забудьте о read_only (это действительно ненужно и, вероятно, не защитит вас от того, что вы думаете)