Есть много способов сделать одитинг.Хотя я не знаком с обменом ключами в отношении аудита баз данных, мне известны следующие методы:
Аудит корпоративного MySQL
https://www.mysql.com/products/enterprise/audit.htmlимеет официальную документацию.Есть блог, в котором описывается корпоративный аудит с некоторыми примерами, которые могут вам помочь.https://scriptingmysql.wordpress.com/2014/03/14/installing-and-testing-the-mysql-enterprise-audit-plugin/
Таблицы истории
Один из способов, с помощью которых я проверял таблицы, - это создание таблиц истории схожей структуры с базовой таблицей и установка триггеров на месте.записать старые данные в эту таблицу перед записью новых данных в базовую таблицу.Дополнительный столбец даты / времени для хранения даты, когда запись была заархивирована, также помог с запросами.
Например, таблица sale_order
имела таблицу sale_order_history
.
Таблица аудита
Одна таблица аудита с такими столбцами, как «Действие» (т. Е. «Вставить», «Обновить», «Удалить»), «Заархивировано» (дата / время), «Архиватор» (из-за которого эта запись была заархивирована), «Имя таблицы» и «Сгусток / блоб» дляхранить исходные данные в виде JSON или двоичных данных.Это будет одна таблица, в которую будут вливаться архивные данные из нескольких таблиц. В зависимости от объема изменений, эта таблица может стать очень большой.
Поток данных в другую БД
Другая модель, которую я видел, но не сделал сам, - это отправка старых данных в очередь сообщений (например, RabbitMQ).Подписчики в очереди записывают данные в архивную таблицу, которая хранится отдельно от исходной базы данных.Этот метод сохраняет исходный экземпляр базы данных, но творческие запросы должны быть написаны для сравнения данных.Прикладной уровень написал аудиты, которые не понравились администраторам баз данных.