payu/mysql-dump-anonymizer

MySQL转储匿名化工具。可作为独立程序或库使用。


README

Build Status

进行中

此库处理MySQL转储文件的解析和匿名化,使用数据类型和规则。必须使用以下选项导出MySQL转储文件:

  • --skip-add-drop-table
  • --skip-add-locks
  • --skip-comments
  • --skip-disable-keys
  • --skip-set-charset
  • --compact (以上所有5个选项)
  • --complete-insert
  • --hex-blob
  • --extended-insert (默认开启)

可选,用于提高速度

  • --quick (默认开启,用于加快导出速度)
  • --innodb-optimize-keys (用于加快导入)

可选,用于保持一致性

  • --skip-lock-tables
  • --single-transaction (自动启用上述选项)
  • --lock-for-backup (Percona特有选项)

基本命令如下:

mysqldump --complete-insert --hex-blob --innodb-optimize-keys --single-transaction --lock-for-backup <数据库> 其输出可以直接传递给匿名化工具。

使用--compact选项时,转储文件将不会有源服务器的@@SQL_MODE设置。当处理类似STRICT_TRANS_TABLES / NO_ZERO_IN_DATE的选项时,可能会出现问题。

检查目标服务器的系统变量net_buffer_lengthmax-allowed-packet,确保其值至少与源服务器相同。

或将SQL文件作为输入和输出传递

php bin/mysql-dump-anonymize.php --config=FILENAME <databse-dump.sql >databse-dump-anonymized.sql

Usage: mysqldump [options] <source-db> | php mysql-dump-anonymize.php --config=FILENAME [OPTIONS] | mysql [options] -D <destination-db>

mysql-dump-anonymize.php options:
 --config-type          Default Value: yaml
                        Specifies the type of the config used.

 --line-parser          Default Value: mysqldump
                        Specifies the type of the line parser used.

 --dump-size            When available, specify the length of the data being anonymized.
                        This will be used to show progress data at runtime.

 --show-progress        Default value: 1
                        Set to 0 to not show progress data.

 --salt                 Default value: md5(microtime())
                        Specifies the hashing salt value at runtime.