mdbx-tools: добавление опций -d и -p для mdbx_copy.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2024-08-02 22:49:23 +03:00
parent 9eef3c3541
commit 69f85af242
2 changed files with 28 additions and 1 deletions

View File

@ -14,6 +14,10 @@ mdbx_copy \- MDBX environment copy tool
[\c [\c
.BR \-c ] .BR \-c ]
[\c [\c
.BR \-d ]
[\c
.BR \-p ]
[\c
.BR \-n ] .BR \-n ]
.B src_path .B src_path
[\c [\c
@ -45,6 +49,22 @@ or unused pages will be omitted from the copy. This option will
slow down the backup process as it is more CPU-intensive. slow down the backup process as it is more CPU-intensive.
Currently it fails if the environment has suffered a page leak. Currently it fails if the environment has suffered a page leak.
.TP .TP
.BR \-d
Alters geometry to enforce the copy to be a dynamic size DB,
which could be growth and shrink by reasonable steps on the fly.
.TP
.BR \-p
Use read transaction parking/ousting during copying MVCC-snapshot.
This allows the writing transaction to oust the read
transaction used to copy the database if copying takes so long
that it will interfere with the recycling old MVCC snapshots
and may lead to an overflow of the database.
However, if the reading transaction is ousted the copy will
be aborted until successful completion. Thus, this option
allows copy the database without interfering with write
transactions and a threat of database overflow, but at the cost
that copying will be aborted to prevent such conditions.
.TP
.BR \-u .BR \-u
Warms up the DB before copying via notifying OS kernel of subsequent access to the database pages. Warms up the DB before copying via notifying OS kernel of subsequent access to the database pages.
.TP .TP

View File

@ -39,10 +39,13 @@ static void signal_handler(int sig) {
static void usage(const char *prog) { static void usage(const char *prog) {
fprintf( fprintf(
stderr, stderr,
"usage: %s [-V] [-q] [-c] [-u|U] src_path [dest_path]\n" "usage: %s [-V] [-q] [-c] [-d] [-p] [-u|U] src_path [dest_path]\n"
" -V\t\tprint version and exit\n" " -V\t\tprint version and exit\n"
" -q\t\tbe quiet\n" " -q\t\tbe quiet\n"
" -c\t\tenable compactification (skip unused pages)\n" " -c\t\tenable compactification (skip unused pages)\n"
" -d\t\tenforce copy to be a dynamic size DB\n"
" -p\t\tusing transaction parking/ousting during copying MVCC-snapshot\n"
" \t\tto avoid stopping recycling and overflowing the DB\n"
" -u\t\twarmup database before copying\n" " -u\t\twarmup database before copying\n"
" -U\t\twarmup and try lock database pages in memory before copying\n" " -U\t\twarmup and try lock database pages in memory before copying\n"
" src_path\tsource database\n" " src_path\tsource database\n"
@ -66,6 +69,10 @@ int main(int argc, char *argv[]) {
flags |= MDBX_NOSUBDIR; flags |= MDBX_NOSUBDIR;
else if (argv[1][1] == 'c' && argv[1][2] == '\0') else if (argv[1][1] == 'c' && argv[1][2] == '\0')
cpflags |= MDBX_CP_COMPACT; cpflags |= MDBX_CP_COMPACT;
else if (argv[1][1] == 'd' && argv[1][2] == '\0')
cpflags |= MDBX_CP_FORCE_DYNAMIC_SIZE;
else if (argv[1][1] == 'p' && argv[1][2] == '\0')
cpflags |= MDBX_CP_THROTTLE_MVCC;
else if (argv[1][1] == 'q' && argv[1][2] == '\0') else if (argv[1][1] == 'q' && argv[1][2] == '\0')
quiet = true; quiet = true;
else if (argv[1][1] == 'u' && argv[1][2] == '\0') else if (argv[1][1] == 'u' && argv[1][2] == '\0')