summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
Diffstat (limited to 'extra')
-rw-r--r--extra/mariabackup/backup_mysql.cc12
-rw-r--r--extra/mariabackup/innobackupex.cc6
-rw-r--r--extra/mariabackup/write_filt.cc12
-rw-r--r--extra/mariabackup/xtrabackup.cc94
-rw-r--r--extra/mariabackup/xtrabackup.h2
5 files changed, 26 insertions, 100 deletions
diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc
index ae7d4583c69..69448586b33 100644
--- a/extra/mariabackup/backup_mysql.cc
+++ b/extra/mariabackup/backup_mysql.cc
@@ -554,7 +554,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
(unsigned long)strlen(opt_incremental_history_name));
snprintf(query, sizeof(query),
"SELECT innodb_to_lsn "
- "FROM PERCONA_SCHEMA.xtrabackup_history "
+ "FROM " XB_HISTORY_TABLE " "
"WHERE name = '%s' "
"AND innodb_to_lsn IS NOT NULL "
"ORDER BY innodb_to_lsn DESC LIMIT 1",
@@ -567,7 +567,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
(unsigned long)strlen(opt_incremental_history_uuid));
snprintf(query, sizeof(query),
"SELECT innodb_to_lsn "
- "FROM PERCONA_SCHEMA.xtrabackup_history "
+ "FROM " XB_HISTORY_TABLE " "
"WHERE uuid = '%s' "
"AND innodb_to_lsn IS NOT NULL "
"ORDER BY innodb_to_lsn DESC LIMIT 1",
@@ -1572,7 +1572,7 @@ operator<<(std::ostream& s, const escape_and_quote& eq)
/*********************************************************************//**
Writes xtrabackup_info file and if backup_history is enable creates
-PERCONA_SCHEMA.xtrabackup_history and writes a new history record to the
+mysql.mariabackup_history and writes a new history record to the
table containing all the history info particular to the just completed
backup. */
bool
@@ -1672,9 +1672,7 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history,
}
xb_mysql_query(connection,
- "CREATE DATABASE IF NOT EXISTS PERCONA_SCHEMA", false);
- xb_mysql_query(connection,
- "CREATE TABLE IF NOT EXISTS PERCONA_SCHEMA.xtrabackup_history("
+ "CREATE TABLE IF NOT EXISTS " XB_HISTORY_TABLE "("
"uuid VARCHAR(40) NOT NULL PRIMARY KEY,"
"name VARCHAR(255) DEFAULT NULL,"
"tool_name VARCHAR(255) DEFAULT NULL,"
@@ -1697,7 +1695,7 @@ write_xtrabackup_info(MYSQL *connection, const char * filename, bool history,
#define ESCAPE_BOOL(expr) ((expr)?"'Y'":"'N'")
- oss << "insert into PERCONA_SCHEMA.xtrabackup_history("
+ oss << "insert into " XB_HISTORY_TABLE "("
<< "uuid, name, tool_name, tool_command, tool_version,"
<< "ibbackup_version, server_version, start_time, end_time,"
<< "lock_time, binlog_pos, innodb_from_lsn, innodb_to_lsn,"
diff --git a/extra/mariabackup/innobackupex.cc b/extra/mariabackup/innobackupex.cc
index 20f87354fd0..b925b41552d 100644
--- a/extra/mariabackup/innobackupex.cc
+++ b/extra/mariabackup/innobackupex.cc
@@ -377,7 +377,7 @@ static struct my_option ibx_long_options[] =
{"incremental-history-name", OPT_INCREMENTAL_HISTORY_NAME,
"This option specifies the name of the backup series stored in the "
- "PERCONA_SCHEMA.xtrabackup_history history record to base an "
+ XB_HISTORY_TABLE " history record to base an "
"incremental backup on. Backup will search the history table "
"looking for the most recent (highest innodb_to_lsn), successful "
"backup in the series and take the to_lsn value to use as the "
@@ -392,7 +392,7 @@ static struct my_option ibx_long_options[] =
{"incremental-history-uuid", OPT_INCREMENTAL_HISTORY_UUID,
"This option specifies the UUID of the specific history record "
- "stored in the PERCONA_SCHEMA.xtrabackup_history to base an "
+ "stored in the " XB_HISTORY_TABLE " table to base an "
"incremental backup on. --incremental-history-name, "
"--incremental-basedir and --incremental-lsn. If no valid lsn can be "
"found (no success record with that uuid), an error will be returned."
@@ -417,7 +417,7 @@ static struct my_option ibx_long_options[] =
{"history", OPT_HISTORY,
"This option enables the tracking of backup history in the "
- "PERCONA_SCHEMA.xtrabackup_history table. An optional history "
+ XB_HISTORY_TABLE " table. An optional history "
"series name may be specified that will be placed with the history "
"record for the current backup being taken.",
NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
diff --git a/extra/mariabackup/write_filt.cc b/extra/mariabackup/write_filt.cc
index 01e4d83e344..086d4078e31 100644
--- a/extra/mariabackup/write_filt.cc
+++ b/extra/mariabackup/write_filt.cc
@@ -129,6 +129,18 @@ wf_incremental_process(xb_write_filt_ctxt_t *ctxt, ds_file_t *dstfile)
incremental_lsn >= mach_read_from_8(page + FIL_PAGE_LSN))
continue;
+ /* Check whether TRX_SYS page has been changed */
+ if (mach_read_from_4(page + FIL_PAGE_SPACE_ID)
+ == TRX_SYS_SPACE
+ && mach_read_from_4(page + FIL_PAGE_OFFSET)
+ == TRX_SYS_PAGE_NO) {
+ msg(cursor->thread_n,
+ "--incremental backup is impossible if "
+ "the server had been restarted with "
+ "different innodb_undo_tablespaces.");
+ return false;
+ }
+
/* updated page */
if (cp->npages == page_size / 4) {
/* flush buffer */
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index ef826a40105..67560ec03aa 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -1368,7 +1368,7 @@ struct my_option xb_client_options[]= {
{"incremental-history-name", OPT_INCREMENTAL_HISTORY_NAME,
"This option specifies the name of the backup series stored in the "
- "PERCONA_SCHEMA.xtrabackup_history history record to base an "
+ XB_HISTORY_TABLE " history record to base an "
"incremental backup on. Xtrabackup will search the history table "
"looking for the most recent (highest innodb_to_lsn), successful "
"backup in the series and take the to_lsn value to use as the "
@@ -1383,7 +1383,7 @@ struct my_option xb_client_options[]= {
{"incremental-history-uuid", OPT_INCREMENTAL_HISTORY_UUID,
"This option specifies the UUID of the specific history record "
- "stored in the PERCONA_SCHEMA.xtrabackup_history to base an "
+ "stored in the " XB_HISTORY_TABLE " table to base an "
"incremental backup on. --incremental-history-name, "
"--incremental-basedir and --incremental-lsn. If no valid lsn can be "
"found (no success record with that uuid), an error will be returned."
@@ -1412,7 +1412,7 @@ struct my_option xb_client_options[]= {
{"history", OPT_HISTORY,
"This option enables the tracking of backup history in the "
- "PERCONA_SCHEMA.xtrabackup_history table. An optional history "
+ XB_HISTORY_TABLE " table. An optional history "
"series name may be specified that will be placed with the history "
"record for the current backup being taken.",
NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -3859,85 +3859,6 @@ next_datadir_item:
return(err);
}
-/** Assign srv_undo_space_id_start variable if there are undo tablespace present.
-Read the TRX_SYS page from ibdata1 file and get the minimum space id from
-the first slot rollback segments of TRX_SYS_PAGE_NO.
-@retval DB_ERROR if file open or page read failed.
-@retval DB_SUCCESS if srv_undo_space_id assigned successfully. */
-static dberr_t xb_assign_undo_space_start()
-{
-
- pfs_os_file_t file;
- bool ret;
- dberr_t error = DB_SUCCESS;
- uint32_t space;
- uint32_t fsp_flags;
- int n_retries = 5;
-
- file = os_file_create(0, srv_sys_space.first_datafile()->filepath(),
- OS_FILE_OPEN, OS_FILE_NORMAL, OS_DATA_FILE, true, &ret);
-
- if (!ret) {
- msg("Error opening %s", srv_sys_space.first_datafile()->filepath());
- return DB_ERROR;
- }
-
- byte* page = static_cast<byte*>
- (aligned_malloc(srv_page_size, srv_page_size));
-
- if (os_file_read(IORequestRead, file, page, 0, srv_page_size, nullptr)
- != DB_SUCCESS) {
- msg("Reading first page failed.\n");
- error = DB_ERROR;
- goto func_exit;
- }
-
- fsp_flags = mach_read_from_4(
- page + FSP_HEADER_OFFSET + FSP_SPACE_FLAGS);
-retry:
- if (os_file_read(IORequestRead, file, page,
- TRX_SYS_PAGE_NO << srv_page_size_shift,
- srv_page_size, nullptr) != DB_SUCCESS) {
- msg("Reading TRX_SYS page failed.");
- error = DB_ERROR;
- goto func_exit;
- }
-
- /* TRX_SYS page can't be compressed or encrypted. */
- if (buf_page_is_corrupted(false, page, fsp_flags)) {
- if (n_retries--) {
- std::this_thread::sleep_for(
- std::chrono::milliseconds(1));
- goto retry;
- } else {
- msg("mariabackup: TRX_SYS page corrupted.\n");
- error = DB_ERROR;
- goto func_exit;
- }
- }
-
- /* 0th slot always points to system tablespace.
- 1st slot should point to first undotablespace which is minimum. */
-
- ut_ad(mach_read_from_4(TRX_SYS + TRX_SYS_RSEGS
- + TRX_SYS_RSEG_SLOT_SIZE
- + TRX_SYS_RSEG_PAGE_NO + page)
- != FIL_NULL);
-
- space = mach_read_from_4(TRX_SYS + TRX_SYS_RSEGS
- + TRX_SYS_RSEG_SLOT_SIZE
- + TRX_SYS_RSEG_SPACE + page);
-
- srv_undo_space_id_start = space;
-
-func_exit:
- aligned_free(page);
- ret = os_file_close(file);
- ut_a(ret);
-
- return error;
-}
-
/** Close all undo tablespaces while applying incremental delta */
static void xb_close_undo_tablespaces()
{
@@ -3990,14 +3911,7 @@ xb_load_tablespaces()
}
/* Add separate undo tablespaces to fil_system */
-
- err = xb_assign_undo_space_start();
-
- if (err != DB_SUCCESS) {
- return err;
- }
-
- err = srv_undo_tablespaces_init(false);
+ err = srv_undo_tablespaces_init(false, nullptr);
if (err != DB_SUCCESS) {
return(err);
diff --git a/extra/mariabackup/xtrabackup.h b/extra/mariabackup/xtrabackup.h
index 11de9eeaf48..3796c9ec698 100644
--- a/extra/mariabackup/xtrabackup.h
+++ b/extra/mariabackup/xtrabackup.h
@@ -27,6 +27,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
#include "changed_page_bitmap.h"
#include <set>
+#define XB_HISTORY_TABLE "mysql.mariadb_backup_history"
+
struct xb_delta_info_t
{
xb_delta_info_t(ulint page_size, ulint zip_size, uint32_t space_id)