-
Notifications
You must be signed in to change notification settings - Fork 718
Local Clone Flow
In local clone, client and donor are the same instance on a single machine. It clones the current instance data to a specified file system path.
Single-threaded local clone is the simplest case. The picture is simplified by not considering InnoDB clone stages.

Client, donor, and plugin are all a single thread calling different functions. Each step is iterated over all the storage engines.
- Call
clone_begin(HA_CLONE_MODE_START). The storage engine creates the clone data snapshot and assigns a locator to it which is then passed to all the further calls. Thetask_idis set to0, which is also passed to all the further calls. - Call
clone_apply_begin(HA_CLONE_MODE_START). The storage engine creates the clone target directories. - Call
clone_copywithfile_cbkcallback.- In a loop, storage engine figures out what next data chunk to send until there are no more left. In the case of file data (as opposed to in-memory buffer data) that is
(file, offset, count). Theoffsetis maintained implicitly by the file descriptor position. - The storage engine calls
file_cbkwithfd&count. -
file_cbkinside the clone plugin callsclone_applywithapply_file_cbk.- The storage engine figures out where to put the received file data and prepares a
Ha_clone_fileinstance (a wrapper around a fd opened for write) - The storage engine calls
apply_file_cbkwith theHa_clone_fileinstance.-
apply_file_cbkarranges for data to be copied from donor fd to client fd, perhaps also by using zero-copy optimisations.
-
- The storage engine figures out where to put the received file data and prepares a
- In a loop, storage engine figures out what next data chunk to send until there are no more left. In the case of file data (as opposed to in-memory buffer data) that is
- Call
clone_end - Call
clone_apply_end
To achieve clone throughput target, the plugin may decide to spawn (and destruct) new threads between begin and end calls. They will execute the same step sequence with HA_CLONE_MODE_ADD_TASK instead of HA_CLONE_MODE_START for the begin-calling step. The task IDs tell the threads apart.

Here, each thread also goes through all three columns (plugin, donor, & client), but more than one thread goes through them.
Documentation license here.
Installation
MyRocks
- Overview
- Transaction
- Backup
- Performance Tuning
- Monitoring
- Migration
- Internals
- Vector Database
DocStore
- Document column type
- Document Path: a new way to query JSON data
- Built-in Functions for JSON documents
MySQL/InnoDB Enhancements