payu / mysql-dump-anonymizer
Anonymizer for MySQL dumps. Can be used standalone or as a library.
Requires
- php: ^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0
- ext-json: *
- myclabs/php-enum: ^1.7.1
- symfony/yaml: ^5.0
Requires (Dev)
- mnapoli/pretty: ^1.2
- phpunit/phpunit: ^9.6
- qossmic/deptrac-shim: ^0.24
- squizlabs/php_codesniffer: ^3.7
- dev-master
- v0.2.0
- v0.1.1
- dev-add_php8_support
- dev-add_php8_support_with_tests_fixes
- dev-update_dev_libraries
- dev-prepare_publish_as_library
- dev-fallback_feature
- dev-update_readme
- dev-deptrac-upgrade
- dev-duplicate-emails
- dev-blob-serialized
- dev-dockerfile-update
- dev-fix_unserialize_notices
- dev-poor_man_perf_test
- dev-generate_letter_pool
- dev-anon_speed_show
- dev-small_perf_improve_anon_provider_Calls
- dev-improve_dumper
- dev-fix_parser_bug_and_improve_speed
- dev-dockerfile
- dev-anon-script
- dev-add-travis
This package is auto-updated.
Last update: 2024-10-16 14:56:12 UTC
README
Work In Progress
This library handles parsing of a mysql dump file and anonymizing it using data types and rules mysql dump must be exported using:
- --skip-add-drop-table
- --skip-add-locks
- --skip-comments
- --skip-disable-keys
- --skip-set-charset
- --compact (all 5 above)
- --complete-insert
- --hex-blob
- --extended-insert (default on)
Optional for speed:
- --quick (default on, for faster export)
- --innodb-optimize-keys (for faster import)
Optional for consistency
- --skip-lock-tables
- --single-transaction (automatically enables the above one)
- --lock-for-backup (percona specific)
Basically the command will look like:
mysqldump --complete-insert --hex-blob --innodb-optimize-keys --single-transaction --lock-for-backup <database>
and the output of it can be directly passed to anonymizer.
When using --compact dump file will not have @@SQL_MODE setting of the source server. When dealing with options like STRICT_TRANS_TABLES / NO_ZERO_IN_DATE this can be a problem.
Check the system variables net_buffer_length
and max-allowed-packet
on the
destination server to be at least the same amount as on the source server.
Or pass the sql file at input and at output:
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.