Я выполнил репликацию на Percona Server 5.5, следуя этому руководству, и подумал, стоит ли мне добавлять read-only=1
в ведомое устройство, my.cnf
чтобы оно было только для чтения?
Руководство устанавливает репликацию для таблицы mysql так, чтобы пользователи реплицировались, но я в основном использую ведомое устройство для приема mysqldumps, а в аварийной ситуации меняю его на master, поэтому я не верю, что нам нужна (или должна была) быть включена запись на это постоянно?
Ответы:
Когда Раб только для чтения , он не защищен на 100% от мира.
Согласно документации MySQL на
read-only
Таким образом, любой с привилегией SUPER может по желанию читать и писать такому Рабу ...
Убедитесь, что все непривилегированные пользователи не имеют привилегии SUPER.
Если вы хотите отозвать все привилегии SUPER за один раз, запустите это на Master и Slave:
Применительно к подчиненному, это зарезервирует привилегию SUPER для того, чтобы просто
root
и не позволять непривилегированным делать записи, от которых они иначе были бы ограничены.ОБНОВЛЕНИЕ 2015-08-28 17:39 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Я только недавно узнал, что MySQL 5.7 представит super_read_only .
Это остановит пользователей SUPER в их следах, потому что 5,7 Документов говорят
источник
Да, вам лучше запустить подчиненные серверы с доступными режимами R / O. Ранее привилегированные пользователи могли изменить данные такого ведомого в любом случае, но позже они также получили свою «ручку» ограничения R / O.
Почему это важно - лучше потерпеть неудачу с записью, чем с сожалением из-за неправильной записи, которая может эффективно сделать ведомое неиспользуемым из-за простого перепутывания данных или таких ситуаций, как конфликты ключей, которые могут нарушить репликацию (больше не фактическое ведомое устройство снова).
Есть также программное обеспечение, используемое для оркестровки / разделения нагрузки, которое будет учитывать состояние R / O серверов в пулах, которые они настроили для правильной маршрутизации запросов между этими серверами.
Это безопасность. Используй это.
источник
Проблема здесь, включая MySQL 8.0, заключается в том, что MySQL не заставляет вас устанавливать настройки
read_only = ON
при выполненииstart slave
команды. Почему проблема? Поскольку почти все администраторы баз данных MySQL используют своих подчиненных в RO, чтобы предотвратить повреждение данных, всегда существует один dba, который случайно запускает SQL-запрос, изменяющий данные на ведомом устройстве, или приложение, которое не изменяет его conf. Если я хочу писать на ведомых, потому что у него есть несколько схем, и мне нужно делать записи на этой схеме, поэтомуread_only
команда должна быть более умной, и давайте сделаем aread_only for schema
. Это может быть очень полезно на мультимастерных серверах и ведомых, которые делаютReplicate_Ignore_DB
. Итак, на данный момент вы должны сделать контроль вручную и быть очень осторожным.Наслаждаться.
источник