Commit c0db3fe6 authored by Simon Lipp's avatar Simon Lipp Committed by Robert Bindar

MDEV-18438 Don't stream xtrabackup_info of extra-lsndir

parent f94d9ab9
...@@ -1610,7 +1610,8 @@ bool backup_finish() ...@@ -1610,7 +1610,8 @@ bool backup_finish()
return(false); return(false);
} }
if (!write_xtrabackup_info(mysql_connection, XTRABACKUP_INFO, opt_history != 0)) { if (!write_xtrabackup_info(mysql_connection, XTRABACKUP_INFO,
opt_history != 0, true)) {
return(false); return(false);
} }
......
...@@ -1472,9 +1472,12 @@ PERCONA_SCHEMA.xtrabackup_history and writes a new history record to the ...@@ -1472,9 +1472,12 @@ PERCONA_SCHEMA.xtrabackup_history and writes a new history record to the
table containing all the history info particular to the just completed table containing all the history info particular to the just completed
backup. */ backup. */
bool bool
write_xtrabackup_info(MYSQL *connection, const char * filename, bool history) write_xtrabackup_info(MYSQL *connection, const char * filename, bool history,
bool stream)
{ {
bool result = true;
FILE *fp = NULL;
char *uuid = NULL; char *uuid = NULL;
char *server_version = NULL; char *server_version = NULL;
char buf_start_time[100]; char buf_start_time[100];
...@@ -1500,7 +1503,8 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history) ...@@ -1500,7 +1503,8 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history)
|| xtrabackup_databases_exclude || xtrabackup_databases_exclude
); );
backup_file_printf(filename, char *buf = NULL;
int buf_len = asprintf(&buf,
"uuid = %s\n" "uuid = %s\n"
"name = %s\n" "name = %s\n"
"tool_name = %s\n" "tool_name = %s\n"
...@@ -1512,8 +1516,8 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history) ...@@ -1512,8 +1516,8 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history)
"end_time = %s\n" "end_time = %s\n"
"lock_time = %d\n" "lock_time = %d\n"
"binlog_pos = %s\n" "binlog_pos = %s\n"
"innodb_from_lsn = %llu\n" "innodb_from_lsn = " LSN_PF "\n"
"innodb_to_lsn = %llu\n" "innodb_to_lsn = " LSN_PF "\n"
"partial = %s\n" "partial = %s\n"
"incremental = %s\n" "incremental = %s\n"
"format = %s\n" "format = %s\n"
...@@ -1530,12 +1534,34 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history) ...@@ -1530,12 +1534,34 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history)
(int)history_lock_time, /* lock_time */ (int)history_lock_time, /* lock_time */
mysql_binlog_position ? mysql_binlog_position ?
mysql_binlog_position : "", /* binlog_pos */ mysql_binlog_position : "", /* binlog_pos */
incremental_lsn, /* innodb_from_lsn */ incremental_lsn,
metadata_to_lsn, /* innodb_to_lsn */ /* innodb_from_lsn */
metadata_to_lsn,
/* innodb_to_lsn */
is_partial? "Y" : "N", is_partial? "Y" : "N",
xtrabackup_incremental ? "Y" : "N", /* incremental */ xtrabackup_incremental ? "Y" : "N", /* incremental */
xb_stream_name[xtrabackup_stream_fmt], /* format */ xb_stream_name[xtrabackup_stream_fmt], /* format */
xtrabackup_compress ? "compressed" : "N"); /* compressed */ xtrabackup_compress ? "compressed" : "N"); /* compressed */
if (buf_len < 0) {
msg("Error: cannot generate xtrabackup_info");
result = false;
goto cleanup;
}
if (stream) {
backup_file_printf(filename, "%s", buf);
} else {
fp = fopen(filename, "w");
if (!fp) {
msg("Error: cannot open %s", filename);
result = false;
goto cleanup;
}
if (fwrite(buf, buf_len, 1, fp) < 1) {
result = false;
goto cleanup;
}
}
if (!history) { if (!history) {
goto cleanup; goto cleanup;
...@@ -1597,8 +1623,11 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history) ...@@ -1597,8 +1623,11 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history)
free(uuid); free(uuid);
free(server_version); free(server_version);
free(buf);
if (fp)
fclose(fp);
return(true); return(result);
} }
extern const char *innodb_checksum_algorithm_names[]; extern const char *innodb_checksum_algorithm_names[];
......
...@@ -68,7 +68,8 @@ bool ...@@ -68,7 +68,8 @@ bool
write_binlog_info(MYSQL *connection); write_binlog_info(MYSQL *connection);
bool bool
write_xtrabackup_info(MYSQL *connection, const char * filename, bool history); write_xtrabackup_info(MYSQL *connection, const char * filename, bool history,
bool stream);
bool bool
write_backup_config_file(); write_backup_config_file();
......
...@@ -3984,7 +3984,7 @@ static bool xtrabackup_backup_low() ...@@ -3984,7 +3984,7 @@ static bool xtrabackup_backup_low()
} }
sprintf(filename, "%s/%s", xtrabackup_extra_lsndir, sprintf(filename, "%s/%s", xtrabackup_extra_lsndir,
XTRABACKUP_INFO); XTRABACKUP_INFO);
if (!write_xtrabackup_info(mysql_connection, filename, false)) { if (!write_xtrabackup_info(mysql_connection, filename, false, false)) {
msg("Error: failed to write info " msg("Error: failed to write info "
"to '%s'.", filename); "to '%s'.", filename);
return false; return false;
......
xtrabackup_checkpoints
xtrabackup_info
let $extra_lsndir=$MYSQLTEST_VARDIR/tmp/extra_lsndir;
mkdir $extra_lsndir;
--disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --stream=xbstream --extra-lsndir=$extra_lsndir > /dev/null;
--enable_result_log
list_files $extra_lsndir;
rmdir $extra_lsndir;
let $basedir=$MYSQLTEST_VARDIR/tmp/mdev-18438;
mkdir $basedir;
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --extra-lsndir=$basedir/extra_lsndir --stream=xbstream > $basedir/stream.xb;
mkdir $basedir/backup;
rmdir $basedir/extra_lsndir;
--disable_result_log
exec $XBSTREAM -x -C $basedir/backup < $basedir/stream.xb;
--enable_result_log
rmdir $basedir/backup;
list_files $basedir;
rmdir $basedir;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment