какие есть способы замаскировать mysqldump? - PullRequest
2 голосов
/ 21 декабря 2010

Кто-нибудь знает эффективность в маскировке (анонимизации) некоторых таблиц в mysqldump? Я уже закончил анализатор, но, к сожалению, он не работает так хорошо на больших дампах (скажем, дамп 1 ГБ ++), потому что это действительно увеличивает время дампов из-за синтаксического анализа.

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

Я использую ruby ​​и хотел бы использовать его, если это возможно.

Я также изучил идею экспорта дампа, его дампирования, обновления (маскирования) с помощью внутреннего кода ruby ​​и последующего экспорта дампа снова. Хотя я не пробовал, как долго это займет.

Текущий рабочий процесс для этого будет: получить дамп с сервера, распаковать, затем дамп в mysql

новый будет получить дамп с сервера, распаковать, замаскировать конфиденциальные данные и дамп в mysql

текущий рабочий процесс занял бы максимум 2 часа для дампа 1-2 ГБ ++, но, к сожалению, я уже потратил 4 часа на новый, но он все еще не закончен в части синтаксического анализа / маскирования.

Мне также посоветовали импровизировать код, убрав переменные и вещи, которые занимают больше памяти, поскольку говорят, что ruby ​​gc не имеет отношения 1: 1. Я считаю, что это оптимизировано для REE (ruby Enterprise Edition), но сейчас я использую REE и сейчас.

Кто-нибудь сделал это и, возможно, поделился своими мыслями? Спасибо.

Ответы [ 2 ]

6 голосов
/ 18 октября 2012

Спустя годы, но может быть полезно для будущих поисков (как у меня). Что вы можете сделать, если ваша структура не меняется постоянно, - это использовать функцию custom where в mysqldump для внедрения SQL.

Например:

mysqldump -options -w "0=1 union select field1, 'constant',
anonymize(field3) from table" database table

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

4 голосов
/ 21 декабря 2010

Вы можете указать таблицы, которые вы не хотите выводить: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_ignore-table

...