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