docs/design/2021-09-29-merge-dumpling-into-tidb.md
Dumpling is a tool and a Go library for creating SQL dump from a MySQL-compatible database. It is intended to replace mysqldump and mydumper when targeting TiDB.
There are three primary reasons to merge:
DM suffers from dependency problem about TiDB and Dumpling. Concretely, DM depends on TiDB and Dumpling, while Dumpling depends on TiDB too. Every time DM updates Dumpling's version, TiDB's version will be updated along with Dumpling, which is unexpected.
Regression during a release. Dumpling releases along with TiDB even though they are in two repos. This results in conflicts are only exposed when testing failed during a release. For example, TiDB adds a new feature, which may cause a fail in Dumpling, which Dumpling isn't aware of. This issue cannot be found on their own tests, but the integration test of Dumpling and TiDB. This is very troublesome!
Reduce development costs. In TiDB, there is a function export SQL of TiDB similar with Dumpling.
After merged, we will:
export SQL for TiDB with Dumpling.This section refers to https://internals.tidb.io/t/topic/256.
To achieve milestone 1, we should do as follow:
git checkout -b clone-dumpling && git subtree add --prefix=dumpling https://github.com/pingcap/dumpling.git master --squashgit checkout -b merge-dumpling (we will update code in this branch)okJiang:merge-dumpling to okJiang:clone-dumpling for reviewing locally: (link if create)okJiang/merge-dumpling to pingcap:master (link if create)In this stage, we should do lots of maintenance in both repos:
This section refers to https://internals.tidb.io/t/topic/256
If we want to cherry-pick the specific commit <COMMIT_SHA> to Dumpling repo. DO THE FOLLOWING THINGS
We will maintain release 4.0, 5.0, 5.1, 5.2 in Dumpling repo.
After all releases(<= 5.2) end of maintenance, it is time to archive Dumpling repo. But before the truly end, we should do some closing work: