Skip to content

Commit b9a326b

Browse files
committed
MDEV-12709 : mariabackup - during backup phase read some innodb parameter
using "show variables", rather than take the value from my.cnf. "show variables" is more accurate than my.cnf,it also works for parameters set on the mysqld command line, which is especially important for MTR.
1 parent d1e182d commit b9a326b

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

extra/mariabackup/backup_mysql.cc

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,8 @@ get_mysql_vars(MYSQL *connection)
344344
char *innodb_data_home_dir_var = NULL;
345345
char *innodb_undo_directory_var = NULL;
346346
char *innodb_page_size_var = NULL;
347-
347+
char *innodb_undo_tablespaces_var = NULL;
348+
char *endptr;
348349
unsigned long server_version = mysql_get_server_version(connection);
349350

350351
bool ret = true;
@@ -372,6 +373,7 @@ get_mysql_vars(MYSQL *connection)
372373
{"innodb_data_home_dir", &innodb_data_home_dir_var},
373374
{"innodb_undo_directory", &innodb_undo_directory_var},
374375
{"innodb_page_size", &innodb_page_size_var},
376+
{"innodb_undo_tablespaces", &innodb_undo_tablespaces_var},
375377
{NULL, NULL}
376378
};
377379

@@ -460,62 +462,55 @@ get_mysql_vars(MYSQL *connection)
460462
}
461463

462464
/* get some default values is they are missing from my.cnf */
463-
if (!check_if_param_set("datadir") && datadir_var && *datadir_var) {
465+
if (datadir_var && *datadir_var) {
464466
strmake(mysql_real_data_home, datadir_var, FN_REFLEN - 1);
465467
mysql_data_home= mysql_real_data_home;
466468
}
467469

468-
if (!check_if_param_set("innodb_data_file_path")
469-
&& innodb_data_file_path_var && *innodb_data_file_path_var) {
470+
if (innodb_data_file_path_var && *innodb_data_file_path_var) {
470471
innobase_data_file_path = my_strdup(
471472
innodb_data_file_path_var, MYF(MY_FAE));
472473
}
473474

474-
if (!check_if_param_set("innodb_data_home_dir")
475-
&& innodb_data_home_dir_var && *innodb_data_home_dir_var) {
475+
if (innodb_data_home_dir_var && *innodb_data_home_dir_var) {
476476
innobase_data_home_dir = my_strdup(
477477
innodb_data_home_dir_var, MYF(MY_FAE));
478478
}
479479

480-
if (!check_if_param_set("innodb_log_group_home_dir")
481-
&& innodb_log_group_home_dir_var
480+
if (innodb_log_group_home_dir_var
482481
&& *innodb_log_group_home_dir_var) {
483482
srv_log_group_home_dir = my_strdup(
484483
innodb_log_group_home_dir_var, MYF(MY_FAE));
485484
}
486485

487-
if (!check_if_param_set("innodb_undo_directory")
488-
&& innodb_undo_directory_var && *innodb_undo_directory_var) {
486+
if (innodb_undo_directory_var && *innodb_undo_directory_var) {
489487
srv_undo_dir = my_strdup(
490488
innodb_undo_directory_var, MYF(MY_FAE));
491489
}
492490

493-
if (!check_if_param_set("innodb_log_files_in_group")
494-
&& innodb_log_files_in_group_var) {
495-
char *endptr;
496-
491+
if (innodb_log_files_in_group_var) {
497492
innobase_log_files_in_group = strtol(
498493
innodb_log_files_in_group_var, &endptr, 10);
499494
ut_ad(*endptr == 0);
500495
}
501496

502-
if (!check_if_param_set("innodb_log_file_size")
503-
&& innodb_log_file_size_var) {
504-
char *endptr;
505-
497+
if (innodb_log_file_size_var) {
506498
innobase_log_file_size = strtoll(
507499
innodb_log_file_size_var, &endptr, 10);
508500
ut_ad(*endptr == 0);
509501
}
510502

511-
if (!check_if_param_set("innodb_page_size") && innodb_page_size_var) {
512-
char *endptr;
513-
503+
if (innodb_page_size_var) {
514504
innobase_page_size = strtoll(
515505
innodb_page_size_var, &endptr, 10);
516506
ut_ad(*endptr == 0);
517507
}
518508

509+
if (innodb_undo_tablespaces_var) {
510+
srv_undo_tablespaces = strtoul(innodb_undo_tablespaces_var, &endptr, 10);
511+
ut_ad(*endptr == 0);
512+
}
513+
519514
out:
520515
free_mysql_variables(mysql_vars);
521516

0 commit comments

Comments
 (0)