{"id":38603983,"url":"https://github.com/mysql-time-machine/replicator","last_synced_at":"2026-01-17T08:36:15.575Z","repository":{"id":11622202,"uuid":"70146477","full_name":"mysql-time-machine/replicator","owner":"mysql-time-machine","description":"MySQL Replicator. Replicates MySQL tables to Kafka and HBase, keeping the data changes history in HBase.","archived":false,"fork":false,"pushed_at":"2023-12-16T17:22:47.000Z","size":36277,"stargazers_count":41,"open_issues_count":21,"forks_count":22,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-06-06T11:12:25.440Z","etag":null,"topics":["binlog","cdc","data-history","hbase","kafka","mysql"],"latest_commit_sha":null,"homepage":"https://mysql-time-machine.github.io/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mysql-time-machine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-06T11:09:11.000Z","updated_at":"2025-01-03T21:45:35.000Z","dependencies_parsed_at":"2023-01-13T21:00:49.631Z","dependency_job_id":null,"html_url":"https://github.com/mysql-time-machine/replicator","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/mysql-time-machine/replicator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysql-time-machine%2Freplicator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysql-time-machine%2Freplicator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysql-time-machine%2Freplicator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysql-time-machine%2Freplicator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mysql-time-machine","download_url":"https://codeload.github.com/mysql-time-machine/replicator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mysql-time-machine%2Freplicator/sbom","scorecard":{"id":671307,"data":{"date":"2025-08-11","repo":{"name":"github.com/mysql-time-machine/replicator","commit":"45e795e7ff08643340ee5579cdcca1f30e9c4d4c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 2/17 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":10,"reason":"SAST tool detected","details":["Info: SAST configuration detected: Sonar","Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'release-0.14.5'","Warn: branch protection not enabled for branch 'release-0.14.4_04'","Warn: branch protection not enabled for branch 'release-0.14.4_03'","Warn: branch protection not enabled for branch 'release-0.14.4_02'","Warn: branch protection not enabled for branch 'release-0.14.4_01'","Warn: branch protection not enabled for branch 'release-0.14.3'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-8489-44mv-ggj8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T20:09:46.793Z","repository_id":11622202,"created_at":"2025-08-21T20:09:46.793Z","updated_at":"2025-08-21T20:09:46.793Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binlog","cdc","data-history","hbase","kafka","mysql"],"created_at":"2026-01-17T08:36:15.385Z","updated_at":"2026-01-17T08:36:15.554Z","avatar_url":"https://github.com/mysql-time-machine.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![][Build Status img]][Build Status]\n[![][Coverage Status img]][Coverage Status]\n[![][Known Vulnerabilities img]][Known Vulnerabilities]\n[![][license img]][license]\n\n## MySQL Replicator\nReplicates data changes from MySQL binlog to HBase or Kafka. In case of HBase, preserves the previous data versions. HBase storage is intended for auditing and analysis of historical data. In addition, special daily-changes tables can be maintained in HBase, which are convenient for fast and cheap imports from HBase to Hive. Replication to Kafka is intended for easy real-time access to a stream of data changes.\n\n## Intro\nThis readme file provides basic introduction on how to get started. For more details, refer to official documentation at [mysql-time-machine](https://mysql-time-machine.github.io/).\n\n### Building required Docker images\n1. Run `mvn clean package` from the root of the `replicator` repository to build the MySQL Replicator distribution that will be used later;\n2. Copy the distribution file to the `images/replicator_testing/input/replicator/` directory inside the `docker` repository;\n3. Run `container_build.sh` script from the `images/replicator_testing/` directory inside the `docker` repository;\n4. Run `docker images` to verify that `replicator-testing` image has been built successfully;\n\n### Getting Started with MySQL Replicator\nReplicator assumes that there is a pre-installed environment in which it can run. This environment consists of:\n\n - MySQL Instance\n - Zookeeper Instance\n - Graphite Instance (or none in case of console metrics reporter)\n - Target Datastore Instance (Kafka, HBase, or none in case of STDOUT)\n\nEasiest way to test drive the replicator is to use docker to locally create this needed environment. In addition to docker you will need [docker-compose](https://docs.docker.com/compose/) installed locally.\n\n````\ngit clone https://github.com/mysql-time-machine/docker.git\ncd docker/docker-compose/replicator_testing\n````\n\nStart all containers (mysql, kafka, graphite, replicator, zookeeper)\n\n```\n  ./run_all\n```\n\nNow, in another terminal, you can connect to the replicator container\n\n````\n ./attach_to_replicator\n cd /replicator\n````\n\nThis folder contains:\n1. different utility scripts to setup and run the replicator\n2. replicator configuration file\n3. log configuration file\n\nThere are the steps to initialize the environemnt and start the replication with latest 0.16 version:\n\n````\n ./00_setup   # will unznip the jars from distribution\n ./01_seed    # will initialize mysql with random data\n ./02_run_016 # will start the replication\n````\n\nRandom data in the seed step has been inserted in pre-created database 'test' in precreated table 'sometable'. The provided mysql instance is configured to use RBR and binlogs are active.\n\n````\n  mysql --host=mysql --user=root --pass=mysqlPass\n\n  mysql\u003e use test;\n  mysql\u003e show tables;\n  +----------------+\n  | Tables_in_test |\n  +----------------+\n  | sometable      |\n  +----------------+\n  1 row in set (0.00 sec)\n````\n\nAs the replication is running, you can observe the replication statistics at graphite dashboard: http://localhost/dashboard/\n\n### PACKAGING\n\nPackaging the project is really simple with Maven\n\n```\nmvn clean package\n```\n\nWill generate a tar.gz distribution as output. The distribution will contain all dependencies.\n\n\n### DEPLOY\n\nTo deploy a new version to Maven central it's enough executing\n\n```\nmvn clean deploy -P release\n```\n\nIf previous step didn't work is probably because you don't have a SonaType account or a published GPG key. Follow these steps:\n\n1. [Create a Sonatype Account](https://issues.sonatype.org/secure/Signup!default.jspa)\n2. [Create a PGP Signature](http://central.sonatype.org/pages/working-with-pgp-signatures.html)\n\nNow you should be in conditions to deploy the project.\n\n### AUTHOR\nBosko Devetak \u003cbosko.devetak@gmail.com\u003e\n\n### CONTRIBUTORS\n\nAshwin Konale\u003ca href=\"https://github.com/akonale\"\u003e[akonale]\u003c/a\u003e\n\nCarlos Tasada \u003ca href=\"https://github.com/ctasada\"\u003e[ctasada]\u003c/a\u003e\n\nDmitrii Tcyganov \u003ca href=\"https://github.com/dtcyganov\"\u003e[dtcyganov]\u003c/a\u003e\n\nEvgeny Dmitriev \u003ca href=\"https://github.com/dmitrieveu\"\u003e[dmitrieveu]\u003c/a\u003e\n\nFabricio Damasceno \u003ca href=\"https://github.com/forlando\"\u003e[forlando]\u003c/a\u003e\n\nGaurav Kohli \u003ca href=\"https://github.com/gauravkohli\"\u003e[gauravkohli]\u003c/a\u003e\n\nGreg Franklin \u003ca href=\"https://github.com/gregf1\"\u003e[gregf1]\u003c/a\u003e\n\nIslam Hassan \u003ca href=\"https://github.com/ishassan\"\u003e[ishassan]\u003c/a\u003e\n\nMikhail Dutikov \u003ca href=\"https://github.com/mikhaildutikov\"\u003e[mikhaildutikov]\u003c/a\u003e\n\nMuhammad Abbady \u003ca href=\"https://github.com/muhammad-abbady\"\u003e[muhammad-abbady]\u003c/a\u003e\n\nPhilippe Bruhat (BooK) \u003ca href=\"https://github.com/book\"\u003e[book]\u003c/a\u003e\n\nPavel Salimov \u003ca href=\"https://github.com/chcat\"\u003e[chcat]\u003c/a\u003e\n\nPedro Silva \u003ca href=\"https://github.com/pedros\"\u003e[pedros]\u003c/a\u003e\n\nRaynald Chung \u003ca href=\"https://github.com/raynald\"\u003e[raynald]\u003c/a\u003e\n\nRares Mirica \u003ca href=\"https://github.com/mrares\"\u003e[mrares]\u003c/a\u003e\n\nSteve Aurigema \u003ca href=\"https://github.com/steveauri\"\u003e[steveauri]\u003c/a\u003e\n\n### ACKNOWLEDGMENT\nReplicator was originally developed for Booking.com. With approval from Booking.com, the code and specification were generalized and published as Open Source on github, for which the author would like to express his gratitude.\n\n### COPYRIGHT AND LICENSE\nCopyright (C) 2015, 2016, 2017, 2018, 2019 by Author and Contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n[Build Status]:https://travis-ci.org/mysql-time-machine/replicator\n[Build Status img]:https://travis-ci.org/mysql-time-machine/replicator.svg?branch=master\n[Coverage Status]:https://codecov.io/gh/mysql-time-machine/replicator\n[Coverage Status img]:https://codecov.io/gh/mysql-time-machine/replicator/branch/master/graph/badge.svg\n[Known Vulnerabilities img]:https://snyk.io/test/github/mysql-time-machine/replicator/badge.svg\n[Known Vulnerabilities]:https://snyk.io/test/github/mysql-time-machine/replicator\n[license]:LICENSE\n[license img]:https://img.shields.io/badge/license-Apache%202-blue.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysql-time-machine%2Freplicator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmysql-time-machine%2Freplicator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmysql-time-machine%2Freplicator/lists"}