Как удалить одну запись в MySql - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно окончательно удалить отдельные записи из базы данных MySql (Mssql тоже будет интересен). Под чисткой я имею в виду безвозвратно отправить его в забвение.

Мне это нужно либо для соответствия EU-GDPR, а также для клиента, который хочет убедиться, что данные удаляются из MySQL навсегда.

Как я понял

удалить из таблицы, где id = 1

удалит данные из табличного пространства и из индексов, но не из журнала транзакций. Для достижения этого нужно выполнить сжатие. Но даже чем запись все равно будет существующим двоичным файлом на диске.

Что мне нужно для того, чтобы действительно и по-настоящему уничтожить эту запись базы данных, чтобы даже Хакер-Иисус не смог ее восстановить.

Я уже задумался над этим, и первая идея состояла в том, чтобы не удалять запись, а перезаписывать данные в столбцах случайными данными. Насколько я понимаю, документация Mysql переписывает физическую память старых данных. Таким образом, если бы существовал столбец secret_column с данными секретная информация , я бы перезаписал это: «XXXXXXXXXXX» уменьшит базу данных, и старое значение столбца должно быть удалено. Другим более безопасным вариантом будет синхронное шифрование secret_column и сохранение ключа в другом столбце cypherkey . Затем, когда я хочу удалить запись, я дешифрую столбец, создаю временный ключ в памяти, шифрую данные временным ключом и записываю их обратно в базу данных. Это должно уничтожить информацию навсегда - но это невозможно использовать с индексированными столбцами в отношении производительности.

Мне хорошо известен тот факт, что любая резервная копия базы данных будет по-прежнему содержать очищенные данные. Это еще одно чудо, которое нужно решить.

Буду признателен за любые идеи или (лучшие) решения этого вопроса. Большое спасибо.

...