Мне нужно окончательно удалить отдельные записи из базы данных MySql (Mssql тоже будет интересен). Под чисткой я имею в виду безвозвратно отправить его в забвение.
Мне это нужно либо для соответствия EU-GDPR, а также для клиента, который хочет убедиться, что данные удаляются из MySQL навсегда.
Как я понял
удалить из таблицы, где id = 1
удалит данные из табличного пространства и из индексов, но не из журнала транзакций. Для достижения этого нужно выполнить сжатие. Но даже чем запись все равно будет существующим двоичным файлом на диске.
Что мне нужно для того, чтобы действительно и по-настоящему уничтожить эту запись базы данных, чтобы даже Хакер-Иисус не смог ее восстановить.
Я уже задумался над этим, и первая идея состояла в том, чтобы не удалять запись, а перезаписывать данные в столбцах случайными данными. Насколько я понимаю, документация Mysql переписывает физическую память старых данных. Таким образом, если бы существовал столбец secret_column с данными секретная информация , я бы перезаписал это: «XXXXXXXXXXX» уменьшит базу данных, и старое значение столбца должно быть удалено. Другим более безопасным вариантом будет синхронное шифрование secret_column и сохранение ключа в другом столбце cypherkey . Затем, когда я хочу удалить запись, я дешифрую столбец, создаю временный ключ в памяти, шифрую данные временным ключом и записываю их обратно в базу данных. Это должно уничтожить информацию навсегда - но это невозможно использовать с индексированными столбцами в отношении производительности.
Мне хорошо известен тот факт, что любая резервная копия базы данных будет по-прежнему содержать очищенные данные. Это еще одно чудо, которое нужно решить.
Буду признателен за любые идеи или (лучшие) решения этого вопроса. Большое спасибо.