The primary purpose of innobackupex mode is to allow scripts and tools to more easily migrate to Mariabackup if they were originally designed to use the innobackupex utility that is included with Percona XtraBackup. It is not recommended to use this mode in new scripts, since it is not guaranteed to be supported forever.
This mode is not very different from the normal mode. The listed differences are:
To prepare a backup, the --apply-log option is used instead of the --prepare option.
To create an incremental backup, the --incremental option is supported.
The --no-timestamp option is supported.
To create a partial backup, the --include option is used instead of the --tables option.
To create a partial backup, the --databases option can still be used, but it's behavior changes slightly.
The --target-dir option is not used to specify the backup directory. The backup directory should instead be specified as a standalone argument.
These differences are not very significant, and having this extra mode is a bit confusing.
Maybe some of the behavioral differences in innobackupex mode should be merged into Mariabackup's normal mode, and then we should remove innobackupex mode?
UPDATE 14 Aug 2023
This task needs to be about:
verifying/ensuring that all innobackupex functionality is available in the normal mode (list to be updated)
serg It's about 1k lines of code which just duplicates the code from another .cc file, has it's own "my option" array (which duplicates mariabackup options with some small changes) with it's own "handle_options" function with it's own "get_one_option" callback. And all of this is only to copy one variables to another ones, like
There is no effort to maintain it at all(I think this is because there is almost no difference between innobackupex and mariabackup options, and because nobody use innobackupex, and we don't have related bug reports). And you are correct, we gain nothing in functionality too by removing it. It's just code clean-up task to get rid of copy-pasted code. And if we really need the compatibility with innobackupex, we can keep it.
Vladislav Lesin
added a comment - serg It's about 1k lines of code which just duplicates the code from another .cc file, has it's own "my option" array (which duplicates mariabackup options with some small changes) with it's own "handle_options" function with it's own "get_one_option" callback. And all of this is only to copy one variables to another ones, like
/*=====================*/
xtrabackup_copy_back = opt_ibx_copy_back;
xtrabackup_move_back = opt_ibx_move_back;
opt_galera_info = opt_ibx_galera_info;
opt_slave_info = opt_ibx_slave_info;
opt_no_lock = opt_ibx_no_lock;
opt_safe_slave_backup = opt_ibx_safe_slave_backup;
opt_rsync = opt_ibx_rsync;
opt_force_non_empty_dirs = opt_ibx_force_non_empty_dirs;
opt_noversioncheck = opt_ibx_noversioncheck;
opt_no_backup_locks = opt_ibx_no_backup_locks;
opt_decompress = opt_ibx_decompress;
There is no effort to maintain it at all(I think this is because there is almost no difference between innobackupex and mariabackup options, and because nobody use innobackupex, and we don't have related bug reports). And you are correct, we gain nothing in functionality too by removing it. It's just code clean-up task to get rid of copy-pasted code. And if we really need the compatibility with innobackupex, we can keep it.
if it's only option remapping, this seems like a small and easy to maintain chunk of code. May be it'd be better to keep it for compatibility reasons?
Sergei Golubchik
added a comment - if it's only option remapping, this seems like a small and easy to maintain chunk of code. May be it'd be better to keep it for compatibility reasons?
Vladislav Lesin
added a comment - serg This mode is only for options remapping, https://mariadb.com/kb/en/mariabackup-options/#-innobackupex . This task can be considered as a part of MDEV-23695 . innobackupex was removed from xtrabackup in December 2018.
What do we gain by removing it? Is this mode only about remapping of command-line options or are there deeper differences?
Sergei Golubchik
added a comment - What do we gain by removing it? Is this mode only about remapping of command-line options or are there deeper differences?
3. --no-timestamp is the default mode for mariabackup, see the above example;
4. --include and --tables are the same
5. --databases - according to the code in ibx_init():
if (opt_ibx_databases != NULL) {
if (is_path_separator(*opt_ibx_databases)) {
xtrabackup_databases_file = opt_ibx_databases;
} else {
xtrabackup_databases = opt_ibx_databases;
}
}
--innobackupex --databases can contain both the list of databases/tables and a file name which contains the list of databases/tables, while just --databases can contain only the list of databases/tables, while for the file there is another option --databases_file.
6. --target_dir is omitted in innobackupex mode, just target directory path is required, what is the same as --target_dir in mariabackup, see the example above.
I would say we don't loose any functionality, all innobackupex options have alternative mariabackup options.
Vladislav Lesin
added a comment - - edited ralf.gebhardt asked me, what options do we loose and what is the alternative options.
1. --innobackupex --apply-log is the same as --prepare;
2. --innobackupex --incremental is the same as --incremental-dir, example:
mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --incremental --no-timestamp --incremental-basedir=$targetdir/full $targetdir/inc;
mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --apply-log $targetdir/full;
mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --apply-log --incremental-dir=$targetdir/inc $targetdir/full;
can be exchanged with:
mariabackup --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --incremental-basedir=$targetdir/full --target-dir=$targetdir/inc;
mariabackup --defaults-file=$MYSQLTEST_VARDIR/my.cnf --prepare --target-dir=$targetdir/full;
mariabackup --defaults-file=$MYSQLTEST_VARDIR/my.cnf --prepare --incremental-dir=$targetdir/inc --target-dir=$targetdir/full;
3. --no-timestamp is the default mode for mariabackup, see the above example;
4. --include and --tables are the same
5. --databases - according to the code in ibx_init():
if (opt_ibx_databases != NULL) {
if (is_path_separator(*opt_ibx_databases)) {
xtrabackup_databases_file = opt_ibx_databases;
} else {
xtrabackup_databases = opt_ibx_databases;
}
}
--innobackupex --databases can contain both the list of databases/tables and a file name which contains the list of databases/tables, while just --databases can contain only the list of databases/tables, while for the file there is another option --databases_file.
6. --target_dir is omitted in innobackupex mode, just target directory path is required, what is the same as --target_dir in mariabackup, see the example above.
I would say we don't loose any functionality, all innobackupex options have alternative mariabackup options.
People
Unassigned
Geoff Montee (Inactive)
Votes:
1Vote for this issue
Watchers:
8Start watching this issue
Dates
Created:
Updated:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":1437.3000001907349,"ttfb":283.30000019073486,"pageVisibility":"visible","entityId":78868,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"96c4f701-ed0c-47c3-990c-d94bab3fdf80","navigationType":0,"readyForUser":1692.5999999046326,"redirectCount":0,"resourceLoadedEnd":2116.5999999046326,"resourceLoadedStart":306.69999980926514,"resourceTiming":[{"duration":560.4000000953674,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":306.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":306.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":867.0999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":560.4000000953674,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":307,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":307,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":867.4000000953674,"responseStart":0,"secureConnectionStart":0},{"duration":596,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":307.19999980926514,"connectEnd":307.19999980926514,"connectStart":307.19999980926514,"domainLookupEnd":307.19999980926514,"domainLookupStart":307.19999980926514,"fetchStart":307.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":307.19999980926514,"responseEnd":903.1999998092651,"responseStart":903.1999998092651,"secureConnectionStart":307.19999980926514},{"duration":670.1999998092651,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":307.40000009536743,"connectEnd":307.40000009536743,"connectStart":307.40000009536743,"domainLookupEnd":307.40000009536743,"domainLookupStart":307.40000009536743,"fetchStart":307.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":307.40000009536743,"responseEnd":977.5999999046326,"responseStart":977.5999999046326,"secureConnectionStart":307.40000009536743},{"duration":674.1000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":307.69999980926514,"connectEnd":307.69999980926514,"connectStart":307.69999980926514,"domainLookupEnd":307.69999980926514,"domainLookupStart":307.69999980926514,"fetchStart":307.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":307.69999980926514,"responseEnd":981.8000001907349,"responseStart":981.8000001907349,"secureConnectionStart":307.69999980926514},{"duration":674.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":307.80000019073486,"connectEnd":307.80000019073486,"connectStart":307.80000019073486,"domainLookupEnd":307.80000019073486,"domainLookupStart":307.80000019073486,"fetchStart":307.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":307.80000019073486,"responseEnd":982.3000001907349,"responseStart":982.3000001907349,"secureConnectionStart":307.80000019073486},{"duration":674.9000000953674,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":307.90000009536743,"connectEnd":307.90000009536743,"connectStart":307.90000009536743,"domainLookupEnd":307.90000009536743,"domainLookupStart":307.90000009536743,"fetchStart":307.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":307.90000009536743,"responseEnd":982.8000001907349,"responseStart":982.8000001907349,"secureConnectionStart":307.90000009536743},{"duration":772.0999999046326,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":308.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":308.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1080.1999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":675,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":308.30000019073486,"connectEnd":308.30000019073486,"connectStart":308.30000019073486,"domainLookupEnd":308.30000019073486,"domainLookupStart":308.30000019073486,"fetchStart":308.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":308.30000019073486,"responseEnd":983.3000001907349,"responseStart":983.3000001907349,"secureConnectionStart":308.30000019073486},{"duration":772.1999998092651,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":308.40000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":308.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1080.5999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":675.3000001907349,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":308.5,"connectEnd":308.5,"connectStart":308.5,"domainLookupEnd":308.5,"domainLookupStart":308.5,"fetchStart":308.5,"redirectEnd":0,"redirectStart":0,"requestStart":308.5,"responseEnd":983.8000001907349,"responseStart":983.8000001907349,"secureConnectionStart":308.5},{"duration":1805.3000001907349,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":310.19999980926514,"connectEnd":310.19999980926514,"connectStart":310.19999980926514,"domainLookupEnd":310.19999980926514,"domainLookupStart":310.19999980926514,"fetchStart":310.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":310.19999980926514,"responseEnd":2115.5,"responseStart":2115.5,"secureConnectionStart":310.19999980926514},{"duration":1806.4000000953674,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":310.19999980926514,"connectEnd":310.19999980926514,"connectStart":310.19999980926514,"domainLookupEnd":310.19999980926514,"domainLookupStart":310.19999980926514,"fetchStart":310.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":310.19999980926514,"responseEnd":2116.5999999046326,"responseStart":2116.5999999046326,"secureConnectionStart":310.19999980926514},{"duration":859.7999997138977,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1096.4000000953674,"connectEnd":1096.4000000953674,"connectStart":1096.4000000953674,"domainLookupEnd":1096.4000000953674,"domainLookupStart":1096.4000000953674,"fetchStart":1096.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":1096.4000000953674,"responseEnd":1956.1999998092651,"responseStart":1956.1999998092651,"secureConnectionStart":1096.4000000953674},{"duration":755.8000001907349,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":1426.6999998092651,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1426.6999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2182.5,"responseStart":0,"secureConnectionStart":0}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":87,"responseStart":283,"responseEnd":294,"domLoading":300,"domInteractive":2184,"domContentLoadedEventStart":2184,"domContentLoadedEventEnd":2265,"domComplete":2995,"loadEventStart":2995,"loadEventEnd":2996,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":2122.800000190735},{"name":"bigPipe.sidebar-id.end","time":2123.800000190735},{"name":"bigPipe.activity-panel-pipe-id.start","time":2124},{"name":"bigPipe.activity-panel-pipe-id.end","time":2127.199999809265},{"name":"activityTabFullyLoaded","time":2324}],"measures":[],"correlationId":"47c186252c5dc8","effectiveType":"4g","downlink":9.3,"rtt":0,"serverDuration":136,"dbReadsTimeInMs":29,"dbConnsTimeInMs":41,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
Please consider adding a "timestamp" option to normal mode, so users are not forced to use
to generate a sub-directory name.
Thank you.