Вызывает ли AES_ENCRYPT проблемы с репликацией в Mysql?

У меня есть реплицированная пара мастер-мастер Mysql. (Я держу второй в режиме только для чтения, чтобы избежать конфликтов индексов.)

В моей основной БД я получаю это сообщение в журнале ошибок:

Инструкция небезопасна, так как использует системную функцию, которая может возвращать другое значение на подчиненном устройстве. Оператор: INSERT INTO field_data (fields_id,records_id,enc_data,field_units_type_key) ЗНАЧЕНИЯ ('26','1753149',AES_ENCRYPT('COVID',UNHEX(SHA2('17531491796432333532720#',256))),'NULL')

Зависит ли AES_ENCRYPT или SHA2 от времени? Почему эта вставка на реплицированном сервере не сохраняет точно такие же данные?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это задокументированное поведение для AES_ENCRYPT начиная с MySQL 5.6.17:

Начиная с MySQL 5.6.17, операторы, использующие AES_ENCRYPT() или AES_DECRYPT(), небезопасны для репликации на основе операторов и не могут храниться в кэше запросов.

Это не из-за зависимости от времени, а потому, что поведение зависит от недавно введенной системной переменной block_encryption_mode:

Эта переменная управляет режимом блочного шифрования для блочных алгоритмов, таких как AES. Это влияет на шифрование для AES_ENCRYPT() и AES_DECRYPT().

Если этот параметр отличается на ваших серверах, ваш запрос будет вставлять другие данные. Хотя, если не отличается, то все в порядке. Но поскольку это ваша обязанность, вы получаете предупреждение о том, что репликация (на основе операторов) не может этого обеспечить.

Другие вопросы по теме

Несогласованные результаты при попытке воспроизвести переменные, выбранные LASSO, выполнялись с использованием enet(lambda = 0) с lars(type = "lasso")
Исправление вывода (строго с точки зрения выбранных функций/переменных) n регрессий LASSO для n наборов данных с использованием glmnet
Что такое простая в использовании библиотека, кроме эластичной сети, которая может соответствовать регрессиям LASSO для проверки вывода
Высокодоступный Cloud SQL Postgres: были ли простои при добавлении реплики чтения?
Подписчики и издатели PostgreSQL (сценарий с несколькими мастерами)
Метрика Postgres recovery_min_apply_delay
Есть ли в Memgraph репликация и как она работает?
Можно ли использовать входную дверь Azure в качестве стратегии управления аварийными ситуациями для веб-приложения, размещенного в Azure?
Реплицированный кластер ActiveMQ Artemis HA с 2 узлами... ведущий не распознает подчиненный
Как отслеживать ход репликации для темы Kafka