есть ли лучший способ гарантировать, что привилегии не будут реплицированы на подчиненные серверы mysql? проблема в том, что в таблице mysql есть обслуживающие пользователи, у которых разные пароли на каждом поле. такие таблицы, как сценарии запуска / завершения работы, используют эти таблицы. когда вы реплицируете с мастера, он меняет пароль и ломает вещи.
каковы лучшие практики, чтобы гарантировать, что фактическая база данных mysql (которая содержит гранты, пользователей, хосты) не сломается из-за репликации?
вы обычно реплицируете привилегии и рабам?
В Вопросы-Ответы объясняет:
Запустите сервер с параметром --replicate-wild-ignore-table = mysql.%.
Вы также можете использовать это как my.cnf
вариант.
Обычно мы копировать GRANT
с. потому что мы часто хотим, чтобы ведомые устройства работали как идентичные копии ведущего устройства, доступные только для чтения. Таким образом, наши приложения могут легко переключаться между серверами БД для операций RO. Вы просто должны учитывать это при разработке других утилит и уделять пристальное внимание тому, что вы GRANT
s разрешают, особенно в отношении имен хостов.
Не использовать replicate-do-db
и replicate-ignore-db
, потому что эти варианты опасны. посмотрите эту статью.
Просто используйте --replicate-wild-ignore-table=mysql.%
вариант.
Я бы рекомендовал вам установить --replicate-wild-ignore-table=mysql.user
- это пропускает только репликацию паролей и глобальных грантов, в то время как гранты уровня таблицы и столбца все еще реплицируются.
Вы также можете использовать SET SQL_LOG_BIN=0
для отключения операторов ведения журнала для текущего сеанса, например. при создании нового пользователя или изменении пароля.
На ведомом у вас есть больше возможностей для фильтрации данных. Существуют параметры replicate-do-db и replicate-ignore-db, а также параметры replicate-do-table, replicate-ignore-table, replicate-wild-do-table и replicate-wild-ignore-table используется для фильтрации содержимого, которое вы не хотите воспроизводить. Я надеюсь, что это помогает.