{"id":13528843,"url":"https://github.com/mydumper/mydumper","last_synced_at":"2026-03-02T10:01:22.959Z","repository":{"id":37005215,"uuid":"45695616","full_name":"mydumper/mydumper","owner":"mydumper","description":"Official MyDumper Project","archived":false,"fork":false,"pushed_at":"2026-02-19T20:01:26.000Z","size":7978,"stargazers_count":3029,"open_issues_count":47,"forks_count":496,"subscribers_count":81,"default_branch":"master","last_synced_at":"2026-02-19T22:00:04.142Z","etag":null,"topics":["database","mariadb","multithreading","mysql","percona","replication","tidb"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mydumper.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://www.ringerhq.com/i/mydumper/mydumper"]}},"created_at":"2015-11-06T17:11:15.000Z","updated_at":"2026-02-19T20:01:32.000Z","dependencies_parsed_at":"2023-10-14T15:54:58.941Z","dependency_job_id":"744a662d-3990-44f7-a7ac-6b78c404f78d","html_url":"https://github.com/mydumper/mydumper","commit_stats":{"total_commits":2152,"total_committers":103,"mean_commits":"20.893203883495147","dds":0.2337360594795539,"last_synced_commit":"59fe592dfd1d743cfcf0d530384533a3add53b08"},"previous_names":["maxbube/mydumper"],"tags_count":215,"template":false,"template_full_name":null,"purl":"pkg:github/mydumper/mydumper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mydumper%2Fmydumper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mydumper%2Fmydumper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mydumper%2Fmydumper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mydumper%2Fmydumper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mydumper","download_url":"https://codeload.github.com/mydumper/mydumper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mydumper%2Fmydumper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29998066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T09:59:02.300Z","status":"ssl_error","status_checked_at":"2026-03-02T09:59:02.001Z","response_time":60,"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":["database","mariadb","multithreading","mysql","percona","replication","tidb"],"created_at":"2024-08-01T07:00:25.987Z","updated_at":"2026-03-02T10:01:22.921Z","avatar_url":"https://github.com/mydumper.png","language":"C","funding_links":["https://www.ringerhq.com/i/mydumper/mydumper"],"categories":["C","Backup"],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/mydumper/mydumper/tree/master.svg?style=svg)](https://circleci.com/gh/mydumper/mydumper/tree/master)\n\n # What is MyDumper?\nMyDumper is a MySQL Logical Backup Tool. It has 2 tools:\n* `mydumper` which is responsible to export a consistent backup of MySQL databases\n* `myloader` reads the backup from mydumper, connects to the destination database and imports the backup.\n\nBoth tools use multithreading capabilities.\n\u003cbr\u003eMyDumper is Open Source and maintained by the community, it is not a Percona, MariaDB or MySQL product.\n\n# Why do we need MyDumper?\n* Parallelism (hence, speed) and performance (avoids expensive character set conversion routines, efficient code overall)\n* Easier to manage output (separate files for tables, dump metadata, etc, easy to view/parse data)\n* Consistency - maintains snapshot across all threads, provides accurate master and slave log positions, etc\n* Manageability - supports PCRE for specifying database and tables inclusions and exclusions\n\n# Documentation\n[Official Documentation](https://mydumper.github.io/mydumper/) (work in progress)\n\n## How to install mydumper/myloader?\n\n[This sections has been migrated](https://mydumper.github.io/mydumper/docs/html/installing.html) \n\n## Dependencies for building MyDumper\n\n[This sections has been migrated](https://mydumper.github.io/mydumper/docs/html/compiling.html) \n\n### Build Docker image\nYou can download the [official docker image](https://hub.docker.com/r/mydumper/mydumper) or you can build the Docker image either from local sources or directly from Github sources with [the provided Dockerfile](./docker/Dockerfile).\n```shell\ndocker build --build-arg CMAKE_ARGS='-DWITH_ZSTD=ON' -t mydumper \\\n    https://github.com/mydumper/mydumper.git#master:docker\n```\nKeep in mind that the main purpose the Dockerfile addresses is development and build from source locally. It might not be optimal for distribution purposes, but can also work as a quick build and run solution with the above one-liner, though.\n\n# How to use MyDumper\n\nSee [Usage](https://mydumper.github.io/mydumper/docs/html/mydumper_usage.html)\n\n## How does consistent snapshot work?\n\nThis is all done following best MySQL practices and traditions:\n\n* As a precaution, slow running queries on the server either abort the dump, or get killed\n* Global read lock is acquired (\"FLUSH TABLES WITH READ LOCK\")\n* Various metadata is read (\"SHOW SLAVE STATUS\",\"SHOW MASTER STATUS\")\n* Other threads connect and establish snapshots (\"START TRANSACTION WITH CONSISTENT SNAPSHOT\")\n** On pre-4.1.8 it creates a dummy InnoDB table, and reads from it.\n* Once all worker threads announce the snapshot establishment, master executes \"UNLOCK TABLES\" and starts queueing jobs.\n\nThis for now does not provide consistent snapshots for non-transactional engines - support for that is expected in 0.2 :)\n\n## How to exclude (or include) databases?\n\n[This sections has been migrated](https://mydumper.github.io/mydumper/docs/html/examples.html#regex) \n\n## How to use --exec?\n\nYou can execute external commands with --exec like this:\n\n```bash\n mydumper --exec \"/usr/bin/gzip FILENAME\"\n```\n\n--exec is single threaded, similar implementation than Stream. The exec program must be an absolute path. FILENAME will be replaced by the filename that you want to be processed. You can set FILENAME in any place as an argument.\n\n## Defaults file\n\nThe default file (aka: --defaults-file parameter) is starting to be more important in MyDumper\n- mydumper and myloader sections:\n\n```bash\n[mydumper]\nhost = 127.0.0.1\nuser = root\npassword = p455w0rd\ndatabase = db\nrows = 10000\n\n[myloader]\nhost = 127.0.0.1\nuser = root\npassword = p455w0rd\ndatabase = new_db\noptimize-keys = AFTER_IMPORT_PER_TABLE\n```\n\n- Variables for mydumper and myloader executions:\n\nPrior to v0.14.0-1:\n```bash\n[mydumper_variables]\nwait_timeout = 300\nsql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\n\n[myloader_variables]\nlong_query_time = 300\ninnodb_flush_log_at_trx_commit = 0\n```\nFrom to v0.14.0-1:\n```bash\n[mydumper_session_variables]\nwait_timeout = 300\nsql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION\n\n[mydumper_global_variables]\nsync_binlog = 0\nslow_query_log = OFF\n\n[myloader_session_variables]\nlong_query_time = 300\n\n[myloader_global_variables]\nsync_binlog = 0\ninnodb_flush_log_at_trx_commit = 0\n```\n\n- Per table sections:\n```bash\n[`db`.`table`]\nwhere = column \u003e 20\nlimit = 10000\n\n[`myd_test`.`t`]\ncolumns_on_select=qty,price+20\ncolumns_on_insert=qty,price\n```\n\nIMPORTANT: when using options that don't require an argument like: --no-data or --events, you need to set any value to those variables which will always indicate: TRUE/ON/ENABLE. It is a MISCONCEPTION if you think that adding `--no-data=0` will export data:\n```\n[mydumper]\nno-data=0\n```\nWill NOT export the data as no-data is being specified.\n\n\n# Misc\n\n## Versioning\n\nmydumper is versioned MAJOR.MINOR.PATCH-revision.\n\nEven patch versions indicate a pre-release. [More info](https://github.com/mydumper/mydumper/wiki/Versioning).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmydumper%2Fmydumper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmydumper%2Fmydumper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmydumper%2Fmydumper/lists"}