Create and Load MySQL Dumps
Supported since codebeamer release 21.04 (DOROTHY).
There are two recommended ways to dump database, using:
Only these methods are supported to create database dumps. Creating archives by zip or tar files directly from the MySQL databases are not working.
Remember to replace <placeholders> in the examples with appropriate values.
Create Dump
Mysqldump
To use mysqldump, execute the following command:
mysqldump --user <codebeamer_database_user> -p --routines <codebeamer_database_name> > codebeamer_dump.sql
To create a dump, use the cbroot codebeamer database user instead of the MySQL root user.
If the MySQL server runs on a different machine, the mysqldump can be configured with host and port values. For example:
mysqldump --host <mysql_server_host> --port <mysql_server_port> --user <codebeamer_database_user> -p --routines <codebeamer_database_name> codebeamer > codebeamer_dump.sql
Both mysqldump commands above produce a codebeamer_dump.sql file which can be compressed with zip, tar or tar.gz.
For more details of the mysqldump command, click here.
When creating a dump, Windows Server users should use Command Line instead of PowerShell. PowerShell's utf-16 encoding can cause problems. When importing the dump, utf-8 encoding is needed.
Mydumper
The following alternative MySQL backup method can be used to create database dumps in a multi-threaded and more sophisticated way. This approach relies on mydumper, an open source tool that has significant benefits over the standard MySQL dump command.
Use mydumper v14 or later versions.
For more information on mydumper, see https://github.com/maxbube/mydumper/blob/master/README.md
Case study: https://medium.com/tensult/mydumper-myloader-and-my-experience-of-migrating-to-aws-rds-ff74fc9c1add
Related MySQL documentation: https://dev.mysql.com/doc/refman/5.7/en/stored-programs-logging.html
Installation
Prebuild packages can be used (recommended) from the official mydumper repository, or a dockerized version (or compile from source). For more details, see https://github.com/maxbube/mydumper/releases.
Creating Database Dumps Using mydumper
To create database dumps with mydumper, run the following command:
mydumper --host=localhost \
--user=<username> \
--password=<password> \
--database=<codebeamer_database_name> \
--outputdir=/var/tmp/mydump \
--triggers \
--events \
--routines \
--threads=4 \
--trx-consistency-only \
--less-locking \
--chunk-filesize=1000 \
--use-savepoints \
--verbose=3
The result is exported in the /var/tmp/mydump directory. The result can be compressed with zip, tar or tar.gz.
Import Dump
There are two supported ways to import database dumps:
- Mysql
- Myloader
Mysql
Using mysql:
mysql --user <codebeamer_database_user> -p <codebeamer_database_name> < <path_to_codebeamer_dump_sql>
If the MySQL server runs on a different machine, the command can be configured with host and port values.
mysql --host <mysql_server_host> --port <mysql_server_port> --user <codebeamer_database_user> -p <codebeamer_database_name> < <path_to_codebeamer_dump_sql>
Myloader
The myloader is the pair of the mydumper. To import database dumps with myloader, run the following command:
myloader --host=<mysql_server_host> \
--user=<codebeamer_database_user> \
--password=<password>\
--database=<codebeamer_database_name> \
--directory=/var/tmp/mydump\
--compress-protocol \
--overwrite-tables \
--verbose=3 \
--threads=8 > <path_to_import_log> 2>&1
Check the link in the mydumper section for more information.
Run the following command against MySQL server:
mysqlcheck --analyze --optimize --all-databases
In the output users must see 'ok' messages for all tables, except mysql.general_logs and mysql.slow_logs.
Obfuscate Sensitive Data
THE FOLLOWING PROCESS MODIFIES THE DATA IN THE DATABASE, AND IT IS NOT POSSIBLE TO REVERT MODIFICATIONS. DO NOT USE IT ON PRODUCTION ENVIRONMENT!
- Create a copy of the codebeamer system to be obfuscated, if necessary.
- Stop the codebeamer test instance.
- Run the following script against the test database obfuscate_data_mysql.sql. The following command can be used:
mysql --host=<host> --user=<user> --password=<passsword> --database=<your_obfuscated_db> < ./obfuscate_data_mysql.sql
- Dump the obfuscated database as described above.
Check the Obfuscated Database
- After the script execution, it is not possible to login to codebeamer because all user credentials (usernames and passwords) are removed.
- Use the following mysql command in order to set all user passwords to 007:
UPDATE users SET registrydate = null, passwd = lower(sha2(concat('007', id, '700101010000'), 512));
- Delete the directories under /repository/docs.
- Start codebeamer.
- Login to codebeamer with user-<user-id>/007. For example: user-1/007