Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
a8a27e65
Commit
a8a27e65
authored
Jan 14, 2019
by
Vladislav Vaintroub
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-18212 mariabackup: Make output format uniform whenever possible
parent
61b60007
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
407 additions
and
476 deletions
+407
-476
extra/mariabackup/CMakeLists.txt
extra/mariabackup/CMakeLists.txt
+13
-13
extra/mariabackup/backup_copy.cc
extra/mariabackup/backup_copy.cc
+58
-69
extra/mariabackup/backup_mysql.cc
extra/mariabackup/backup_mysql.cc
+52
-56
extra/mariabackup/changed_page_bitmap.cc
extra/mariabackup/changed_page_bitmap.cc
+13
-13
extra/mariabackup/common.h
extra/mariabackup/common.h
+37
-31
extra/mariabackup/datasink.cc
extra/mariabackup/datasink.cc
+2
-2
extra/mariabackup/ds_archive.cc
extra/mariabackup/ds_archive.cc
+0
-0
extra/mariabackup/ds_buffer.cc
extra/mariabackup/ds_buffer.cc
+1
-1
extra/mariabackup/ds_compress.cc
extra/mariabackup/ds_compress.cc
+4
-4
extra/mariabackup/ds_stdout.cc
extra/mariabackup/ds_stdout.cc
+1
-1
extra/mariabackup/ds_tmpfile.cc
extra/mariabackup/ds_tmpfile.cc
+7
-7
extra/mariabackup/ds_xbstream.cc
extra/mariabackup/ds_xbstream.cc
+6
-6
extra/mariabackup/encryption_plugin.cc
extra/mariabackup/encryption_plugin.cc
+4
-4
extra/mariabackup/fil_cur.cc
extra/mariabackup/fil_cur.cc
+10
-22
extra/mariabackup/innobackupex.cc
extra/mariabackup/innobackupex.cc
+1
-1
extra/mariabackup/write_filt.cc
extra/mariabackup/write_filt.cc
+5
-6
extra/mariabackup/xbstream.cc
extra/mariabackup/xbstream.cc
+18
-19
extra/mariabackup/xbstream.h
extra/mariabackup/xbstream.h
+1
-1
extra/mariabackup/xbstream_read.cc
extra/mariabackup/xbstream_read.cc
+12
-12
extra/mariabackup/xbstream_write.cc
extra/mariabackup/xbstream_write.cc
+3
-3
extra/mariabackup/xtrabackup.cc
extra/mariabackup/xtrabackup.cc
+154
-196
extra/mariabackup/xtrabackup.h
extra/mariabackup/xtrabackup.h
+5
-9
No files found.
extra/mariabackup/CMakeLists.txt
View file @
a8a27e65
...
@@ -57,19 +57,19 @@ MYSQL_ADD_EXECUTABLE(mariabackup
...
@@ -57,19 +57,19 @@ MYSQL_ADD_EXECUTABLE(mariabackup
xtrabackup.cc
xtrabackup.cc
innobackupex.cc
innobackupex.cc
changed_page_bitmap.cc
changed_page_bitmap.cc
datasink.c
datasink.c
c
ds_buffer.c
ds_buffer.c
c
ds_compress.c
ds_compress.c
c
ds_local.cc
ds_local.cc
ds_stdout.c
ds_stdout.c
c
ds_tmpfile.c
ds_tmpfile.c
c
ds_xbstream.c
ds_xbstream.c
c
fil_cur.cc
fil_cur.cc
quicklz/quicklz.c
quicklz/quicklz.c
read_filt.cc
read_filt.cc
write_filt.cc
write_filt.cc
wsrep.cc
wsrep.cc
xbstream_write.c
xbstream_write.c
c
backup_mysql.cc
backup_mysql.cc
backup_copy.cc
backup_copy.cc
encryption_plugin.cc
encryption_plugin.cc
...
@@ -96,13 +96,13 @@ ENDIF()
...
@@ -96,13 +96,13 @@ ENDIF()
# xbstream binary
# xbstream binary
########################################################################
########################################################################
MYSQL_ADD_EXECUTABLE
(
mbstream
MYSQL_ADD_EXECUTABLE
(
mbstream
ds_buffer.c
ds_buffer.c
c
ds_local.cc
ds_local.cc
ds_stdout.c
ds_stdout.c
c
datasink.c
datasink.c
c
xbstream.c
xbstream.c
c
xbstream_read.c
xbstream_read.c
c
xbstream_write.c
xbstream_write.c
c
COMPONENT backup
COMPONENT backup
)
)
...
...
extra/mariabackup/backup_copy.cc
View file @
a8a27e65
...
@@ -237,7 +237,7 @@ datadir_iter_next_database(datadir_iter_t *it)
...
@@ -237,7 +237,7 @@ datadir_iter_next_database(datadir_iter_t *it)
if
(
os_file_closedir
(
it
->
dbdir
)
!=
0
)
{
if
(
os_file_closedir
(
it
->
dbdir
)
!=
0
)
{
msg
(
"Warning: could not"
msg
(
"Warning: could not"
" close database directory %s
\n
"
,
it
->
dbpath
);
" close database directory %s"
,
it
->
dbpath
);
it
->
err
=
DB_ERROR
;
it
->
err
=
DB_ERROR
;
...
@@ -278,7 +278,7 @@ datadir_iter_next_database(datadir_iter_t *it)
...
@@ -278,7 +278,7 @@ datadir_iter_next_database(datadir_iter_t *it)
}
}
if
(
check_if_skip_database_by_path
(
it
->
dbpath
))
{
if
(
check_if_skip_database_by_path
(
it
->
dbpath
))
{
msg
(
"Skipping db: %s
\n
"
,
it
->
dbpath
);
msg
(
"Skipping db: %s"
,
it
->
dbpath
);
continue
;
continue
;
}
}
...
@@ -522,19 +522,15 @@ datafile_open(const char *file, datafile_cur_t *cursor, uint thread_n)
...
@@ -522,19 +522,15 @@ datafile_open(const char *file, datafile_cur_t *cursor, uint thread_n)
/* The following call prints an error message */
/* The following call prints an error message */
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"[%02u] error: cannot open "
msg
(
thread_n
,
"error: cannot open "
"file %s
\n
"
,
"file %s"
,
cursor
->
abs_path
);
thread_n
,
cursor
->
abs_path
);
return
(
false
);
return
(
false
);
}
}
if
(
!
my_stat
(
cursor
->
abs_path
,
&
cursor
->
statinfo
,
0
))
{
if
(
!
my_stat
(
cursor
->
abs_path
,
&
cursor
->
statinfo
,
0
))
{
msg
(
"[%02u] error: cannot stat %s
\n
"
,
msg
(
thread_n
,
"error: cannot stat %s"
,
cursor
->
abs_path
);
thread_n
,
cursor
->
abs_path
);
datafile_close
(
cursor
);
datafile_close
(
cursor
);
return
(
false
);
return
(
false
);
}
}
...
@@ -728,9 +724,8 @@ directory_exists(const char *dir, bool create)
...
@@ -728,9 +724,8 @@ directory_exists(const char *dir, bool create)
if
(
mkdirp
(
dir
,
0777
,
MYF
(
0
))
<
0
)
{
if
(
mkdirp
(
dir
,
0777
,
MYF
(
0
))
<
0
)
{
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
msg
(
"Can not create directory %s: %s
\n
"
,
dir
,
errbuf
);
msg
(
"Can not create directory %s: %s"
,
dir
,
errbuf
);
return
(
false
);
return
(
false
);
}
}
}
}
...
@@ -739,7 +734,7 @@ directory_exists(const char *dir, bool create)
...
@@ -739,7 +734,7 @@ directory_exists(const char *dir, bool create)
if
(
os_dir
==
NULL
)
{
if
(
os_dir
==
NULL
)
{
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
msg
(
"Can not open directory %s: %s
\n
"
,
dir
,
msg
(
"Can not open directory %s: %s"
,
dir
,
errbuf
);
errbuf
);
return
(
false
);
return
(
false
);
...
@@ -768,7 +763,7 @@ directory_exists_and_empty(const char *dir, const char *comment)
...
@@ -768,7 +763,7 @@ directory_exists_and_empty(const char *dir, const char *comment)
os_dir
=
os_file_opendir
(
dir
,
FALSE
);
os_dir
=
os_file_opendir
(
dir
,
FALSE
);
if
(
os_dir
==
NULL
)
{
if
(
os_dir
==
NULL
)
{
msg
(
"%s can not open directory %s
\n
"
,
comment
,
dir
);
msg
(
"%s can not open directory %s"
,
comment
,
dir
);
return
(
false
);
return
(
false
);
}
}
...
@@ -777,7 +772,7 @@ directory_exists_and_empty(const char *dir, const char *comment)
...
@@ -777,7 +772,7 @@ directory_exists_and_empty(const char *dir, const char *comment)
os_file_closedir
(
os_dir
);
os_file_closedir
(
os_dir
);
if
(
!
empty
)
{
if
(
!
empty
)
{
msg
(
"%s directory %s is not empty!
\n
"
,
comment
,
dir
);
msg
(
"%s directory %s is not empty!"
,
comment
,
dir
);
}
}
return
(
empty
);
return
(
empty
);
...
@@ -826,7 +821,7 @@ datafile_copy_backup(const char *filepath, uint thread_n)
...
@@ -826,7 +821,7 @@ datafile_copy_backup(const char *filepath, uint thread_n)
of the filters value. */
of the filters value. */
if
(
check_if_skip_table
(
filepath
))
{
if
(
check_if_skip_table
(
filepath
))
{
msg
_ts
(
"[%02u] Skipping %s.
\n
"
,
thread_n
,
filepath
);
msg
(
thread_n
,
"Skipping %s."
,
filepath
);
return
(
true
);
return
(
true
);
}
}
...
@@ -892,14 +887,13 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
...
@@ -892,14 +887,13 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
dstfile
=
ds_open
(
ds_data
,
filename
,
&
stat
);
dstfile
=
ds_open
(
ds_data
,
filename
,
&
stat
);
if
(
dstfile
==
NULL
)
{
if
(
dstfile
==
NULL
)
{
msg
(
"[%02u] error: "
msg
(
"error: Can't open the destination stream for %s"
,
"cannot open the destination stream for %s
\n
"
,
filename
);
0
,
filename
);
goto
error
;
goto
error
;
}
}
action
=
xb_get_copy_action
(
"Writing"
);
action
=
xb_get_copy_action
(
"Writing"
);
msg
_ts
(
"[%02u] %s %s
\n
"
,
0
,
action
,
filename
);
msg
(
"%s %s"
,
action
,
filename
);
if
(
buf_len
==
-
1
)
{
if
(
buf_len
==
-
1
)
{
goto
error
;
goto
error
;
...
@@ -910,7 +904,7 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
...
@@ -910,7 +904,7 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
}
}
/* close */
/* close */
msg
_ts
(
"[%02u] ...done
\n
"
,
0
);
msg
(
" ...done"
);
free
(
buf
);
free
(
buf
);
if
(
ds_close
(
dstfile
))
{
if
(
ds_close
(
dstfile
))
{
...
@@ -926,7 +920,7 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
...
@@ -926,7 +920,7 @@ backup_file_vprintf(const char *filename, const char *fmt, va_list ap)
}
}
error_close:
error_close:
msg
(
"
[%02u] Error: backup file failed.
\n
"
,
0
);
msg
(
"
Error: backup file failed."
);
return
(
false
);
/*ERROR*/
return
(
false
);
/*ERROR*/
}
}
...
@@ -986,7 +980,7 @@ run_data_threads(datadir_iter_t *it, os_thread_func_t func, uint n)
...
@@ -986,7 +980,7 @@ run_data_threads(datadir_iter_t *it, os_thread_func_t func, uint n)
for
(
i
=
0
;
i
<
n
;
i
++
)
{
for
(
i
=
0
;
i
<
n
;
i
++
)
{
ret
=
data_threads
[
i
].
ret
&&
ret
;
ret
=
data_threads
[
i
].
ret
&&
ret
;
if
(
!
data_threads
[
i
].
ret
)
{
if
(
!
data_threads
[
i
].
ret
)
{
msg
(
"Error: thread %u failed.
\n
"
,
i
);
msg
(
"Error: thread %u failed."
,
i
);
}
}
}
}
...
@@ -1021,14 +1015,12 @@ copy_file(ds_ctxt_t *datasink,
...
@@ -1021,14 +1015,12 @@ copy_file(ds_ctxt_t *datasink,
dstfile
=
ds_open
(
datasink
,
dst_path
,
&
cursor
.
statinfo
);
dstfile
=
ds_open
(
datasink
,
dst_path
,
&
cursor
.
statinfo
);
if
(
dstfile
==
NULL
)
{
if
(
dstfile
==
NULL
)
{
msg
(
"[%02u] error: "
msg
(
thread_n
,
"error: "
"cannot open the destination stream for %s
\n
"
,
"cannot open the destination stream for %s"
,
dst_name
);
thread_n
,
dst_name
);
goto
error
;
goto
error
;
}
}
msg_ts
(
"[%02u] %s %s to %s
\n
"
,
msg
(
thread_n
,
"%s %s to %s"
,
xb_get_copy_action
(),
src_file_path
,
dstfile
->
path
);
thread_n
,
xb_get_copy_action
(),
src_file_path
,
dstfile
->
path
);
/* The main copy loop */
/* The main copy loop */
while
((
res
=
datafile_read
(
&
cursor
))
==
XB_FIL_CUR_SUCCESS
)
{
while
((
res
=
datafile_read
(
&
cursor
))
==
XB_FIL_CUR_SUCCESS
)
{
...
@@ -1043,7 +1035,7 @@ copy_file(ds_ctxt_t *datasink,
...
@@ -1043,7 +1035,7 @@ copy_file(ds_ctxt_t *datasink,
}
}
/* close */
/* close */
msg
_ts
(
"[%02u] ...done
\n
"
,
thread_n
);
msg
(
thread_n
,
" ...done"
);
datafile_close
(
&
cursor
);
datafile_close
(
&
cursor
);
if
(
ds_close
(
dstfile
))
{
if
(
ds_close
(
dstfile
))
{
goto
error_close
;
goto
error_close
;
...
@@ -1057,7 +1049,7 @@ copy_file(ds_ctxt_t *datasink,
...
@@ -1057,7 +1049,7 @@ copy_file(ds_ctxt_t *datasink,
}
}
error_close:
error_close:
msg
(
"[%02u] Error: copy_file() failed.
\n
"
,
thread_n
);
msg
(
thread_n
,
"Error: copy_file() failed."
);
return
(
false
);
/*ERROR*/
return
(
false
);
/*ERROR*/
}
}
...
@@ -1089,36 +1081,34 @@ move_file(ds_ctxt_t *datasink,
...
@@ -1089,36 +1081,34 @@ move_file(ds_ctxt_t *datasink,
if
(
file_exists
(
dst_file_path_abs
))
{
if
(
file_exists
(
dst_file_path_abs
))
{
msg
(
"Error: Move file %s to %s failed: Destination "
msg
(
"Error: Move file %s to %s failed: Destination "
"file exists
\n
"
,
"file exists"
,
src_file_path
,
dst_file_path_abs
);
src_file_path
,
dst_file_path_abs
);
return
(
false
);
return
(
false
);
}
}
msg_ts
(
"[%02u] Moving %s to %s
\n
"
,
msg
(
thread_n
,
"Moving %s to %s"
,
src_file_path
,
dst_file_path_abs
);
thread_n
,
src_file_path
,
dst_file_path_abs
);
if
(
my_rename
(
src_file_path
,
dst_file_path_abs
,
MYF
(
0
))
!=
0
)
{
if
(
my_rename
(
src_file_path
,
dst_file_path_abs
,
MYF
(
0
))
!=
0
)
{
if
(
my_errno
==
EXDEV
)
{
if
(
my_errno
==
EXDEV
)
{
bool
ret
;
bool
ret
;
ret
=
copy_file
(
datasink
,
src_file_path
,
ret
=
copy_file
(
datasink
,
src_file_path
,
dst_file_path
,
thread_n
);
dst_file_path
,
thread_n
);
msg
_ts
(
"[%02u] Removing %s
\n
"
,
thread_n
,
src_file_path
);
msg
(
thread_n
,
"Removing %s"
,
src_file_path
);
if
(
unlink
(
src_file_path
)
!=
0
)
{
if
(
unlink
(
src_file_path
)
!=
0
)
{
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
errno
);
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
errno
);
msg
(
"Error: unlink %s failed: %s
\n
"
,
msg
(
"Error: unlink %s failed: %s"
,
src_file_path
,
src_file_path
,
errbuf
);
errbuf
);
}
}
return
(
ret
);
return
(
ret
);
}
}
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
msg
(
"Can not move file %s to %s: %s
\n
"
,
msg
(
"Can not move file %s to %s: %s"
,
src_file_path
,
dst_file_path_abs
,
src_file_path
,
dst_file_path_abs
,
errbuf
);
errbuf
);
return
(
false
);
return
(
false
);
}
}
msg
_ts
(
"[%02u] ...done
\n
"
,
thread_n
);
msg
(
thread_n
,
" ...done"
);
return
(
true
);
return
(
true
);
}
}
...
@@ -1270,13 +1260,13 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1270,13 +1260,13 @@ backup_files(const char *from, bool prep_mode)
prep_mode
?
1
:
2
);
prep_mode
?
1
:
2
);
rsync_tmpfile
=
fopen
(
rsync_tmpfile_name
,
"w"
);
rsync_tmpfile
=
fopen
(
rsync_tmpfile_name
,
"w"
);
if
(
rsync_tmpfile
==
NULL
)
{
if
(
rsync_tmpfile
==
NULL
)
{
msg
(
"Error: can't create file %s
\n
"
,
msg
(
"Error: can't create file %s"
,
rsync_tmpfile_name
);
rsync_tmpfile_name
);
return
(
false
);
return
(
false
);
}
}
}
}
msg
_ts
(
"Starting %s non-InnoDB tables and files
\n
"
,
msg
(
"Starting %s non-InnoDB tables and files
"
,
prep_mode
?
"prep copy of"
:
"to backup"
);
prep_mode
?
"prep copy of"
:
"to backup"
);
datadir_node_init
(
&
node
);
datadir_node_init
(
&
node
);
...
@@ -1292,7 +1282,7 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1292,7 +1282,7 @@ backup_files(const char *from, bool prep_mode)
ret
=
datafile_copy_backup
(
node
.
filepath
,
1
);
ret
=
datafile_copy_backup
(
node
.
filepath
,
1
);
}
}
if
(
!
ret
)
{
if
(
!
ret
)
{
msg
(
"Failed to copy file %s
\n
"
,
node
.
filepath
);
msg
(
"Failed to copy file %s"
,
node
.
filepath
);
goto
out
;
goto
out
;
}
}
}
else
if
(
!
prep_mode
)
{
}
else
if
(
!
prep_mode
)
{
...
@@ -1302,7 +1292,7 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1302,7 +1292,7 @@ backup_files(const char *from, bool prep_mode)
"%s/db.opt"
,
node
.
filepath
);
"%s/db.opt"
,
node
.
filepath
);
if
(
!
(
ret
=
backup_file_printf
(
if
(
!
(
ret
=
backup_file_printf
(
trim_dotslash
(
path
),
"%s"
,
""
)))
{
trim_dotslash
(
path
),
"%s"
,
""
)))
{
msg
(
"Failed to create file %s
\n
"
,
path
);
msg
(
"Failed to create file %s"
,
path
);
goto
out
;
goto
out
;
}
}
}
}
...
@@ -1327,13 +1317,13 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1327,13 +1317,13 @@ backup_files(const char *from, bool prep_mode)
cmd
<<
"rsync -t . --files-from="
<<
rsync_tmpfile_name
cmd
<<
"rsync -t . --files-from="
<<
rsync_tmpfile_name
<<
" "
<<
xtrabackup_target_dir
;
<<
" "
<<
xtrabackup_target_dir
;
msg
_ts
(
"Starting rsync as: %s
\n
"
,
cmd
.
str
().
c_str
());
msg
(
"Starting rsync as: %s
"
,
cmd
.
str
().
c_str
());
if
((
err
=
system
(
cmd
.
str
().
c_str
())
&&
!
prep_mode
)
!=
0
)
{
if
((
err
=
system
(
cmd
.
str
().
c_str
())
&&
!
prep_mode
)
!=
0
)
{
msg
_ts
(
"Error: rsync failed with error code %d
\n
"
,
err
);
msg
(
"Error: rsync failed with error code %d
"
,
err
);
ret
=
false
;
ret
=
false
;
goto
out
;
goto
out
;
}
}
msg
_ts
(
"rsync finished successfully.
\n
"
);
msg
(
"rsync finished successfully.
"
);
if
(
!
prep_mode
&&
!
opt_no_lock
)
{
if
(
!
prep_mode
&&
!
opt_no_lock
)
{
char
path
[
FN_REFLEN
];
char
path
[
FN_REFLEN
];
...
@@ -1349,7 +1339,7 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1349,7 +1339,7 @@ backup_files(const char *from, bool prep_mode)
rsync_tmpfile
=
fopen
(
rsync_tmpfile_name
,
"r"
);
rsync_tmpfile
=
fopen
(
rsync_tmpfile_name
,
"r"
);
if
(
rsync_tmpfile
==
NULL
)
{
if
(
rsync_tmpfile
==
NULL
)
{
msg
(
"Error: can't open file %s
\n
"
,
msg
(
"Error: can't open file %s"
,
rsync_tmpfile_name
);
rsync_tmpfile_name
);
ret
=
false
;
ret
=
false
;
goto
out
;
goto
out
;
...
@@ -1365,7 +1355,7 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1365,7 +1355,7 @@ backup_files(const char *from, bool prep_mode)
snprintf
(
dst_path
,
sizeof
(
dst_path
),
snprintf
(
dst_path
,
sizeof
(
dst_path
),
"%s/%s"
,
xtrabackup_target_dir
,
"%s/%s"
,
xtrabackup_target_dir
,
path
);
path
);
msg
_ts
(
"Removing %s
\n
"
,
dst_path
);
msg
(
"Removing %s
"
,
dst_path
);
unlink
(
dst_path
);
unlink
(
dst_path
);
}
}
}
}
...
@@ -1375,7 +1365,7 @@ backup_files(const char *from, bool prep_mode)
...
@@ -1375,7 +1365,7 @@ backup_files(const char *from, bool prep_mode)
}
}
}
}
msg
_ts
(
"Finished %s non-InnoDB tables and files
\n
"
,
msg
(
"Finished %s non-InnoDB tables and files
"
,
prep_mode
?
"a prep copy of"
:
"backing up"
);
prep_mode
?
"a prep copy of"
:
"backing up"
);
out:
out:
...
@@ -1447,7 +1437,7 @@ bool backup_start()
...
@@ -1447,7 +1437,7 @@ bool backup_start()
rocksdb_create_checkpoint
();
rocksdb_create_checkpoint
();
}
}
msg
_ts
(
"Waiting for log copy thread to read lsn %llu
\n
"
,
(
ulonglong
)
server_lsn_after_lock
);
msg
(
"Waiting for log copy thread to read lsn %llu
"
,
(
ulonglong
)
server_lsn_after_lock
);
backup_wait_for_lsn
(
server_lsn_after_lock
);
backup_wait_for_lsn
(
server_lsn_after_lock
);
backup_fix_ddl
();
backup_fix_ddl
();
...
@@ -1490,7 +1480,7 @@ bool backup_start()
...
@@ -1490,7 +1480,7 @@ bool backup_start()
}
}
if
(
have_flush_engine_logs
&&
!
opt_no_lock
)
{
if
(
have_flush_engine_logs
&&
!
opt_no_lock
)
{
msg
_ts
(
"Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
\n
"
);
msg
(
"Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
"
);
xb_mysql_query
(
mysql_connection
,
xb_mysql_query
(
mysql_connection
,
"FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS"
,
false
);
"FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS"
,
false
);
}
}
...
@@ -1514,7 +1504,7 @@ void backup_release()
...
@@ -1514,7 +1504,7 @@ void backup_release()
}
}
if
(
opt_safe_slave_backup
&&
sql_thread_started
)
{
if
(
opt_safe_slave_backup
&&
sql_thread_started
)
{
msg
(
"Starting slave SQL thread
\n
"
);
msg
(
"Starting slave SQL thread"
);
xb_mysql_query
(
mysql_connection
,
xb_mysql_query
(
mysql_connection
,
"START SLAVE SQL_THREAD"
,
false
);
"START SLAVE SQL_THREAD"
,
false
);
}
}
...
@@ -1540,12 +1530,12 @@ bool backup_finish()
...
@@ -1540,12 +1530,12 @@ bool backup_finish()
rocksdb_backup_checkpoint
();
rocksdb_backup_checkpoint
();
}
}
msg
_ts
(
"Backup created in directory '%s'
\n
"
,
xtrabackup_target_dir
);
msg
(
"Backup created in directory '%s'
"
,
xtrabackup_target_dir
);
if
(
mysql_binlog_position
!=
NULL
)
{
if
(
mysql_binlog_position
!=
NULL
)
{
msg
(
"MySQL binlog position: %s
\n
"
,
mysql_binlog_position
);
msg
(
"MySQL binlog position: %s"
,
mysql_binlog_position
);
}
}
if
(
mysql_slave_position
&&
opt_slave_info
)
{
if
(
mysql_slave_position
&&
opt_slave_info
)
{
msg
(
"MySQL slave binlog position: %s
\n
"
,
msg
(
"MySQL slave binlog position: %s"
,
mysql_slave_position
);
mysql_slave_position
);
}
}
...
@@ -1605,7 +1595,7 @@ ibx_copy_incremental_over_full()
...
@@ -1605,7 +1595,7 @@ ibx_copy_incremental_over_full()
if
(
!
(
ret
=
copy_file
(
ds_data
,
node
.
filepath
,
if
(
!
(
ret
=
copy_file
(
ds_data
,
node
.
filepath
,
node
.
filepath_rel
,
1
)))
{
node
.
filepath_rel
,
1
)))
{
msg
(
"Failed to copy file %s
\n
"
,
msg
(
"Failed to copy file %s"
,
node
.
filepath
);
node
.
filepath
);
goto
cleanup
;
goto
cleanup
;
}
}
...
@@ -1745,7 +1735,7 @@ copy_back()
...
@@ -1745,7 +1735,7 @@ copy_back()
/* cd to backup directory */
/* cd to backup directory */
if
(
my_setwd
(
xtrabackup_target_dir
,
MYF
(
MY_WME
)))
if
(
my_setwd
(
xtrabackup_target_dir
,
MYF
(
MY_WME
)))
{
{
msg
(
"
cannot my_setwd %s
\n
"
,
xtrabackup_target_dir
);
msg
(
"
Can't my_setwd %s
"
,
xtrabackup_target_dir
);
return
(
false
);
return
(
false
);
}
}
...
@@ -1758,7 +1748,7 @@ copy_back()
...
@@ -1758,7 +1748,7 @@ copy_back()
srv_sys_space
.
set_path
(
"."
);
srv_sys_space
.
set_path
(
"."
);
if
(
!
srv_sys_space
.
parse_params
(
innobase_data_file_path
,
true
))
{
if
(
!
srv_sys_space
.
parse_params
(
innobase_data_file_path
,
true
))
{
msg
(
"syntax error in innodb_data_file_path
\n
"
);
msg
(
"syntax error in innodb_data_file_path"
);
return
(
false
);
return
(
false
);
}
}
...
@@ -1872,12 +1862,12 @@ copy_back()
...
@@ -1872,12 +1862,12 @@ copy_back()
snprintf
(
path
,
sizeof
(
path
),
"%s/%s"
,
snprintf
(
path
,
sizeof
(
path
),
"%s/%s"
,
mysql_data_home
,
node
.
filepath_rel
);
mysql_data_home
,
node
.
filepath_rel
);
msg
_ts
(
"[%02u] Creating directory %s
\n
"
,
1
,
path
);
msg
(
"Creating directory %s"
,
path
);
if
(
mkdirp
(
path
,
0777
,
MYF
(
0
))
<
0
)
{
if
(
mkdirp
(
path
,
0777
,
MYF
(
0
))
<
0
)
{
char
errbuf
[
MYSYS_STRERROR_SIZE
];
char
errbuf
[
MYSYS_STRERROR_SIZE
];
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
my_strerror
(
errbuf
,
sizeof
(
errbuf
),
my_errno
);
msg
(
"Can not create directory %s: %s
\n
"
,
msg
(
"Can not create directory %s: %s"
,
path
,
errbuf
);
path
,
errbuf
);
ret
=
false
;
ret
=
false
;
...
@@ -1885,7 +1875,7 @@ copy_back()
...
@@ -1885,7 +1875,7 @@ copy_back()
}
}
msg
_ts
(
"[%02u] ...done."
,
1
);
msg
(
" ...done."
);
continue
;
continue
;
}
}
...
@@ -1995,14 +1985,14 @@ decrypt_decompress_file(const char *filepath, uint thread_n)
...
@@ -1995,14 +1985,14 @@ decrypt_decompress_file(const char *filepath, uint thread_n)
if
(
needs_action
)
{
if
(
needs_action
)
{
msg
_ts
(
"[%02u] %s
\n
"
,
thread_n
,
message
.
str
().
c_str
());
msg
(
thread_n
,
"%s
\n
"
,
message
.
str
().
c_str
());
if
(
system
(
cmd
.
str
().
c_str
())
!=
0
)
{
if
(
system
(
cmd
.
str
().
c_str
())
!=
0
)
{
return
(
false
);
return
(
false
);
}
}
if
(
opt_remove_original
)
{
if
(
opt_remove_original
)
{
msg
_ts
(
"[%02u] removing %s
\n
"
,
thread_n
,
filepath
);
msg
(
thread_n
,
"Removing %s"
,
filepath
);
if
(
my_delete
(
filepath
,
MYF
(
MY_WME
))
!=
0
)
{
if
(
my_delete
(
filepath
,
MYF
(
MY_WME
))
!=
0
)
{
return
(
false
);
return
(
false
);
}
}
...
@@ -2065,7 +2055,7 @@ decrypt_decompress()
...
@@ -2065,7 +2055,7 @@ decrypt_decompress()
/* cd to backup directory */
/* cd to backup directory */
if
(
my_setwd
(
xtrabackup_target_dir
,
MYF
(
MY_WME
)))
if
(
my_setwd
(
xtrabackup_target_dir
,
MYF
(
MY_WME
)))
{
{
msg
(
"
cannot my_setwd %s
\n
"
,
xtrabackup_target_dir
);
msg
(
"
Can't my_setwd %s
"
,
xtrabackup_target_dir
);
return
(
false
);
return
(
false
);
}
}
...
@@ -2215,8 +2205,7 @@ static void copy_or_move_dir(const char *from, const char *to, bool do_copy, boo
...
@@ -2215,8 +2205,7 @@ static void copy_or_move_dir(const char *from, const char *to, bool do_copy, boo
rc
=
make_hardlink
(
from_path
,
to_path
);
rc
=
make_hardlink
(
from_path
,
to_path
);
if
(
rc
)
if
(
rc
)
{
{
msg_ts
(
"[%02u] Creating hardlink from %s to %s
\n
"
,
msg
(
"Creating hardlink from %s to %s"
,
from_path
,
to_path
);
1
,
from_path
,
to_path
);
}
}
else
else
{
{
...
@@ -2250,14 +2239,14 @@ static void copy_or_move_dir(const char *from, const char *to, bool do_copy, boo
...
@@ -2250,14 +2239,14 @@ static void copy_or_move_dir(const char *from, const char *to, bool do_copy, boo
*/
*/
static
void
rocksdb_lock_checkpoint
()
static
void
rocksdb_lock_checkpoint
()
{
{
msg
_ts
(
"Obtaining rocksdb checkpoint lock.
\n
"
);
msg
(
"Obtaining rocksdb checkpoint lock.
"
);
MYSQL_RES
*
res
=
MYSQL_RES
*
res
=
xb_mysql_query
(
mysql_connection
,
"SELECT GET_LOCK('mariabackup_rocksdb_checkpoint',3600)"
,
true
,
true
);
xb_mysql_query
(
mysql_connection
,
"SELECT GET_LOCK('mariabackup_rocksdb_checkpoint',3600)"
,
true
,
true
);
MYSQL_ROW
r
=
mysql_fetch_row
(
res
);
MYSQL_ROW
r
=
mysql_fetch_row
(
res
);
if
(
r
&&
r
[
0
]
&&
strcmp
(
r
[
0
],
"1"
))
if
(
r
&&
r
[
0
]
&&
strcmp
(
r
[
0
],
"1"
))
{
{
msg
_ts
(
"Could not obtain rocksdb checkpont lock
\n
"
);
msg
(
"Could not obtain rocksdb checkpont lock.
"
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
mysql_free_result
(
res
);
mysql_free_result
(
res
);
...
@@ -2311,7 +2300,7 @@ static void rocksdb_create_checkpoint()
...
@@ -2311,7 +2300,7 @@ static void rocksdb_create_checkpoint()
if
(
!
access
(
rocksdb_checkpoint_dir
,
0
))
if
(
!
access
(
rocksdb_checkpoint_dir
,
0
))
{
{
msg
_ts
(
"Removing rocksdb checkpoint from previous backup attempt.
\n
"
);
msg
(
"Removing rocksdb checkpoint from previous backup attempt.
"
);
rocksdb_remove_checkpoint_directory
();
rocksdb_remove_checkpoint_directory
();
}
}
...
@@ -2327,14 +2316,14 @@ static void rocksdb_create_checkpoint()
...
@@ -2327,14 +2316,14 @@ static void rocksdb_create_checkpoint()
*/
*/
static
void
rocksdb_backup_checkpoint
()
static
void
rocksdb_backup_checkpoint
()
{
{
msg
_ts
(
"Backing up rocksdb files.
\n
"
);
msg
(
"Backing up rocksdb files.
"
);
char
rocksdb_backup_dir
[
FN_REFLEN
];
char
rocksdb_backup_dir
[
FN_REFLEN
];
snprintf
(
rocksdb_backup_dir
,
sizeof
(
rocksdb_backup_dir
),
"%s/"
ROCKSDB_BACKUP_DIR
,
xtrabackup_target_dir
);
snprintf
(
rocksdb_backup_dir
,
sizeof
(
rocksdb_backup_dir
),
"%s/"
ROCKSDB_BACKUP_DIR
,
xtrabackup_target_dir
);
bool
backup_to_directory
=
xtrabackup_backup
&&
xtrabackup_stream_fmt
==
XB_STREAM_FMT_NONE
;
bool
backup_to_directory
=
xtrabackup_backup
&&
xtrabackup_stream_fmt
==
XB_STREAM_FMT_NONE
;
if
(
backup_to_directory
)
if
(
backup_to_directory
)
{
{
if
(
my_mkdir
(
rocksdb_backup_dir
,
0777
,
MYF
(
0
))){
if
(
my_mkdir
(
rocksdb_backup_dir
,
0777
,
MYF
(
0
))){
msg
_ts
(
"Can't create rocksdb backup directory %s
\n
"
,
rocksdb_backup_dir
);
msg
(
"Can't create rocksdb backup directory %s
"
,
rocksdb_backup_dir
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
...
extra/mariabackup/backup_mysql.cc
View file @
a8a27e65
...
@@ -104,7 +104,7 @@ xb_mysql_connect()
...
@@ -104,7 +104,7 @@ xb_mysql_connect()
sprintf
(
mysql_port_str
,
"%d"
,
opt_port
);
sprintf
(
mysql_port_str
,
"%d"
,
opt_port
);
if
(
connection
==
NULL
)
{
if
(
connection
==
NULL
)
{
msg
(
"Failed to init MySQL struct: %s.
\n
"
,
msg
(
"Failed to init MySQL struct: %s."
,
mysql_error
(
connection
));
mysql_error
(
connection
));
return
(
NULL
);
return
(
NULL
);
}
}
...
@@ -120,8 +120,8 @@ xb_mysql_connect()
...
@@ -120,8 +120,8 @@ xb_mysql_connect()
mysql_options
(
connection
,
MYSQL_OPT_PROTOCOL
,
&
opt_protocol
);
mysql_options
(
connection
,
MYSQL_OPT_PROTOCOL
,
&
opt_protocol
);
mysql_options
(
connection
,
MYSQL_SET_CHARSET_NAME
,
"utf8"
);
mysql_options
(
connection
,
MYSQL_SET_CHARSET_NAME
,
"utf8"
);
msg
_ts
(
"Connecting to MySQL server host: %s, user: %s, password: %s, "
msg
(
"Connecting to MySQL server host: %s, user: %s, password: %s, "
"port: %s, socket: %s
\n
"
,
opt_host
?
opt_host
:
"localhost"
,
"port: %s, socket: %s"
,
opt_host
?
opt_host
:
"localhost"
,
opt_user
?
opt_user
:
"not set"
,
opt_user
?
opt_user
:
"not set"
,
opt_password
?
"set"
:
"not set"
,
opt_password
?
"set"
:
"not set"
,
opt_port
!=
0
?
mysql_port_str
:
"not set"
,
opt_port
!=
0
?
mysql_port_str
:
"not set"
,
...
@@ -147,8 +147,7 @@ xb_mysql_connect()
...
@@ -147,8 +147,7 @@ xb_mysql_connect()
opt_password
,
opt_password
,
""
/*database*/
,
opt_port
,
""
/*database*/
,
opt_port
,
opt_socket
,
0
))
{
opt_socket
,
0
))
{
msg
(
"Failed to connect to MySQL server: %s.
\n
"
,
msg
(
"Failed to connect to MySQL server: %s."
,
mysql_error
(
connection
));
mysql_error
(
connection
));
mysql_close
(
connection
);
mysql_close
(
connection
);
return
(
NULL
);
return
(
NULL
);
}
}
...
@@ -168,8 +167,7 @@ xb_mysql_query(MYSQL *connection, const char *query, bool use_result,
...
@@ -168,8 +167,7 @@ xb_mysql_query(MYSQL *connection, const char *query, bool use_result,
MYSQL_RES
*
mysql_result
=
NULL
;
MYSQL_RES
*
mysql_result
=
NULL
;
if
(
mysql_query
(
connection
,
query
))
{
if
(
mysql_query
(
connection
,
query
))
{
msg
(
"Error: failed to execute query %s: %s
\n
"
,
query
,
msg
(
"Error: failed to execute query %s: %s"
,
query
,
mysql_error
(
connection
));
mysql_error
(
connection
));
if
(
die_on_error
)
{
if
(
die_on_error
)
{
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -179,7 +177,7 @@ xb_mysql_query(MYSQL *connection, const char *query, bool use_result,
...
@@ -179,7 +177,7 @@ xb_mysql_query(MYSQL *connection, const char *query, bool use_result,
/* store result set on client if there is a result */
/* store result set on client if there is a result */
if
(
mysql_field_count
(
connection
)
>
0
)
{
if
(
mysql_field_count
(
connection
)
>
0
)
{
if
((
mysql_result
=
mysql_store_result
(
connection
))
==
NULL
)
{
if
((
mysql_result
=
mysql_store_result
(
connection
))
==
NULL
)
{
msg
(
"Error: failed to fetch query result %s: %s
\n
"
,
msg
(
"Error: failed to fetch query result %s: %s"
,
query
,
mysql_error
(
connection
));
query
,
mysql_error
(
connection
));
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -316,11 +314,11 @@ check_server_version(unsigned long version_number,
...
@@ -316,11 +314,11 @@ check_server_version(unsigned long version_number,
msg
(
"Error: Built-in InnoDB in MySQL 5.1 is not "
msg
(
"Error: Built-in InnoDB in MySQL 5.1 is not "
"supported in this release. You can either use "
"supported in this release. You can either use "
"Percona XtraBackup 2.0, or upgrade to InnoDB "
"Percona XtraBackup 2.0, or upgrade to InnoDB "
"plugin.
\n
"
);
"plugin."
);
}
else
if
(
!
version_supported
)
{
}
else
if
(
!
version_supported
)
{
msg
(
"Error: Unsupported server version: '%s'. Please "
msg
(
"Error: Unsupported server version: '%s'. Please "
"report a bug at "
"report a bug at "
"https://bugs.launchpad.net/percona-xtrabackup
\n
"
,
"https://bugs.launchpad.net/percona-xtrabackup"
,
version_string
);
version_string
);
}
}
...
@@ -407,7 +405,7 @@ get_mysql_vars(MYSQL *connection)
...
@@ -407,7 +405,7 @@ get_mysql_vars(MYSQL *connection)
opt_binlog_info
==
BINLOG_INFO_LOCKLESS
)
{
opt_binlog_info
==
BINLOG_INFO_LOCKLESS
)
{
msg
(
"Error: --binlog-info=LOCKLESS is not supported by the "
msg
(
"Error: --binlog-info=LOCKLESS is not supported by the "
"server
\n
"
);
"server"
);
return
(
false
);
return
(
false
);
}
}
...
@@ -445,7 +443,7 @@ get_mysql_vars(MYSQL *connection)
...
@@ -445,7 +443,7 @@ get_mysql_vars(MYSQL *connection)
have_gtid_slave
=
true
;
have_gtid_slave
=
true
;
}
}
msg
(
"Using server version %s
\n
"
,
version_var
);
msg
(
"Using server version %s"
,
version_var
);
if
(
!
(
ret
=
detect_mysql_capabilities_for_backup
()))
{
if
(
!
(
ret
=
detect_mysql_capabilities_for_backup
()))
{
goto
out
;
goto
out
;
...
@@ -455,17 +453,17 @@ get_mysql_vars(MYSQL *connection)
...
@@ -455,17 +453,17 @@ get_mysql_vars(MYSQL *connection)
if
(
check_if_param_set
(
"datadir"
))
{
if
(
check_if_param_set
(
"datadir"
))
{
if
(
!
directory_exists
(
mysql_data_home
,
false
))
{
if
(
!
directory_exists
(
mysql_data_home
,
false
))
{
msg
(
"Warning: option 'datadir' points to "
msg
(
"Warning: option 'datadir' points to "
"nonexistent directory '%s'
\n
"
,
mysql_data_home
);
"nonexistent directory '%s'"
,
mysql_data_home
);
}
}
if
(
!
directory_exists
(
datadir_var
,
false
))
{
if
(
!
directory_exists
(
datadir_var
,
false
))
{
msg
(
"Warning: MySQL variable 'datadir' points to "
msg
(
"Warning: MySQL variable 'datadir' points to "
"nonexistent directory '%s'
\n
"
,
datadir_var
);
"nonexistent directory '%s'"
,
datadir_var
);
}
}
if
(
!
equal_paths
(
mysql_data_home
,
datadir_var
))
{
if
(
!
equal_paths
(
mysql_data_home
,
datadir_var
))
{
msg
(
"Warning: option 'datadir' has different "
msg
(
"Warning: option 'datadir' has different "
"values:
\n
"
"values:
\n
"
" '%s' in defaults file
\n
"
" '%s' in defaults file
\n
"
" '%s' in SHOW VARIABLES
\n
"
,
" '%s' in SHOW VARIABLES"
,
mysql_data_home
,
datadir_var
);
mysql_data_home
,
datadir_var
);
}
}
}
}
...
@@ -564,14 +562,14 @@ detect_mysql_capabilities_for_backup()
...
@@ -564,14 +562,14 @@ detect_mysql_capabilities_for_backup()
if
(
opt_galera_info
&&
!
have_galera_enabled
)
{
if
(
opt_galera_info
&&
!
have_galera_enabled
)
{
msg
(
"--galera-info is specified on the command "
msg
(
"--galera-info is specified on the command "
"line, but the server does not support Galera "
"line, but the server does not support Galera "
"replication. Ignoring the option.
\n
"
);
"replication. Ignoring the option."
);
opt_galera_info
=
false
;
opt_galera_info
=
false
;
}
}
if
(
opt_slave_info
&&
have_multi_threaded_slave
&&
if
(
opt_slave_info
&&
have_multi_threaded_slave
&&
!
have_gtid_slave
)
{
!
have_gtid_slave
)
{
msg
(
"The --slave-info option requires GTID enabled for a "
msg
(
"The --slave-info option requires GTID enabled for a "
"multi-threaded slave.
\n
"
);
"multi-threaded slave."
);
return
(
false
);
return
(
false
);
}
}
...
@@ -618,7 +616,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
...
@@ -618,7 +616,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
const
MYSQL_ROW
row
=
mysql_fetch_row
(
mysql_result
);
const
MYSQL_ROW
row
=
mysql_fetch_row
(
mysql_result
);
if
(
row
)
{
if
(
row
)
{
*
incremental_lsn
=
strtoull
(
row
[
0
],
NULL
,
10
);
*
incremental_lsn
=
strtoull
(
row
[
0
],
NULL
,
10
);
msg
(
"Found and using lsn: "
LSN_PF
" for %s %s
\n
"
,
msg
(
"Found and using lsn: "
LSN_PF
" for %s %s"
,
*
incremental_lsn
,
*
incremental_lsn
,
opt_incremental_history_uuid
?
"uuid"
:
"name"
,
opt_incremental_history_uuid
?
"uuid"
:
"name"
,
opt_incremental_history_uuid
?
opt_incremental_history_uuid
?
...
@@ -626,7 +624,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
...
@@ -626,7 +624,7 @@ select_incremental_lsn_from_history(lsn_t *incremental_lsn)
opt_incremental_history_name
);
opt_incremental_history_name
);
}
else
{
}
else
{
msg
(
"Error while attempting to find history record "
msg
(
"Error while attempting to find history record "
"for %s %s
\n
"
,
"for %s %s"
,
opt_incremental_history_uuid
?
"uuid"
:
"name"
,
opt_incremental_history_uuid
?
"uuid"
:
"name"
,
opt_incremental_history_uuid
?
opt_incremental_history_uuid
?
opt_incremental_history_uuid
:
opt_incremental_history_uuid
:
...
@@ -736,7 +734,7 @@ have_queries_to_wait_for(MYSQL *connection, uint threshold)
...
@@ -736,7 +734,7 @@ have_queries_to_wait_for(MYSQL *connection, uint threshold)
&&
duration
>=
(
int
)
threshold
&&
duration
>=
(
int
)
threshold
&&
((
all_queries
&&
is_query
(
info
))
&&
((
all_queries
&&
is_query
(
info
))
||
is_update_query
(
info
)))
{
||
is_update_query
(
info
)))
{
msg
_ts
(
"Waiting for query %s (duration %d sec): %s"
,
msg
(
"Waiting for query %s (duration %d sec): %s"
,
id
,
duration
,
info
);
id
,
duration
,
info
);
have_to_wait
=
true
;
have_to_wait
=
true
;
break
;
break
;
...
@@ -765,7 +763,7 @@ kill_long_queries(MYSQL *connection, time_t timeout)
...
@@ -765,7 +763,7 @@ kill_long_queries(MYSQL *connection, time_t timeout)
(
time_t
)
duration
>=
timeout
&&
(
time_t
)
duration
>=
timeout
&&
((
all_queries
&&
is_query
(
info
))
||
((
all_queries
&&
is_query
(
info
))
||
is_select_query
(
info
)))
{
is_select_query
(
info
)))
{
msg
_ts
(
"Killing query %s (duration %d sec): %s
\n
"
,
msg
(
"Killing query %s (duration %d sec): %s
"
,
id
,
(
int
)
duration
,
info
);
id
,
(
int
)
duration
,
info
);
snprintf
(
kill_stmt
,
sizeof
(
kill_stmt
),
snprintf
(
kill_stmt
,
sizeof
(
kill_stmt
),
"KILL %s"
,
id
);
"KILL %s"
,
id
);
...
@@ -784,8 +782,8 @@ wait_for_no_updates(MYSQL *connection, uint timeout, uint threshold)
...
@@ -784,8 +782,8 @@ wait_for_no_updates(MYSQL *connection, uint timeout, uint threshold)
start_time
=
time
(
NULL
);
start_time
=
time
(
NULL
);
msg
_ts
(
"Waiting %u seconds for queries running longer than %u seconds "
msg
(
"Waiting %u seconds for queries running longer than %u seconds "
"to finish
\n
"
,
timeout
,
threshold
);
"to finish"
,
timeout
,
threshold
);
while
(
time
(
NULL
)
<=
(
time_t
)(
start_time
+
timeout
))
{
while
(
time
(
NULL
)
<=
(
time_t
)(
start_time
+
timeout
))
{
if
(
!
have_queries_to_wait_for
(
connection
,
threshold
))
{
if
(
!
have_queries_to_wait_for
(
connection
,
threshold
))
{
...
@@ -794,7 +792,7 @@ wait_for_no_updates(MYSQL *connection, uint timeout, uint threshold)
...
@@ -794,7 +792,7 @@ wait_for_no_updates(MYSQL *connection, uint timeout, uint threshold)
os_thread_sleep
(
1000000
);
os_thread_sleep
(
1000000
);
}
}
msg
_ts
(
"Unable to obtain lock. Please try again later."
);
msg
(
"Unable to obtain lock. Please try again later."
);
return
(
false
);
return
(
false
);
}
}
...
@@ -812,7 +810,7 @@ kill_query_thread(
...
@@ -812,7 +810,7 @@ kill_query_thread(
os_event_set
(
kill_query_thread_started
);
os_event_set
(
kill_query_thread_started
);
msg
_ts
(
"Kill query timeout %d seconds.
\n
"
,
msg
(
"Kill query timeout %d seconds.
"
,
opt_kill_long_queries_timeout
);
opt_kill_long_queries_timeout
);
while
(
time
(
NULL
)
-
start_time
<
while
(
time
(
NULL
)
-
start_time
<
...
@@ -824,7 +822,7 @@ kill_query_thread(
...
@@ -824,7 +822,7 @@ kill_query_thread(
}
}
if
((
mysql
=
xb_mysql_connect
())
==
NULL
)
{
if
((
mysql
=
xb_mysql_connect
())
==
NULL
)
{
msg
(
"Error: kill query thread failed
\n
"
);
msg
(
"Error: kill query thread failed"
);
goto
stop_thread
;
goto
stop_thread
;
}
}
...
@@ -839,7 +837,7 @@ kill_query_thread(
...
@@ -839,7 +837,7 @@ kill_query_thread(
mysql_close
(
mysql
);
mysql_close
(
mysql
);
stop_thread:
stop_thread:
msg
_ts
(
"Kill query thread stopped
\n
"
);
msg
(
"Kill query thread stopped
"
);
os_event_set
(
kill_query_thread_stopped
);
os_event_set
(
kill_query_thread_stopped
);
...
@@ -889,7 +887,7 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
...
@@ -889,7 +887,7 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
{
{
MYSQL
*
mysql
;
MYSQL
*
mysql
;
if
((
mysql
=
xb_mysql_connect
())
==
NULL
)
{
if
((
mysql
=
xb_mysql_connect
())
==
NULL
)
{
msg
(
"Error: kill mdl waiters thread failed to connect
\n
"
);
msg
(
"Error: kill mdl waiters thread failed to connect"
);
goto
stop_thread
;
goto
stop_thread
;
}
}
...
@@ -908,11 +906,11 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
...
@@ -908,11 +906,11 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
if
(
row
[
1
]
&&
!
strcmp
(
row
[
1
],
"Killed"
))
if
(
row
[
1
]
&&
!
strcmp
(
row
[
1
],
"Killed"
))
continue
;
continue
;
msg
_ts
(
"Killing MDL waiting %s ('%s') on connection %s
\n
"
,
msg
(
"Killing MDL waiting %s ('%s') on connection %s
"
,
row
[
1
],
row
[
2
],
row
[
0
]);
row
[
1
],
row
[
2
],
row
[
0
]);
snprintf
(
query
,
sizeof
(
query
),
"KILL QUERY %s"
,
row
[
0
]);
snprintf
(
query
,
sizeof
(
query
),
"KILL QUERY %s"
,
row
[
0
]);
if
(
mysql_query
(
mysql
,
query
)
&&
(
mysql_errno
(
mysql
)
!=
ER_NO_SUCH_THREAD
))
{
if
(
mysql_query
(
mysql
,
query
)
&&
(
mysql_errno
(
mysql
)
!=
ER_NO_SUCH_THREAD
))
{
msg
(
"Error: failed to execute query %s: %s
\n
"
,
query
,
mysql_error
(
mysql
));
msg
(
"Error: failed to execute query %s: %s"
,
query
,
mysql_error
(
mysql
));
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -922,7 +920,7 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
...
@@ -922,7 +920,7 @@ DECLARE_THREAD(kill_mdl_waiters_thread(void *))
mysql_close
(
mysql
);
mysql_close
(
mysql
);
stop_thread:
stop_thread:
msg
_ts
(
"Kill mdl waiters thread stopped
\n
"
);
msg
(
"Kill mdl waiters thread stopped
"
);
os_event_set
(
mdl_killer_finished_event
);
os_event_set
(
mdl_killer_finished_event
);
os_thread_exit
();
os_thread_exit
();
return
os_thread_ret_t
(
0
);
return
os_thread_ret_t
(
0
);
...
@@ -964,7 +962,7 @@ lock_tables(MYSQL *connection)
...
@@ -964,7 +962,7 @@ lock_tables(MYSQL *connection)
}
}
if
(
have_backup_locks
)
{
if
(
have_backup_locks
)
{
msg
_ts
(
"Executing LOCK TABLES FOR BACKUP...
\n
"
);
msg
(
"Executing LOCK TABLES FOR BACKUP...
"
);
xb_mysql_query
(
connection
,
"LOCK TABLES FOR BACKUP"
,
false
);
xb_mysql_query
(
connection
,
"LOCK TABLES FOR BACKUP"
,
false
);
return
(
true
);
return
(
true
);
}
}
...
@@ -987,7 +985,7 @@ lock_tables(MYSQL *connection)
...
@@ -987,7 +985,7 @@ lock_tables(MYSQL *connection)
compatible with this trick.
compatible with this trick.
*/
*/
msg
_ts
(
"Executing FLUSH NO_WRITE_TO_BINLOG TABLES...
\n
"
);
msg
(
"Executing FLUSH NO_WRITE_TO_BINLOG TABLES...
"
);
xb_mysql_query
(
connection
,
xb_mysql_query
(
connection
,
"FLUSH NO_WRITE_TO_BINLOG TABLES"
,
false
);
"FLUSH NO_WRITE_TO_BINLOG TABLES"
,
false
);
...
@@ -1000,7 +998,7 @@ lock_tables(MYSQL *connection)
...
@@ -1000,7 +998,7 @@ lock_tables(MYSQL *connection)
}
}
}
}
msg
_ts
(
"Executing FLUSH TABLES WITH READ LOCK...
\n
"
);
msg
(
"Executing FLUSH TABLES WITH READ LOCK...
"
);
if
(
opt_kill_long_queries_timeout
)
{
if
(
opt_kill_long_queries_timeout
)
{
start_query_killer
();
start_query_killer
();
...
@@ -1033,7 +1031,7 @@ bool
...
@@ -1033,7 +1031,7 @@ bool
lock_binlog_maybe
(
MYSQL
*
connection
)
lock_binlog_maybe
(
MYSQL
*
connection
)
{
{
if
(
have_backup_locks
&&
!
opt_no_lock
&&
!
binlog_locked
)
{
if
(
have_backup_locks
&&
!
opt_no_lock
&&
!
binlog_locked
)
{
msg
_ts
(
"Executing LOCK BINLOG FOR BACKUP...
\n
"
);
msg
(
"Executing LOCK BINLOG FOR BACKUP...
"
);
xb_mysql_query
(
connection
,
"LOCK BINLOG FOR BACKUP"
,
false
);
xb_mysql_query
(
connection
,
"LOCK BINLOG FOR BACKUP"
,
false
);
binlog_locked
=
true
;
binlog_locked
=
true
;
...
@@ -1052,20 +1050,20 @@ void
...
@@ -1052,20 +1050,20 @@ void
unlock_all
(
MYSQL
*
connection
)
unlock_all
(
MYSQL
*
connection
)
{
{
if
(
opt_debug_sleep_before_unlock
)
{
if
(
opt_debug_sleep_before_unlock
)
{
msg
_ts
(
"Debug sleep for %u seconds
\n
"
,
msg
(
"Debug sleep for %u seconds
"
,
opt_debug_sleep_before_unlock
);
opt_debug_sleep_before_unlock
);
os_thread_sleep
(
opt_debug_sleep_before_unlock
*
1000
);
os_thread_sleep
(
opt_debug_sleep_before_unlock
*
1000
);
}
}
if
(
binlog_locked
)
{
if
(
binlog_locked
)
{
msg
_ts
(
"Executing UNLOCK BINLOG
\n
"
);
msg
(
"Executing UNLOCK BINLOG
"
);
xb_mysql_query
(
connection
,
"UNLOCK BINLOG"
,
false
);
xb_mysql_query
(
connection
,
"UNLOCK BINLOG"
,
false
);
}
}
msg
_ts
(
"Executing UNLOCK TABLES
\n
"
);
msg
(
"Executing UNLOCK TABLES
"
);
xb_mysql_query
(
connection
,
"UNLOCK TABLES"
,
false
);
xb_mysql_query
(
connection
,
"UNLOCK TABLES"
,
false
);
msg
_ts
(
"All tables unlocked
\n
"
);
msg
(
"All tables unlocked
"
);
}
}
...
@@ -1116,7 +1114,7 @@ wait_for_safe_slave(MYSQL *connection)
...
@@ -1116,7 +1114,7 @@ wait_for_safe_slave(MYSQL *connection)
if
(
!
(
read_master_log_pos
&&
slave_sql_running
))
{
if
(
!
(
read_master_log_pos
&&
slave_sql_running
))
{
msg
(
"Not checking slave open temp tables for "
msg
(
"Not checking slave open temp tables for "
"--safe-slave-backup because host is not a slave
\n
"
);
"--safe-slave-backup because host is not a slave"
);
goto
cleanup
;
goto
cleanup
;
}
}
...
@@ -1130,36 +1128,36 @@ wait_for_safe_slave(MYSQL *connection)
...
@@ -1130,36 +1128,36 @@ wait_for_safe_slave(MYSQL *connection)
}
}
open_temp_tables
=
get_open_temp_tables
(
connection
);
open_temp_tables
=
get_open_temp_tables
(
connection
);
msg
_ts
(
"Slave open temp tables: %d
\n
"
,
open_temp_tables
);
msg
(
"Slave open temp tables: %d
"
,
open_temp_tables
);
while
(
open_temp_tables
&&
n_attempts
--
)
{
while
(
open_temp_tables
&&
n_attempts
--
)
{
msg
_ts
(
"Starting slave SQL thread, waiting %d seconds, then "
msg
(
"Starting slave SQL thread, waiting %d seconds, then "
"checking Slave_open_temp_tables again (%d attempts "
"checking Slave_open_temp_tables again (%d attempts "
"remaining)...
\n
"
,
sleep_time
,
n_attempts
);
"remaining)..."
,
sleep_time
,
n_attempts
);
xb_mysql_query
(
connection
,
"START SLAVE SQL_THREAD"
,
false
);
xb_mysql_query
(
connection
,
"START SLAVE SQL_THREAD"
,
false
);
os_thread_sleep
(
sleep_time
*
1000000
);
os_thread_sleep
(
sleep_time
*
1000000
);
xb_mysql_query
(
connection
,
"STOP SLAVE SQL_THREAD"
,
false
);
xb_mysql_query
(
connection
,
"STOP SLAVE SQL_THREAD"
,
false
);
open_temp_tables
=
get_open_temp_tables
(
connection
);
open_temp_tables
=
get_open_temp_tables
(
connection
);
msg
_ts
(
"Slave open temp tables: %d
\n
"
,
open_temp_tables
);
msg
(
"Slave open temp tables: %d
"
,
open_temp_tables
);
}
}
/* Restart the slave if it was running at start */
/* Restart the slave if it was running at start */
if
(
open_temp_tables
==
0
)
{
if
(
open_temp_tables
==
0
)
{
msg
_ts
(
"Slave is safe to backup
\n
"
);
msg
(
"Slave is safe to backup
"
);
goto
cleanup
;
goto
cleanup
;
}
}
result
=
false
;
result
=
false
;
if
(
sql_thread_started
)
{
if
(
sql_thread_started
)
{
msg
_ts
(
"Restarting slave SQL thread.
\n
"
);
msg
(
"Restarting slave SQL thread.
"
);
xb_mysql_query
(
connection
,
"START SLAVE SQL_THREAD"
,
false
);
xb_mysql_query
(
connection
,
"START SLAVE SQL_THREAD"
,
false
);
}
}
msg
_ts
(
"Slave_open_temp_tables did not become zero after "
msg
(
"Slave_open_temp_tables did not become zero after "
"%d seconds
\n
"
,
opt_safe_slave_backup_timeout
);
"%d seconds"
,
opt_safe_slave_backup_timeout
);
cleanup:
cleanup:
free_mysql_variables
(
status
);
free_mysql_variables
(
status
);
...
@@ -1201,10 +1199,8 @@ write_slave_info(MYSQL *connection)
...
@@ -1201,10 +1199,8 @@ write_slave_info(MYSQL *connection)
if
(
master
==
NULL
||
filename
==
NULL
||
position
==
NULL
)
{
if
(
master
==
NULL
||
filename
==
NULL
||
position
==
NULL
)
{
msg
(
"Failed to get master binlog coordinates "
msg
(
"Failed to get master binlog coordinates "
"from SHOW SLAVE STATUS
\n
"
);
"from SHOW SLAVE STATUS.This means that the server is not a "
msg
(
"This means that the server is not a "
"replication slave. Ignoring the --slave-info option"
);
"replication slave. Ignoring the --slave-info "
"option
\n
"
);
/* we still want to continue the backup */
/* we still want to continue the backup */
result
=
true
;
result
=
true
;
goto
cleanup
;
goto
cleanup
;
...
@@ -1287,7 +1283,7 @@ write_galera_info(MYSQL *connection)
...
@@ -1287,7 +1283,7 @@ write_galera_info(MYSQL *connection)
if
((
state_uuid
==
NULL
&&
state_uuid55
==
NULL
)
if
((
state_uuid
==
NULL
&&
state_uuid55
==
NULL
)
||
(
last_committed
==
NULL
&&
last_committed55
==
NULL
))
{
||
(
last_committed
==
NULL
&&
last_committed55
==
NULL
))
{
msg
(
"Failed to get master wsrep state from SHOW STATUS.
\n
"
);
msg
(
"Failed to get master wsrep state from SHOW STATUS."
);
result
=
false
;
result
=
false
;
goto
cleanup
;
goto
cleanup
;
}
}
...
@@ -1800,9 +1796,9 @@ mdl_lock_table(ulint space_id)
...
@@ -1800,9 +1796,9 @@ mdl_lock_table(ulint space_id)
std
::
ostringstream
lock_query
;
std
::
ostringstream
lock_query
;
lock_query
<<
"SELECT 1 FROM "
<<
full_table_name
<<
" LIMIT 0"
;
lock_query
<<
"SELECT 1 FROM "
<<
full_table_name
<<
" LIMIT 0"
;
msg
_ts
(
"Locking MDL for %s
\n
"
,
full_table_name
.
c_str
());
msg
(
"Locking MDL for %s
"
,
full_table_name
.
c_str
());
if
(
mysql_query
(
mdl_con
,
lock_query
.
str
().
c_str
()))
{
if
(
mysql_query
(
mdl_con
,
lock_query
.
str
().
c_str
()))
{
msg
_ts
(
"Warning : locking MDL failed for space id %zu, name %s
\n
"
,
space_id
,
full_table_name
.
c_str
());
msg
(
"Warning : locking MDL failed for space id %zu, name %s
"
,
space_id
,
full_table_name
.
c_str
());
}
else
{
}
else
{
MYSQL_RES
*
r
=
mysql_store_result
(
mdl_con
);
MYSQL_RES
*
r
=
mysql_store_result
(
mdl_con
);
mysql_free_result
(
r
);
mysql_free_result
(
r
);
...
@@ -1812,7 +1808,7 @@ mdl_lock_table(ulint space_id)
...
@@ -1812,7 +1808,7 @@ mdl_lock_table(ulint space_id)
void
void
mdl_unlock_all
()
mdl_unlock_all
()
{
{
msg
_ts
(
"Unlocking MDL for all tables
\n
"
);
msg
(
"Unlocking MDL for all tables
"
);
xb_mysql_query
(
mdl_con
,
"COMMIT"
,
false
,
true
);
xb_mysql_query
(
mdl_con
,
"COMMIT"
,
false
,
true
);
mysql_close
(
mdl_con
);
mysql_close
(
mdl_con
);
spaceid_to_tablename
.
clear
();
spaceid_to_tablename
.
clear
();
...
...
extra/mariabackup/changed_page_bitmap.cc
View file @
a8a27e65
...
@@ -202,7 +202,7 @@ log_online_read_bitmap_page(
...
@@ -202,7 +202,7 @@ log_online_read_bitmap_page(
/* The following call prints an error message */
/* The following call prints an error message */
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"InnoDB: Warning: failed reading changed page bitmap "
msg
(
"InnoDB: Warning: failed reading changed page bitmap "
"file
\'
%s
\'
\n
"
,
bitmap_file
->
name
);
"file
\'
%s
\'
"
,
bitmap_file
->
name
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -281,7 +281,7 @@ log_online_setup_bitmap_file_range(
...
@@ -281,7 +281,7 @@ log_online_setup_bitmap_file_range(
bitmap_dir
=
os_file_opendir
(
srv_data_home
,
FALSE
);
bitmap_dir
=
os_file_opendir
(
srv_data_home
,
FALSE
);
if
(
UNIV_UNLIKELY
(
!
bitmap_dir
))
{
if
(
UNIV_UNLIKELY
(
!
bitmap_dir
))
{
msg
(
"InnoDB: Error: failed to open bitmap directory
\'
%s
\'
\n
"
,
msg
(
"InnoDB: Error: failed to open bitmap directory
\'
%s
\'
"
,
srv_data_home
);
srv_data_home
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -331,7 +331,7 @@ log_online_setup_bitmap_file_range(
...
@@ -331,7 +331,7 @@ log_online_setup_bitmap_file_range(
if
(
UNIV_UNLIKELY
(
os_file_closedir
(
bitmap_dir
)))
{
if
(
UNIV_UNLIKELY
(
os_file_closedir
(
bitmap_dir
)))
{
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"InnoDB: Error: cannot close
\'
%s
\'
\n
"
,
srv_data_home
);
msg
(
"InnoDB: Error: cannot close
\'
%s
\'
"
,
srv_data_home
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -348,7 +348,7 @@ log_online_setup_bitmap_file_range(
...
@@ -348,7 +348,7 @@ log_online_setup_bitmap_file_range(
bitmap_dir
=
os_file_opendir
(
srv_data_home
,
FALSE
);
bitmap_dir
=
os_file_opendir
(
srv_data_home
,
FALSE
);
if
(
UNIV_UNLIKELY
(
!
bitmap_dir
))
{
if
(
UNIV_UNLIKELY
(
!
bitmap_dir
))
{
msg
(
"InnoDB: Error: failed to open bitmap directory
\'
%s
\'
\n
"
,
msg
(
"InnoDB: Error: failed to open bitmap directory
\'
%s
\'
"
,
srv_data_home
);
srv_data_home
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -379,7 +379,7 @@ log_online_setup_bitmap_file_range(
...
@@ -379,7 +379,7 @@ log_online_setup_bitmap_file_range(
if
(
UNIV_UNLIKELY
(
array_pos
>=
bitmap_files
->
count
))
{
if
(
UNIV_UNLIKELY
(
array_pos
>=
bitmap_files
->
count
))
{
msg
(
"InnoDB: Error: inconsistent bitmap file "
msg
(
"InnoDB: Error: inconsistent bitmap file "
"directory
\n
"
);
"directory"
);
free
(
bitmap_files
->
files
);
free
(
bitmap_files
->
files
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -399,7 +399,7 @@ log_online_setup_bitmap_file_range(
...
@@ -399,7 +399,7 @@ log_online_setup_bitmap_file_range(
if
(
UNIV_UNLIKELY
(
os_file_closedir
(
bitmap_dir
)))
{
if
(
UNIV_UNLIKELY
(
os_file_closedir
(
bitmap_dir
)))
{
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"InnoDB: Error: cannot close
\'
%s
\'
\n
"
,
srv_data_home
);
msg
(
"InnoDB: Error: cannot close
\'
%s
\'
"
,
srv_data_home
);
free
(
bitmap_files
->
files
);
free
(
bitmap_files
->
files
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -450,7 +450,7 @@ log_online_open_bitmap_file_read_only(
...
@@ -450,7 +450,7 @@ log_online_open_bitmap_file_read_only(
/* Here and below assume that bitmap file names do not
/* Here and below assume that bitmap file names do not
contain apostrophes, thus no need for ut_print_filename(). */
contain apostrophes, thus no need for ut_print_filename(). */
msg
(
"InnoDB: Warning: error opening the changed page "
msg
(
"InnoDB: Warning: error opening the changed page "
"bitmap
\'
%s
\'
\n
"
,
bitmap_file
->
name
);
"bitmap
\'
%s
\'
"
,
bitmap_file
->
name
);
return
success
;
return
success
;
}
}
...
@@ -494,7 +494,7 @@ log_online_diagnose_bitmap_eof(
...
@@ -494,7 +494,7 @@ log_online_diagnose_bitmap_eof(
itself. */
itself. */
msg
(
"InnoDB: Warning: junk at the end of changed "
msg
(
"InnoDB: Warning: junk at the end of changed "
"page bitmap file
\'
%s
\'
.
\n
"
,
bitmap_file
->
name
);
"page bitmap file
\'
%s
\'
."
,
bitmap_file
->
name
);
}
}
if
(
UNIV_UNLIKELY
(
!
last_page_in_run
))
{
if
(
UNIV_UNLIKELY
(
!
last_page_in_run
))
{
...
@@ -505,7 +505,7 @@ log_online_diagnose_bitmap_eof(
...
@@ -505,7 +505,7 @@ log_online_diagnose_bitmap_eof(
for the whole server */
for the whole server */
msg
(
"InnoDB: Warning: changed page bitmap "
msg
(
"InnoDB: Warning: changed page bitmap "
"file
\'
%s
\'
does not contain a complete run "
"file
\'
%s
\'
does not contain a complete run "
"at the end.
\n
"
,
bitmap_file
->
name
);
"at the end."
,
bitmap_file
->
name
);
return
FALSE
;
return
FALSE
;
}
}
}
}
...
@@ -536,7 +536,7 @@ xb_msg_missing_lsn_data(
...
@@ -536,7 +536,7 @@ xb_msg_missing_lsn_data(
lsn_t
missing_interval_end
)
/*!<in: interval end */
lsn_t
missing_interval_end
)
/*!<in: interval end */
{
{
msg
(
"mariabackup: warning: changed page data missing for LSNs between "
msg
(
"mariabackup: warning: changed page data missing for LSNs between "
LSN_PF
" and "
LSN_PF
"
\n
"
,
missing_interval_start
,
LSN_PF
" and "
LSN_PF
,
missing_interval_start
,
missing_interval_end
);
missing_interval_end
);
}
}
...
@@ -614,7 +614,7 @@ xb_page_bitmap_init(void)
...
@@ -614,7 +614,7 @@ xb_page_bitmap_init(void)
msg
(
"mariabackup: incremental backup LSN "
LSN_PF
msg
(
"mariabackup: incremental backup LSN "
LSN_PF
" is larger than than the last checkpoint LSN "
LSN_PF
" is larger than than the last checkpoint LSN "
LSN_PF
"
\n
"
,
bmp_start_lsn
,
bmp_end_lsn
);
,
bmp_start_lsn
,
bmp_end_lsn
);
return
NULL
;
return
NULL
;
}
}
...
@@ -698,7 +698,7 @@ xb_page_bitmap_init(void)
...
@@ -698,7 +698,7 @@ xb_page_bitmap_init(void)
bmp_start_lsn
)))
{
bmp_start_lsn
)))
{
msg
(
"mariabackup: Warning: changed page bitmap file "
msg
(
"mariabackup: Warning: changed page bitmap file "
"
\'
%s
\'
corrupted
\n
"
,
bitmap_file
.
name
);
"
\'
%s
\'
corrupted"
,
bitmap_file
.
name
);
rbt_free
(
result
);
rbt_free
(
result
);
free
(
bitmap_files
.
files
);
free
(
bitmap_files
.
files
);
os_file_close
(
bitmap_file
.
file
);
os_file_close
(
bitmap_file
.
file
);
...
@@ -803,7 +803,7 @@ xb_page_bitmap_init(void)
...
@@ -803,7 +803,7 @@ xb_page_bitmap_init(void)
if
(
UNIV_UNLIKELY
(
!
last_page_ok
))
{
if
(
UNIV_UNLIKELY
(
!
last_page_ok
))
{
msg
(
"mariabackup: warning: changed page bitmap file "
msg
(
"mariabackup: warning: changed page bitmap file "
"
\'
%s
\'
corrupted.
\n
"
,
bitmap_file
.
name
);
"
\'
%s
\'
corrupted."
,
bitmap_file
.
name
);
rbt_free
(
result
);
rbt_free
(
result
);
free
(
bitmap_files
.
files
);
free
(
bitmap_files
.
files
);
os_file_close
(
bitmap_file
.
file
);
os_file_close
(
bitmap_file
.
file
);
...
...
extra/mariabackup/common.h
View file @
a8a27e65
...
@@ -72,7 +72,7 @@ static inline int asprintf(char **strp, const char *fmt,...)
...
@@ -72,7 +72,7 @@ static inline int asprintf(char **strp, const char *fmt,...)
#define xb_a(expr) \
#define xb_a(expr) \
do { \
do { \
if (!(expr)) { \
if (!(expr)) { \
msg(
"Assertion \"%s\" failed at %s:%lu\n", \
fprintf(stderr,
"Assertion \"%s\" failed at %s:%lu\n", \
#expr, __FILE__, (ulong) __LINE__); \
#expr, __FILE__, (ulong) __LINE__); \
abort(); \
abort(); \
} \
} \
...
@@ -86,42 +86,48 @@ static inline int asprintf(char **strp, const char *fmt,...)
...
@@ -86,42 +86,48 @@ static inline int asprintf(char **strp, const char *fmt,...)
#define XB_DELTA_INFO_SUFFIX ".meta"
#define XB_DELTA_INFO_SUFFIX ".meta"
static
inline
int
msg
(
const
char
*
fmt
,
...)
ATTRIBUTE_FORMAT
(
printf
,
1
,
2
);
static
inline
int
msg
(
const
char
*
fmt
,
...)
{
int
result
;
va_list
args
;
va_start
(
args
,
fmt
);
result
=
vfprintf
(
stderr
,
fmt
,
args
);
va_end
(
args
);
return
result
;
static
inline
int
msg1
(
unsigned
int
thread_num
,
const
char
*
fmt
,
...)
ATTRIBUTE_FORMAT
(
printf
,
2
,
3
);
static
inline
int
msg1
(
uint
thread_num
,
const
char
*
fmt
,
va_list
args
)
{
int
result
;
time_t
t
=
time
(
NULL
);
char
date
[
100
];
char
*
line
;
strftime
(
date
,
sizeof
(
date
),
"%Y-%m-%d %H:%M:%S"
,
localtime
(
&
t
));
result
=
vasprintf
(
&
line
,
fmt
,
args
);
if
(
result
!=
-
1
)
{
if
(
fmt
&&
fmt
[
strlen
(
fmt
)]
!=
'\n'
)
result
=
fprintf
(
stderr
,
"[%02u] %s %s
\n
"
,
thread_num
,
date
,
line
);
else
result
=
fprintf
(
stderr
,
"[%02u] %s %s"
,
thread_num
,
date
,
line
);
free
(
line
);
}
return
result
;
}
}
static
inline
int
msg
(
unsigned
int
,
const
char
*
fmt
,
...)
ATTRIBUTE_FORMAT
(
printf
,
2
,
3
);
static
inline
int
msg_ts
(
const
char
*
fmt
,
...)
ATTRIBUTE_FORMAT
(
printf
,
1
,
2
);
static
inline
int
msg
(
unsigned
int
thread_num
,
const
char
*
fmt
,
...)
static
inline
int
msg_ts
(
const
char
*
fmt
,
...)
{
{
int
result
;
int
result
;
time_t
t
=
time
(
NULL
);
va_list
args
;
char
date
[
100
];
va_start
(
args
,
fmt
);
char
*
line
;
result
=
msg1
(
thread_num
,
fmt
,
args
);
va_list
args
;
va_end
(
args
);
return
result
;
strftime
(
date
,
sizeof
(
date
),
"%y%m%d %H:%M:%S"
,
localtime
(
&
t
));
}
va_start
(
args
,
fmt
);
result
=
vasprintf
(
&
line
,
fmt
,
args
);
va_end
(
args
);
if
(
result
!=
-
1
)
{
result
=
fprintf
(
stderr
,
"%s %s"
,
date
,
line
);
free
(
line
);
}
return
result
;
static
inline
int
msg
(
const
char
*
fmt
,
...)
ATTRIBUTE_FORMAT
(
printf
,
1
,
2
);
static
inline
int
msg
(
const
char
*
fmt
,
...)
{
int
result
;
va_list
args
;
va_start
(
args
,
fmt
);
result
=
msg1
(
0
,
fmt
,
args
);
va_end
(
args
);
return
result
;
}
}
/* Use POSIX_FADV_NORMAL when available */
/* Use POSIX_FADV_NORMAL when available */
#ifdef POSIX_FADV_NORMAL
#ifdef POSIX_FADV_NORMAL
...
...
extra/mariabackup/datasink.c
→
extra/mariabackup/datasink.c
c
View file @
a8a27e65
...
@@ -71,7 +71,7 @@ ds_create(const char *root, ds_type_t type)
...
@@ -71,7 +71,7 @@ ds_create(const char *root, ds_type_t type)
ds
=
&
datasink_buffer
;
ds
=
&
datasink_buffer
;
break
;
break
;
default:
default:
msg
(
"Unknown datasink type: %d
\n
"
,
type
);
msg
(
"Unknown datasink type: %d"
,
type
);
xb_ad
(
0
);
xb_ad
(
0
);
return
NULL
;
return
NULL
;
}
}
...
@@ -80,7 +80,7 @@ ds_create(const char *root, ds_type_t type)
...
@@ -80,7 +80,7 @@ ds_create(const char *root, ds_type_t type)
if
(
ctxt
!=
NULL
)
{
if
(
ctxt
!=
NULL
)
{
ctxt
->
datasink
=
ds
;
ctxt
->
datasink
=
ds
;
}
else
{
}
else
{
msg
(
"Error: failed to initialize datasink.
\n
"
);
msg
(
"Error: failed to initialize datasink."
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
...
extra/mariabackup/ds_archive.c
→
extra/mariabackup/ds_archive.c
c
View file @
a8a27e65
File moved
extra/mariabackup/ds_buffer.c
→
extra/mariabackup/ds_buffer.c
c
View file @
a8a27e65
...
@@ -71,7 +71,7 @@ buffer_init(const char *root)
...
@@ -71,7 +71,7 @@ buffer_init(const char *root)
ds_ctxt_t
*
ctxt
;
ds_ctxt_t
*
ctxt
;
ds_buffer_ctxt_t
*
buffer_ctxt
;
ds_buffer_ctxt_t
*
buffer_ctxt
;
ctxt
=
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_buffer_ctxt_t
),
ctxt
=
(
ds_ctxt_t
*
)
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_buffer_ctxt_t
),
MYF
(
MY_FAE
));
MYF
(
MY_FAE
));
buffer_ctxt
=
(
ds_buffer_ctxt_t
*
)
(
ctxt
+
1
);
buffer_ctxt
=
(
ds_buffer_ctxt_t
*
)
(
ctxt
+
1
);
buffer_ctxt
->
buffer_size
=
DS_DEFAULT_BUFFER_SIZE
;
buffer_ctxt
->
buffer_size
=
DS_DEFAULT_BUFFER_SIZE
;
...
...
extra/mariabackup/ds_compress.c
→
extra/mariabackup/ds_compress.c
c
View file @
a8a27e65
...
@@ -95,7 +95,7 @@ compress_init(const char *root)
...
@@ -95,7 +95,7 @@ compress_init(const char *root)
/* Create and initialize the worker threads */
/* Create and initialize the worker threads */
threads
=
create_worker_threads
(
xtrabackup_compress_threads
);
threads
=
create_worker_threads
(
xtrabackup_compress_threads
);
if
(
threads
==
NULL
)
{
if
(
threads
==
NULL
)
{
msg
(
"compress: failed to create worker threads.
\n
"
);
msg
(
"compress: failed to create worker threads."
);
return
NULL
;
return
NULL
;
}
}
...
@@ -243,7 +243,7 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
...
@@ -243,7 +243,7 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
write_uint64_le
(
dest_file
,
write_uint64_le
(
dest_file
,
comp_file
->
bytes_processed
))
{
comp_file
->
bytes_processed
))
{
msg
(
"compress: write to the destination stream "
msg
(
"compress: write to the destination stream "
"failed.
\n
"
);
"failed."
);
return
1
;
return
1
;
}
}
...
@@ -253,7 +253,7 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
...
@@ -253,7 +253,7 @@ compress_write(ds_file_t *file, const uchar *buf, size_t len)
ds_write
(
dest_file
,
threads
[
i
].
to
,
ds_write
(
dest_file
,
threads
[
i
].
to
,
threads
[
i
].
to_len
))
{
threads
[
i
].
to_len
))
{
msg
(
"compress: write to the destination stream "
msg
(
"compress: write to the destination stream "
"failed.
\n
"
);
"failed."
);
return
1
;
return
1
;
}
}
...
@@ -367,7 +367,7 @@ create_worker_threads(uint n)
...
@@ -367,7 +367,7 @@ create_worker_threads(uint n)
if
(
pthread_create
(
&
thd
->
id
,
NULL
,
compress_worker_thread_func
,
if
(
pthread_create
(
&
thd
->
id
,
NULL
,
compress_worker_thread_func
,
thd
))
{
thd
))
{
msg
(
"compress: pthread_create() failed: "
msg
(
"compress: pthread_create() failed: "
"errno = %d
\n
"
,
errno
);
"errno = %d"
,
errno
);
goto
err
;
goto
err
;
}
}
}
}
...
...
extra/mariabackup/ds_stdout.c
→
extra/mariabackup/ds_stdout.c
c
View file @
a8a27e65
...
@@ -48,7 +48,7 @@ stdout_init(const char *root)
...
@@ -48,7 +48,7 @@ stdout_init(const char *root)
{
{
ds_ctxt_t
*
ctxt
;
ds_ctxt_t
*
ctxt
;
ctxt
=
my_malloc
(
sizeof
(
ds_ctxt_t
),
MYF
(
MY_FAE
));
ctxt
=
(
ds_ctxt_t
*
)
my_malloc
(
sizeof
(
ds_ctxt_t
),
MYF
(
MY_FAE
));
ctxt
->
root
=
my_strdup
(
root
,
MYF
(
MY_FAE
));
ctxt
->
root
=
my_strdup
(
root
,
MYF
(
MY_FAE
));
...
...
extra/mariabackup/ds_tmpfile.c
→
extra/mariabackup/ds_tmpfile.c
c
View file @
a8a27e65
...
@@ -60,7 +60,7 @@ tmpfile_init(const char *root)
...
@@ -60,7 +60,7 @@ tmpfile_init(const char *root)
ds_ctxt_t
*
ctxt
;
ds_ctxt_t
*
ctxt
;
ds_tmpfile_ctxt_t
*
tmpfile_ctxt
;
ds_tmpfile_ctxt_t
*
tmpfile_ctxt
;
ctxt
=
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_tmpfile_ctxt_t
),
ctxt
=
(
ds_ctxt_t
*
)
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_tmpfile_ctxt_t
),
MYF
(
MY_FAE
));
MYF
(
MY_FAE
));
tmpfile_ctxt
=
(
ds_tmpfile_ctxt_t
*
)
(
ctxt
+
1
);
tmpfile_ctxt
=
(
ds_tmpfile_ctxt_t
*
)
(
ctxt
+
1
);
tmpfile_ctxt
->
file_list
=
NULL
;
tmpfile_ctxt
->
file_list
=
NULL
;
...
@@ -191,11 +191,11 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
...
@@ -191,11 +191,11 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
/* Walk the files in the order they have been added */
/* Walk the files in the order they have been added */
list
=
list_reverse
(
list
);
list
=
list_reverse
(
list
);
while
(
list
!=
NULL
)
{
while
(
list
!=
NULL
)
{
tmp_file
=
list
->
data
;
tmp_file
=
(
ds_tmp_file_t
*
)
list
->
data
;
/* Stat the file to replace size and mtime on the original
/* Stat the file to replace size and mtime on the original
* mystat struct */
* mystat struct */
if
(
my_fstat
(
tmp_file
->
fd
,
&
mystat
,
MYF
(
0
)))
{
if
(
my_fstat
(
tmp_file
->
fd
,
&
mystat
,
MYF
(
0
)))
{
msg
(
"error: my_fstat() failed.
\n
"
);
msg
(
"error: my_fstat() failed."
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
tmp_file
->
mystat
.
st_size
=
mystat
.
st_size
;
tmp_file
->
mystat
.
st_size
=
mystat
.
st_size
;
...
@@ -205,7 +205,7 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
...
@@ -205,7 +205,7 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
&
tmp_file
->
mystat
);
&
tmp_file
->
mystat
);
if
(
dst_file
==
NULL
)
{
if
(
dst_file
==
NULL
)
{
msg
(
"error: could not stream a temporary file to "
msg
(
"error: could not stream a temporary file to "
"'%s'
\n
"
,
tmp_file
->
orig_path
);
"'%s'"
,
tmp_file
->
orig_path
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -213,17 +213,17 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
...
@@ -213,17 +213,17 @@ tmpfile_deinit(ds_ctxt_t *ctxt)
posix_fadvise
(
tmp_file
->
fd
,
0
,
0
,
POSIX_FADV_SEQUENTIAL
);
posix_fadvise
(
tmp_file
->
fd
,
0
,
0
,
POSIX_FADV_SEQUENTIAL
);
if
(
my_seek
(
tmp_file
->
fd
,
0
,
SEEK_SET
,
MYF
(
0
))
==
if
(
my_seek
(
tmp_file
->
fd
,
0
,
SEEK_SET
,
MYF
(
0
))
==
MY_FILEPOS_ERROR
)
{
MY_FILEPOS_ERROR
)
{
msg
(
"error: my_seek() failed for '%s', errno = %d.
\n
"
,
msg
(
"error: my_seek() failed for '%s', errno = %d."
,
tmp_file
->
file
->
path
,
my_errno
);
tmp_file
->
file
->
path
,
my_errno
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
offset
=
0
;
offset
=
0
;
while
((
bytes
=
my_read
(
tmp_file
->
fd
,
buf
,
buf_size
,
while
((
bytes
=
my_read
(
tmp_file
->
fd
,
(
unsigned
char
*
)
buf
,
buf_size
,
MYF
(
MY_WME
)))
>
0
)
{
MYF
(
MY_WME
)))
>
0
)
{
posix_fadvise
(
tmp_file
->
fd
,
offset
,
buf_size
,
POSIX_FADV_DONTNEED
);
posix_fadvise
(
tmp_file
->
fd
,
offset
,
buf_size
,
POSIX_FADV_DONTNEED
);
offset
+=
buf_size
;
offset
+=
buf_size
;
if
(
ds_write
(
dst_file
,
buf
,
bytes
))
{
if
(
ds_write
(
dst_file
,
buf
,
bytes
))
{
msg
(
"error: cannot write to stream for '%s'.
\n
"
,
msg
(
"error: cannot write to stream for '%s'."
,
tmp_file
->
orig_path
);
tmp_file
->
orig_path
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
...
extra/mariabackup/ds_xbstream.c
→
extra/mariabackup/ds_xbstream.c
c
View file @
a8a27e65
...
@@ -79,18 +79,18 @@ xbstream_init(const char *root __attribute__((unused)))
...
@@ -79,18 +79,18 @@ xbstream_init(const char *root __attribute__((unused)))
ds_stream_ctxt_t
*
stream_ctxt
;
ds_stream_ctxt_t
*
stream_ctxt
;
xb_wstream_t
*
xbstream
;
xb_wstream_t
*
xbstream
;
ctxt
=
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_stream_ctxt_t
),
ctxt
=
(
ds_ctxt_t
*
)
my_malloc
(
sizeof
(
ds_ctxt_t
)
+
sizeof
(
ds_stream_ctxt_t
),
MYF
(
MY_FAE
));
MYF
(
MY_FAE
));
stream_ctxt
=
(
ds_stream_ctxt_t
*
)(
ctxt
+
1
);
stream_ctxt
=
(
ds_stream_ctxt_t
*
)(
ctxt
+
1
);
if
(
pthread_mutex_init
(
&
stream_ctxt
->
mutex
,
NULL
))
{
if
(
pthread_mutex_init
(
&
stream_ctxt
->
mutex
,
NULL
))
{
msg
(
"xbstream_init: pthread_mutex_init() failed.
\n
"
);
msg
(
"xbstream_init: pthread_mutex_init() failed."
);
goto
err
;
goto
err
;
}
}
xbstream
=
xb_stream_write_new
();
xbstream
=
xb_stream_write_new
();
if
(
xbstream
==
NULL
)
{
if
(
xbstream
==
NULL
)
{
msg
(
"xb_stream_write_new() failed.
\n
"
);
msg
(
"xb_stream_write_new() failed."
);
goto
err
;
goto
err
;
}
}
stream_ctxt
->
xbstream
=
xbstream
;
stream_ctxt
->
xbstream
=
xbstream
;
...
@@ -143,7 +143,7 @@ xbstream_open(ds_ctxt_t *ctxt, const char *path, MY_STAT *mystat)
...
@@ -143,7 +143,7 @@ xbstream_open(ds_ctxt_t *ctxt, const char *path, MY_STAT *mystat)
my_xbstream_write_callback
);
my_xbstream_write_callback
);
if
(
xbstream_file
==
NULL
)
{
if
(
xbstream_file
==
NULL
)
{
msg
(
"xb_stream_write_open() failed.
\n
"
);
msg
(
"xb_stream_write_open() failed."
);
goto
err
;
goto
err
;
}
}
...
@@ -177,7 +177,7 @@ xbstream_write(ds_file_t *file, const uchar *buf, size_t len)
...
@@ -177,7 +177,7 @@ xbstream_write(ds_file_t *file, const uchar *buf, size_t len)
xbstream_file
=
stream_file
->
xbstream_file
;
xbstream_file
=
stream_file
->
xbstream_file
;
if
(
xb_stream_write_data
(
xbstream_file
,
buf
,
len
))
{
if
(
xb_stream_write_data
(
xbstream_file
,
buf
,
len
))
{
msg
(
"xb_stream_write_data() failed.
\n
"
);
msg
(
"xb_stream_write_data() failed."
);
return
1
;
return
1
;
}
}
...
@@ -209,7 +209,7 @@ xbstream_deinit(ds_ctxt_t *ctxt)
...
@@ -209,7 +209,7 @@ xbstream_deinit(ds_ctxt_t *ctxt)
stream_ctxt
=
(
ds_stream_ctxt_t
*
)
ctxt
->
ptr
;
stream_ctxt
=
(
ds_stream_ctxt_t
*
)
ctxt
->
ptr
;
if
(
xb_stream_write_done
(
stream_ctxt
->
xbstream
))
{
if
(
xb_stream_write_done
(
stream_ctxt
->
xbstream
))
{
msg
(
"xb_stream_done() failed.
\n
"
);
msg
(
"xb_stream_done() failed."
);
}
}
if
(
stream_ctxt
->
dest_file
)
{
if
(
stream_ctxt
->
dest_file
)
{
...
...
extra/mariabackup/encryption_plugin.cc
View file @
a8a27e65
...
@@ -45,7 +45,7 @@ static std::string get_encryption_plugin_from_cnf()
...
@@ -45,7 +45,7 @@ static std::string get_encryption_plugin_from_cnf()
FILE
*
f
=
fopen
(
"backup-my.cnf"
,
"r"
);
FILE
*
f
=
fopen
(
"backup-my.cnf"
,
"r"
);
if
(
!
f
)
if
(
!
f
)
{
{
msg
(
"
cannot open backup-my.cnf for reading
\n
"
);
msg
(
"
Can't open backup-my.cnf for reading
"
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
char
line
[
512
];
char
line
[
512
];
...
@@ -167,7 +167,7 @@ void encryption_plugin_prepare_init(int argc, char **argv)
...
@@ -167,7 +167,7 @@ void encryption_plugin_prepare_init(int argc, char **argv)
std
::
string
plugin_load
=
get_encryption_plugin_from_cnf
();
std
::
string
plugin_load
=
get_encryption_plugin_from_cnf
();
if
(
plugin_load
.
size
())
if
(
plugin_load
.
size
())
{
{
msg
(
"Loading encryption plugin from %s
\n
"
,
plugin_load
.
c_str
());
msg
(
"Loading encryption plugin from %s"
,
plugin_load
.
c_str
());
}
}
else
else
{
{
...
@@ -193,9 +193,9 @@ static void encryption_plugin_init(int argc, char **argv)
...
@@ -193,9 +193,9 @@ static void encryption_plugin_init(int argc, char **argv)
{
{
/* Patch optional and mandatory plugins, we only need to load the one in xb_plugin_load. */
/* Patch optional and mandatory plugins, we only need to load the one in xb_plugin_load. */
mysql_optional_plugins
[
0
]
=
mysql_mandatory_plugins
[
0
]
=
0
;
mysql_optional_plugins
[
0
]
=
mysql_mandatory_plugins
[
0
]
=
0
;
msg
(
"Loading encryption plugin
\n
"
);
msg
(
"Loading encryption plugin"
);
for
(
int
i
=
1
;
i
<
argc
;
i
++
)
for
(
int
i
=
1
;
i
<
argc
;
i
++
)
msg
(
"
\t
Encryption plugin parameter : '%s'
\n
"
,
argv
[
i
]);
msg
(
"
\t
Encryption plugin parameter : '%s'"
,
argv
[
i
]);
plugin_init
(
&
argc
,
argv
,
PLUGIN_INIT_SKIP_PLUGIN_TABLE
);
plugin_init
(
&
argc
,
argv
,
PLUGIN_INIT_SKIP_PLUGIN_TABLE
);
}
}
extra/mariabackup/fil_cur.cc
View file @
a8a27e65
...
@@ -174,9 +174,8 @@ xb_fil_cur_open(
...
@@ -174,9 +174,8 @@ xb_fil_cur_open(
/* The following call prints an error message */
/* The following call prints an error message */
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"[%02u] mariabackup: error: cannot open "
msg
(
thread_n
,
"mariabackup: error: cannot open "
"tablespace %s
\n
"
,
"tablespace %s"
,
cursor
->
abs_path
);
thread_n
,
cursor
->
abs_path
);
return
(
XB_FIL_CUR_SKIP
);
return
(
XB_FIL_CUR_SKIP
);
}
}
...
@@ -217,8 +216,8 @@ xb_fil_cur_open(
...
@@ -217,8 +216,8 @@ xb_fil_cur_open(
cursor
->
statinfo
.
st_size
=
(
ulonglong
)
max_file_size
;
cursor
->
statinfo
.
st_size
=
(
ulonglong
)
max_file_size
;
}
}
if
(
err
)
{
if
(
err
)
{
msg
(
"[%02u] mariabackup: error: cannot fstat %s
\n
"
,
msg
(
thread_n
,
"mariabackup: error: cannot fstat %s
"
,
thread_n
,
cursor
->
abs_path
);
cursor
->
abs_path
);
xb_fil_cur_close
(
cursor
);
xb_fil_cur_close
(
cursor
);
...
@@ -262,8 +261,6 @@ xb_fil_cur_open(
...
@@ -262,8 +261,6 @@ xb_fil_cur_open(
mutex_exit
(
&
fil_system
->
mutex
);
mutex_exit
(
&
fil_system
->
mutex
);
}
}
/*msg("crypt: %s,%u\n", node->name, node->space->crypt_data->type);*/
cursor
->
space_size
=
(
ulint
)(
cursor
->
statinfo
.
st_size
cursor
->
space_size
=
(
ulint
)(
cursor
->
statinfo
.
st_size
/
page_size
.
physical
());
/
page_size
.
physical
());
...
@@ -413,14 +410,8 @@ xb_fil_cur_read(
...
@@ -413,14 +410,8 @@ xb_fil_cur_read(
&&
offset
+
to_read
==
cursor
->
statinfo
.
st_size
)
{
&&
offset
+
to_read
==
cursor
->
statinfo
.
st_size
)
{
if
(
to_read
<
(
ib_int64_t
)
page_size
)
{
if
(
to_read
<
(
ib_int64_t
)
page_size
)
{
msg
(
"[%02u] mariabackup: Warning: junk at the end of "
msg
(
cursor
->
thread_n
,
"Warning: junk at the end of "
"%s:
\n
"
,
cursor
->
thread_n
,
cursor
->
abs_path
);
"%s, offset = %llu, to_read = %llu"
,
cursor
->
abs_path
,
(
ulonglong
)
offset
,
(
ulonglong
)
to_read
);
msg
(
"[%02u] mariabackup: Warning: offset = %llu, "
"to_read = %llu
\n
"
,
cursor
->
thread_n
,
(
unsigned
long
long
)
offset
,
(
unsigned
long
long
)
to_read
);
return
(
XB_FIL_CUR_EOF
);
return
(
XB_FIL_CUR_EOF
);
}
}
...
@@ -464,20 +455,17 @@ xb_fil_cur_read(
...
@@ -464,20 +455,17 @@ xb_fil_cur_read(
retry_count
--
;
retry_count
--
;
if
(
retry_count
==
0
)
{
if
(
retry_count
==
0
)
{
msg
(
"[%02u] mariabackup: "
msg
(
cursor
->
thread_n
,
"Error: failed to read page after "
"Error: failed to read page after "
"10 retries. File %s seems to be "
"10 retries. File %s seems to be "
"corrupted.
\n
"
,
cursor
->
thread_n
,
"corrupted."
,
cursor
->
abs_path
);
cursor
->
abs_path
);
ret
=
XB_FIL_CUR_ERROR
;
ret
=
XB_FIL_CUR_ERROR
;
buf_page_print
(
page
,
cursor
->
page_size
);
buf_page_print
(
page
,
cursor
->
page_size
);
break
;
break
;
}
}
msg
(
"[%02u] mariabackup: "
msg
(
cursor
->
thread_n
,
"Database page corruption detected at page "
"Database page corruption detected at page "
ULINTPF
", retrying..."
,
ULINTPF
", retrying...
\n
"
,
cursor
->
thread_n
,
page_no
);
page_no
);
os_thread_sleep
(
100000
);
os_thread_sleep
(
100000
);
goto
read_retry
;
goto
read_retry
;
}
}
...
...
extra/mariabackup/innobackupex.cc
View file @
a8a27e65
...
@@ -738,7 +738,7 @@ ibx_get_one_option(int optid,
...
@@ -738,7 +738,7 @@ ibx_get_one_option(int optid,
exit
(
0
);
exit
(
0
);
break
;
break
;
case
'v'
:
case
'v'
:
msg
(
"innobackupex version %s %s (%s)
\n
"
,
printf
(
"innobackupex version %s %s (%s)
"
,
MYSQL_SERVER_VERSION
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
SYSTEM_TYPE
,
MACHINE_TYPE
);
exit
(
0
);
exit
(
0
);
...
...
extra/mariabackup/write_filt.cc
View file @
a8a27e65
...
@@ -79,9 +79,8 @@ wf_incremental_init(xb_write_filt_ctxt_t *ctxt, char *dst_name,
...
@@ -79,9 +79,8 @@ wf_incremental_init(xb_write_filt_ctxt_t *ctxt, char *dst_name,
cp
->
delta_buf
=
(
unsigned
char
*
)
os_mem_alloc_large
(
&
cp
->
delta_buf_size
);
cp
->
delta_buf
=
(
unsigned
char
*
)
os_mem_alloc_large
(
&
cp
->
delta_buf_size
);
if
(
!
cp
->
delta_buf
)
{
if
(
!
cp
->
delta_buf
)
{
msg
(
"[%02u] mariabackup: Error: "
msg
(
cursor
->
thread_n
,
"Can't allocate %zu bytes"
,
"cannot allocate %zu bytes
\n
"
,
(
size_t
)
cp
->
delta_buf_size
);
cursor
->
thread_n
,
(
size_t
)
cp
->
delta_buf_size
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -90,9 +89,9 @@ wf_incremental_init(xb_write_filt_ctxt_t *ctxt, char *dst_name,
...
@@ -90,9 +89,9 @@ wf_incremental_init(xb_write_filt_ctxt_t *ctxt, char *dst_name,
XB_DELTA_INFO_SUFFIX
);
XB_DELTA_INFO_SUFFIX
);
const
xb_delta_info_t
info
(
cursor
->
page_size
,
cursor
->
space_id
);
const
xb_delta_info_t
info
(
cursor
->
page_size
,
cursor
->
space_id
);
if
(
!
xb_write_delta_metadata
(
meta_name
,
&
info
))
{
if
(
!
xb_write_delta_metadata
(
meta_name
,
&
info
))
{
msg
(
"[%02u] mariabackup:
Error: "
msg
(
cursor
->
thread_n
,
"
Error: "
"failed to write meta info for %s
\n
"
,
"failed to write meta info for %s"
,
cursor
->
thread_n
,
cursor
->
rel_path
);
cursor
->
rel_path
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
...
extra/mariabackup/xbstream.c
→
extra/mariabackup/xbstream.c
c
View file @
a8a27e65
...
@@ -45,7 +45,6 @@ datasink_t datasink_archive;
...
@@ -45,7 +45,6 @@ datasink_t datasink_archive;
datasink_t
datasink_xbstream
;
datasink_t
datasink_xbstream
;
datasink_t
datasink_compress
;
datasink_t
datasink_compress
;
datasink_t
datasink_tmpfile
;
datasink_t
datasink_tmpfile
;
datasink_t
datasink_buffer
;
static
run_mode_t
opt_mode
;
static
run_mode_t
opt_mode
;
static
char
*
opt_directory
=
NULL
;
static
char
*
opt_directory
=
NULL
;
...
@@ -106,7 +105,7 @@ main(int argc, char **argv)
...
@@ -106,7 +105,7 @@ main(int argc, char **argv)
}
}
if
(
opt_mode
==
RUN_MODE_NONE
)
{
if
(
opt_mode
==
RUN_MODE_NONE
)
{
msg
(
"%s: either -c or -x must be specified.
\n
"
,
my_progname
);
msg
(
"%s: either -c or -x must be specified."
,
my_progname
);
goto
err
;
goto
err
;
}
}
...
@@ -184,7 +183,7 @@ int
...
@@ -184,7 +183,7 @@ int
set_run_mode
(
run_mode_t
mode
)
set_run_mode
(
run_mode_t
mode
)
{
{
if
(
opt_mode
!=
RUN_MODE_NONE
)
{
if
(
opt_mode
!=
RUN_MODE_NONE
)
{
msg
(
"%s: can't set specify both -c and -x.
\n
"
,
my_progname
);
msg
(
"%s: can't set specify both -c and -x."
,
my_progname
);
return
1
;
return
1
;
}
}
...
@@ -233,7 +232,7 @@ stream_one_file(File file, xb_wstream_file_t *xbfile)
...
@@ -233,7 +232,7 @@ stream_one_file(File file, xb_wstream_file_t *xbfile)
while
((
bytes
=
(
ssize_t
)
my_read
(
file
,
buf
,
XBSTREAM_BUFFER_SIZE
,
while
((
bytes
=
(
ssize_t
)
my_read
(
file
,
buf
,
XBSTREAM_BUFFER_SIZE
,
MYF
(
MY_WME
)))
>
0
)
{
MYF
(
MY_WME
)))
>
0
)
{
if
(
xb_stream_write_data
(
xbfile
,
buf
,
bytes
))
{
if
(
xb_stream_write_data
(
xbfile
,
buf
,
bytes
))
{
msg
(
"%s: xb_stream_write_data() failed.
\n
"
,
msg
(
"%s: xb_stream_write_data() failed."
,
my_progname
);
my_progname
);
my_free
(
buf
);
my_free
(
buf
);
return
1
;
return
1
;
...
@@ -262,13 +261,13 @@ mode_create(int argc, char **argv)
...
@@ -262,13 +261,13 @@ mode_create(int argc, char **argv)
xb_wstream_t
*
stream
;
xb_wstream_t
*
stream
;
if
(
argc
<
1
)
{
if
(
argc
<
1
)
{
msg
(
"%s: no files are specified.
\n
"
,
my_progname
);
msg
(
"%s: no files are specified."
,
my_progname
);
return
1
;
return
1
;
}
}
stream
=
xb_stream_write_new
();
stream
=
xb_stream_write_new
();
if
(
stream
==
NULL
)
{
if
(
stream
==
NULL
)
{
msg
(
"%s: xb_stream_write_new() failed.
\n
"
,
my_progname
);
msg
(
"%s: xb_stream_write_new() failed."
,
my_progname
);
return
1
;
return
1
;
}
}
...
@@ -281,13 +280,13 @@ mode_create(int argc, char **argv)
...
@@ -281,13 +280,13 @@ mode_create(int argc, char **argv)
goto
err
;
goto
err
;
}
}
if
(
!
MY_S_ISREG
(
mystat
.
st_mode
))
{
if
(
!
MY_S_ISREG
(
mystat
.
st_mode
))
{
msg
(
"%s: %s is not a regular file, exiting.
\n
"
,
msg
(
"%s: %s is not a regular file, exiting."
,
my_progname
,
filepath
);
my_progname
,
filepath
);
goto
err
;
goto
err
;
}
}
if
((
src_file
=
my_open
(
filepath
,
O_RDONLY
,
MYF
(
MY_WME
)))
<
0
)
{
if
((
src_file
=
my_open
(
filepath
,
O_RDONLY
,
MYF
(
MY_WME
)))
<
0
)
{
msg
(
"%s: failed to open %s.
\n
"
,
my_progname
,
filepath
);
msg
(
"%s: failed to open %s."
,
my_progname
,
filepath
);
goto
err
;
goto
err
;
}
}
...
@@ -297,7 +296,7 @@ mode_create(int argc, char **argv)
...
@@ -297,7 +296,7 @@ mode_create(int argc, char **argv)
}
}
if
(
opt_verbose
)
{
if
(
opt_verbose
)
{
msg
(
"%s
\n
"
,
filepath
);
msg
(
"%s"
,
filepath
);
}
}
if
(
stream_one_file
(
src_file
,
file
)
||
if
(
stream_one_file
(
src_file
,
file
)
||
...
@@ -338,12 +337,12 @@ file_entry_new(extract_ctxt_t *ctxt, const char *path, uint pathlen)
...
@@ -338,12 +337,12 @@ file_entry_new(extract_ctxt_t *ctxt, const char *path, uint pathlen)
file
=
ds_open
(
ctxt
->
ds_ctxt
,
path
,
NULL
);
file
=
ds_open
(
ctxt
->
ds_ctxt
,
path
,
NULL
);
if
(
file
==
NULL
)
{
if
(
file
==
NULL
)
{
msg
(
"%s: failed to create file.
\n
"
,
my_progname
);
msg
(
"%s: failed to create file."
,
my_progname
);
goto
err
;
goto
err
;
}
}
if
(
opt_verbose
)
{
if
(
opt_verbose
)
{
msg
(
"%s
\n
"
,
entry
->
path
);
msg
(
"%s"
,
entry
->
path
);
}
}
entry
->
file
=
file
;
entry
->
file
=
file
;
...
@@ -425,7 +424,7 @@ extract_worker_thread_func(void *arg)
...
@@ -425,7 +424,7 @@ extract_worker_thread_func(void *arg)
break
;
break
;
}
}
if
(
my_hash_insert
(
ctxt
->
filehash
,
(
uchar
*
)
entry
))
{
if
(
my_hash_insert
(
ctxt
->
filehash
,
(
uchar
*
)
entry
))
{
msg
(
"%s: my_hash_insert() failed.
\n
"
,
msg
(
"%s: my_hash_insert() failed."
,
my_progname
);
my_progname
);
pthread_mutex_unlock
(
ctxt
->
mutex
);
pthread_mutex_unlock
(
ctxt
->
mutex
);
break
;
break
;
...
@@ -454,7 +453,7 @@ extract_worker_thread_func(void *arg)
...
@@ -454,7 +453,7 @@ extract_worker_thread_func(void *arg)
if
(
entry
->
offset
!=
chunk
.
offset
)
{
if
(
entry
->
offset
!=
chunk
.
offset
)
{
msg
(
"%s: out-of-order chunk: real offset = 0x%llx, "
msg
(
"%s: out-of-order chunk: real offset = 0x%llx, "
"expected offset = 0x%llx
\n
"
,
my_progname
,
"expected offset = 0x%llx"
,
my_progname
,
chunk
.
offset
,
entry
->
offset
);
chunk
.
offset
,
entry
->
offset
);
pthread_mutex_unlock
(
&
entry
->
mutex
);
pthread_mutex_unlock
(
&
entry
->
mutex
);
res
=
XB_STREAM_READ_ERROR
;
res
=
XB_STREAM_READ_ERROR
;
...
@@ -462,7 +461,7 @@ extract_worker_thread_func(void *arg)
...
@@ -462,7 +461,7 @@ extract_worker_thread_func(void *arg)
}
}
if
(
ds_write
(
entry
->
file
,
chunk
.
data
,
chunk
.
length
))
{
if
(
ds_write
(
entry
->
file
,
chunk
.
data
,
chunk
.
length
))
{
msg
(
"%s: my_write() failed.
\n
"
,
my_progname
);
msg
(
"%s: my_write() failed."
,
my_progname
);
pthread_mutex_unlock
(
&
entry
->
mutex
);
pthread_mutex_unlock
(
&
entry
->
mutex
);
res
=
XB_STREAM_READ_ERROR
;
res
=
XB_STREAM_READ_ERROR
;
break
;
break
;
...
@@ -500,12 +499,12 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
...
@@ -500,12 +499,12 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
if
(
my_hash_init
(
&
filehash
,
&
my_charset_bin
,
START_FILE_HASH_SIZE
,
if
(
my_hash_init
(
&
filehash
,
&
my_charset_bin
,
START_FILE_HASH_SIZE
,
0
,
0
,
(
my_hash_get_key
)
get_file_entry_key
,
0
,
0
,
(
my_hash_get_key
)
get_file_entry_key
,
(
my_hash_free_key
)
file_entry_free
,
MYF
(
0
)))
{
(
my_hash_free_key
)
file_entry_free
,
MYF
(
0
)))
{
msg
(
"%s: failed to initialize file hash.
\n
"
,
my_progname
);
msg
(
"%s: failed to initialize file hash."
,
my_progname
);
return
1
;
return
1
;
}
}
if
(
pthread_mutex_init
(
&
mutex
,
NULL
))
{
if
(
pthread_mutex_init
(
&
mutex
,
NULL
))
{
msg
(
"%s: failed to initialize mutex.
\n
"
,
my_progname
);
msg
(
"%s: failed to initialize mutex."
,
my_progname
);
my_hash_free
(
&
filehash
);
my_hash_free
(
&
filehash
);
return
1
;
return
1
;
}
}
...
@@ -520,7 +519,7 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
...
@@ -520,7 +519,7 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
stream
=
xb_stream_read_new
();
stream
=
xb_stream_read_new
();
if
(
stream
==
NULL
)
{
if
(
stream
==
NULL
)
{
msg
(
"%s: xb_stream_read_new() failed.
\n
"
,
my_progname
);
msg
(
"%s: xb_stream_read_new() failed."
,
my_progname
);
pthread_mutex_destroy
(
&
mutex
);
pthread_mutex_destroy
(
&
mutex
);
ret
=
1
;
ret
=
1
;
goto
exit
;
goto
exit
;
...
@@ -531,8 +530,8 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
...
@@ -531,8 +530,8 @@ mode_extract(int n_threads, int argc __attribute__((unused)),
ctxt
.
ds_ctxt
=
ds_ctxt
;
ctxt
.
ds_ctxt
=
ds_ctxt
;
ctxt
.
mutex
=
&
mutex
;
ctxt
.
mutex
=
&
mutex
;
tids
=
calloc
(
n_threads
,
sizeof
(
pthread_t
));
tids
=
(
pthread_t
*
)
calloc
(
n_threads
,
sizeof
(
pthread_t
));
retvals
=
calloc
(
n_threads
,
sizeof
(
void
*
));
retvals
=
(
void
**
)
calloc
(
n_threads
,
sizeof
(
void
*
));
for
(
i
=
0
;
i
<
n_threads
;
i
++
)
for
(
i
=
0
;
i
<
n_threads
;
i
++
)
pthread_create
(
tids
+
i
,
NULL
,
extract_worker_thread_func
,
pthread_create
(
tids
+
i
,
NULL
,
extract_worker_thread_func
,
...
...
extra/mariabackup/xbstream.h
View file @
a8a27e65
...
@@ -101,6 +101,6 @@ xb_rstream_result_t xb_stream_read_chunk(xb_rstream_t *stream,
...
@@ -101,6 +101,6 @@ xb_rstream_result_t xb_stream_read_chunk(xb_rstream_t *stream,
int
xb_stream_read_done
(
xb_rstream_t
*
stream
);
int
xb_stream_read_done
(
xb_rstream_t
*
stream
);
in
t
xb_stream_validate_checksum
(
xb_rstream_chunk_t
*
chunk
);
xb_rstream_result_
t
xb_stream_validate_checksum
(
xb_rstream_chunk_t
*
chunk
);
#endif
#endif
extra/mariabackup/xbstream_read.c
→
extra/mariabackup/xbstream_read.c
c
View file @
a8a27e65
...
@@ -67,15 +67,15 @@ validate_chunk_type(uchar code)
...
@@ -67,15 +67,15 @@ validate_chunk_type(uchar code)
}
}
}
}
in
t
xb_rstream_result_
t
xb_stream_validate_checksum
(
xb_rstream_chunk_t
*
chunk
)
xb_stream_validate_checksum
(
xb_rstream_chunk_t
*
chunk
)
{
{
ulong
checksum
;
ulong
checksum
;
checksum
=
crc32_iso3309
(
0
,
chunk
->
data
,
(
uint
)
chunk
->
length
);
checksum
=
crc32_iso3309
(
0
,
(
unsigned
char
*
)
chunk
->
data
,
(
uint
)
chunk
->
length
);
if
(
checksum
!=
chunk
->
checksum
)
{
if
(
checksum
!=
chunk
->
checksum
)
{
msg
(
"xb_stream_read_chunk(): invalid checksum at offset "
msg
(
"xb_stream_read_chunk(): invalid checksum at offset "
"0x%llx: expected 0x%lx, read 0x%lx.
\n
"
,
"0x%llx: expected 0x%lx, read 0x%lx."
,
(
ulonglong
)
chunk
->
checksum_offset
,
chunk
->
checksum
,
(
ulonglong
)
chunk
->
checksum_offset
,
chunk
->
checksum
,
checksum
);
checksum
);
return
XB_STREAM_READ_ERROR
;
return
XB_STREAM_READ_ERROR
;
...
@@ -86,8 +86,8 @@ xb_stream_validate_checksum(xb_rstream_chunk_t *chunk)
...
@@ -86,8 +86,8 @@ xb_stream_validate_checksum(xb_rstream_chunk_t *chunk)
#define F_READ(buf,len) \
#define F_READ(buf,len) \
do { \
do { \
if (xb_read_full(fd, buf, len) < len) { \
if (xb_read_full(fd,
(uchar *)
buf, len) < len) { \
msg("xb_stream_read_chunk(): my_read() failed.
\n
"); \
msg("xb_stream_read_chunk(): my_read() failed."); \
goto err; \
goto err; \
} \
} \
} while (0)
} while (0)
...
@@ -111,7 +111,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -111,7 +111,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
return
XB_STREAM_READ_EOF
;
return
XB_STREAM_READ_EOF
;
}
else
if
(
tbytes
<
CHUNK_HEADER_CONSTANT_LEN
)
{
}
else
if
(
tbytes
<
CHUNK_HEADER_CONSTANT_LEN
)
{
msg
(
"xb_stream_read_chunk(): unexpected end of stream at "
msg
(
"xb_stream_read_chunk(): unexpected end of stream at "
"offset 0x%llx.
\n
"
,
stream
->
offset
);
"offset 0x%llx."
,
stream
->
offset
);
goto
err
;
goto
err
;
}
}
...
@@ -120,7 +120,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -120,7 +120,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
/* Chunk magic value */
/* Chunk magic value */
if
(
memcmp
(
tmpbuf
,
XB_STREAM_CHUNK_MAGIC
,
8
))
{
if
(
memcmp
(
tmpbuf
,
XB_STREAM_CHUNK_MAGIC
,
8
))
{
msg
(
"xb_stream_read_chunk(): wrong chunk magic at offset "
msg
(
"xb_stream_read_chunk(): wrong chunk magic at offset "
"0x%llx.
\n
"
,
(
ulonglong
)
stream
->
offset
);
"0x%llx."
,
(
ulonglong
)
stream
->
offset
);
goto
err
;
goto
err
;
}
}
ptr
+=
8
;
ptr
+=
8
;
...
@@ -135,7 +135,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -135,7 +135,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
if
(
chunk
->
type
==
XB_CHUNK_TYPE_UNKNOWN
&&
if
(
chunk
->
type
==
XB_CHUNK_TYPE_UNKNOWN
&&
!
(
chunk
->
flags
&
XB_STREAM_FLAG_IGNORABLE
))
{
!
(
chunk
->
flags
&
XB_STREAM_FLAG_IGNORABLE
))
{
msg
(
"xb_stream_read_chunk(): unknown chunk type 0x%lu at "
msg
(
"xb_stream_read_chunk(): unknown chunk type 0x%lu at "
"offset 0x%llx.
\n
"
,
(
ulong
)
*
ptr
,
"offset 0x%llx."
,
(
ulong
)
*
ptr
,
(
ulonglong
)
stream
->
offset
);
(
ulonglong
)
stream
->
offset
);
goto
err
;
goto
err
;
}
}
...
@@ -146,7 +146,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -146,7 +146,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
pathlen
=
uint4korr
(
ptr
);
pathlen
=
uint4korr
(
ptr
);
if
(
pathlen
>=
FN_REFLEN
)
{
if
(
pathlen
>=
FN_REFLEN
)
{
msg
(
"xb_stream_read_chunk(): path length (%lu) is too large at "
msg
(
"xb_stream_read_chunk(): path length (%lu) is too large at "
"offset 0x%llx.
\n
"
,
(
ulong
)
pathlen
,
stream
->
offset
);
"offset 0x%llx."
,
(
ulong
)
pathlen
,
stream
->
offset
);
goto
err
;
goto
err
;
}
}
chunk
->
pathlen
=
pathlen
;
chunk
->
pathlen
=
pathlen
;
...
@@ -170,7 +170,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -170,7 +170,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
ullval
=
uint8korr
(
tmpbuf
);
ullval
=
uint8korr
(
tmpbuf
);
if
(
ullval
>
(
ulonglong
)
SIZE_T_MAX
)
{
if
(
ullval
>
(
ulonglong
)
SIZE_T_MAX
)
{
msg
(
"xb_stream_read_chunk(): chunk length is too large at "
msg
(
"xb_stream_read_chunk(): chunk length is too large at "
"offset 0x%llx: 0x%llx.
\n
"
,
(
ulonglong
)
stream
->
offset
,
"offset 0x%llx: 0x%llx."
,
(
ulonglong
)
stream
->
offset
,
ullval
);
ullval
);
goto
err
;
goto
err
;
}
}
...
@@ -181,7 +181,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -181,7 +181,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
ullval
=
uint8korr
(
tmpbuf
+
8
);
ullval
=
uint8korr
(
tmpbuf
+
8
);
if
(
ullval
>
(
ulonglong
)
MY_OFF_T_MAX
)
{
if
(
ullval
>
(
ulonglong
)
MY_OFF_T_MAX
)
{
msg
(
"xb_stream_read_chunk(): chunk offset is too large at "
msg
(
"xb_stream_read_chunk(): chunk offset is too large at "
"offset 0x%llx: 0x%llx.
\n
"
,
(
ulonglong
)
stream
->
offset
,
"offset 0x%llx: 0x%llx."
,
(
ulonglong
)
stream
->
offset
,
ullval
);
ullval
);
goto
err
;
goto
err
;
}
}
...
@@ -194,7 +194,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
...
@@ -194,7 +194,7 @@ xb_stream_read_chunk(xb_rstream_t *stream, xb_rstream_chunk_t *chunk)
MYF
(
MY_WME
|
MY_ALLOW_ZERO_PTR
));
MYF
(
MY_WME
|
MY_ALLOW_ZERO_PTR
));
if
(
chunk
->
data
==
NULL
)
{
if
(
chunk
->
data
==
NULL
)
{
msg
(
"xb_stream_read_chunk(): failed to increase buffer "
msg
(
"xb_stream_read_chunk(): failed to increase buffer "
"to %lu bytes.
\n
"
,
(
ulong
)
chunk
->
length
);
"to %lu bytes."
,
(
ulong
)
chunk
->
length
);
goto
err
;
goto
err
;
}
}
chunk
->
buflen
=
chunk
->
length
;
chunk
->
buflen
=
chunk
->
length
;
...
...
extra/mariabackup/xbstream_write.c
→
extra/mariabackup/xbstream_write.c
c
View file @
a8a27e65
...
@@ -55,7 +55,7 @@ xb_stream_default_write_callback(xb_wstream_file_t *file __attribute__((unused))
...
@@ -55,7 +55,7 @@ xb_stream_default_write_callback(xb_wstream_file_t *file __attribute__((unused))
void
*
userdata
__attribute__
((
unused
)),
void
*
userdata
__attribute__
((
unused
)),
const
void
*
buf
,
size_t
len
)
const
void
*
buf
,
size_t
len
)
{
{
if
(
my_write
(
my_fileno
(
stdout
),
buf
,
len
,
MYF
(
MY_WME
|
MY_NABP
)))
if
(
my_write
(
my_fileno
(
stdout
),
(
const
uchar
*
)
buf
,
len
,
MYF
(
MY_WME
|
MY_NABP
)))
return
-
1
;
return
-
1
;
return
len
;
return
len
;
}
}
...
@@ -83,7 +83,7 @@ xb_stream_write_open(xb_wstream_t *stream, const char *path,
...
@@ -83,7 +83,7 @@ xb_stream_write_open(xb_wstream_t *stream, const char *path,
path_len
=
strlen
(
path
);
path_len
=
strlen
(
path
);
if
(
path_len
>
FN_REFLEN
)
{
if
(
path_len
>
FN_REFLEN
)
{
msg
(
"xb_stream_write_open(): file path is too long.
\n
"
);
msg
(
"xb_stream_write_open(): file path is too long."
);
return
NULL
;
return
NULL
;
}
}
...
@@ -216,7 +216,7 @@ xb_stream_write_chunk(xb_wstream_file_t *file, const void *buf, size_t len)
...
@@ -216,7 +216,7 @@ xb_stream_write_chunk(xb_wstream_file_t *file, const void *buf, size_t len)
int8store
(
ptr
,
len
);
/* Payload length */
int8store
(
ptr
,
len
);
/* Payload length */
ptr
+=
8
;
ptr
+=
8
;
checksum
=
crc32_iso3309
(
0
,
buf
,
(
uint
)
len
);
/* checksum */
checksum
=
crc32_iso3309
(
0
,
(
const
uchar
*
)
buf
,
(
uint
)
len
);
/* checksum */
pthread_mutex_lock
(
&
stream
->
mutex
);
pthread_mutex_lock
(
&
stream
->
mutex
);
...
...
extra/mariabackup/xtrabackup.cc
View file @
a8a27e65
...
@@ -185,7 +185,7 @@ xb_stream_fmt_t xtrabackup_stream_fmt = XB_STREAM_FMT_NONE;
...
@@ -185,7 +185,7 @@ xb_stream_fmt_t xtrabackup_stream_fmt = XB_STREAM_FMT_NONE;
ibool
xtrabackup_stream
=
FALSE
;
ibool
xtrabackup_stream
=
FALSE
;
const
char
*
xtrabackup_compress_alg
=
NULL
;
const
char
*
xtrabackup_compress_alg
=
NULL
;
ibool
xtrabackup_compress
=
FALSE
;
uint
xtrabackup_compress
=
FALSE
;
uint
xtrabackup_compress_threads
;
uint
xtrabackup_compress_threads
;
ulonglong
xtrabackup_compress_chunk_size
=
0
;
ulonglong
xtrabackup_compress_chunk_size
=
0
;
...
@@ -531,13 +531,13 @@ static os_event_t dbug_start_query_thread(
...
@@ -531,13 +531,13 @@ static os_event_t dbug_start_query_thread(
if
(
exists
)
{
if
(
exists
)
{
goto
end
;
goto
end
;
}
}
msg
_ts
(
"Waiting for query '%s' on connection %lu to "
msg
(
"Waiting for query '%s' on connection %lu to "
" reach state '%s'"
,
query
,
mysql_thread_id
(
par
->
con
),
" reach state '%s'"
,
query
,
mysql_thread_id
(
par
->
con
),
wait_state
);
wait_state
);
my_sleep
(
1000
);
my_sleep
(
1000
);
}
}
end:
end:
msg
_ts
(
"query '%s' on connection %lu reached state '%s'"
,
query
,
msg
(
"query '%s' on connection %lu reached state '%s'"
,
query
,
mysql_thread_id
(
par
->
con
),
wait_state
);
mysql_thread_id
(
par
->
con
),
wait_state
);
return
par
->
done_event
;
return
par
->
done_event
;
}
}
...
@@ -608,16 +608,16 @@ static void backup_file_op(ulint space_id, const byte* flags,
...
@@ -608,16 +608,16 @@ static void backup_file_op(ulint space_id, const byte* flags,
if
(
flags
)
{
if
(
flags
)
{
ddl_tracker
.
id_to_name
[
space_id
]
=
filename_to_spacename
(
name
,
len
);
ddl_tracker
.
id_to_name
[
space_id
]
=
filename_to_spacename
(
name
,
len
);
msg
(
"DDL tracking : create %zu
\"
%.*s
\"
: %x
\n
"
,
msg
(
"DDL tracking : create %zu
\"
%.*s
\"
: %x"
,
space_id
,
int
(
len
),
name
,
mach_read_from_4
(
flags
));
space_id
,
int
(
len
),
name
,
mach_read_from_4
(
flags
));
}
}
else
if
(
new_name
)
{
else
if
(
new_name
)
{
ddl_tracker
.
id_to_name
[
space_id
]
=
filename_to_spacename
(
new_name
,
new_len
);
ddl_tracker
.
id_to_name
[
space_id
]
=
filename_to_spacename
(
new_name
,
new_len
);
msg
(
"DDL tracking : rename %zu
\"
%.*s
\"
,
\"
%.*s
\"
\n
"
,
msg
(
"DDL tracking : rename %zu
\"
%.*s
\"
,
\"
%.*s
\"
"
,
space_id
,
int
(
len
),
name
,
int
(
new_len
),
new_name
);
space_id
,
int
(
len
),
name
,
int
(
new_len
),
new_name
);
}
else
{
}
else
{
ddl_tracker
.
drops
.
insert
(
space_id
);
ddl_tracker
.
drops
.
insert
(
space_id
);
msg
(
"DDL tracking : delete %zu
\"
%.*s
\"
\n
"
,
space_id
,
int
(
len
),
name
);
msg
(
"DDL tracking : delete %zu
\"
%.*s
\"
"
,
space_id
,
int
(
len
),
name
);
}
}
pthread_mutex_unlock
(
&
backup_mutex
);
pthread_mutex_unlock
(
&
backup_mutex
);
}
}
...
@@ -639,13 +639,13 @@ static void backup_file_op_fail(ulint space_id, const byte* flags,
...
@@ -639,13 +639,13 @@ static void backup_file_op_fail(ulint space_id, const byte* flags,
ut_a
(
opt_no_lock
);
ut_a
(
opt_no_lock
);
bool
fail
;
bool
fail
;
if
(
flags
)
{
if
(
flags
)
{
msg
(
"DDL tracking : create %zu
\"
%.*s
\"
: %x
\n
"
,
msg
(
"DDL tracking : create %zu
\"
%.*s
\"
: %x"
,
space_id
,
int
(
len
),
name
,
mach_read_from_4
(
flags
));
space_id
,
int
(
len
),
name
,
mach_read_from_4
(
flags
));
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
fail
=
!
check_if_skip_table
(
spacename
.
c_str
());
fail
=
!
check_if_skip_table
(
spacename
.
c_str
());
}
}
else
if
(
new_name
)
{
else
if
(
new_name
)
{
msg
(
"DDL tracking : rename %zu
\"
%.*s
\"
,
\"
%.*s
\"
\n
"
,
msg
(
"DDL tracking : rename %zu
\"
%.*s
\"
,
\"
%.*s
\"
"
,
space_id
,
int
(
len
),
name
,
int
(
new_len
),
new_name
);
space_id
,
int
(
len
),
name
,
int
(
new_len
),
new_name
);
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
std
::
string
new_spacename
=
filename_to_spacename
(
new_name
,
new_len
);
std
::
string
new_spacename
=
filename_to_spacename
(
new_name
,
new_len
);
...
@@ -654,11 +654,11 @@ static void backup_file_op_fail(ulint space_id, const byte* flags,
...
@@ -654,11 +654,11 @@ static void backup_file_op_fail(ulint space_id, const byte* flags,
else
{
else
{
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
std
::
string
spacename
=
filename_to_spacename
(
name
,
len
);
fail
=
!
check_if_skip_table
(
spacename
.
c_str
());
fail
=
!
check_if_skip_table
(
spacename
.
c_str
());
msg
(
"DDL tracking : delete %zu
\"
%.*s
\"
\n
"
,
space_id
,
int
(
len
),
name
);
msg
(
"DDL tracking : delete %zu
\"
%.*s
\"
"
,
space_id
,
int
(
len
),
name
);
}
}
if
(
fail
)
{
if
(
fail
)
{
msg
(
"ERROR : DDL operation detected in the late phase of backup."
msg
(
"ERROR : DDL operation detected in the late phase of backup."
"Backup is inconsistent. Remove --no-lock option to fix.
\n
"
);
"Backup is inconsistent. Remove --no-lock option to fix."
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -679,10 +679,10 @@ static void backup_optimized_ddl_op(ulint space_id)
...
@@ -679,10 +679,10 @@ static void backup_optimized_ddl_op(ulint space_id)
*/
*/
static
void
backup_optimized_ddl_op_fail
(
ulint
space_id
)
{
static
void
backup_optimized_ddl_op_fail
(
ulint
space_id
)
{
ut_a
(
opt_no_lock
);
ut_a
(
opt_no_lock
);
msg
(
"DDL tracking : optimized DDL on space %zu
\n
"
,
space_id
);
msg
(
"DDL tracking : optimized DDL on space %zu"
,
space_id
);
if
(
ddl_tracker
.
tables_in_backup
.
find
(
space_id
)
!=
ddl_tracker
.
tables_in_backup
.
end
())
{
if
(
ddl_tracker
.
tables_in_backup
.
find
(
space_id
)
!=
ddl_tracker
.
tables_in_backup
.
end
())
{
msg
(
"ERROR : Optimized DDL operation detected in the late phase of backup."
msg
(
"ERROR : Optimized DDL operation detected in the late phase of backup."
"Backup is inconsistent. Remove --no-lock option to fix.
\n
"
);
"Backup is inconsistent. Remove --no-lock option to fix."
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -691,7 +691,7 @@ static void backup_optimized_ddl_op_fail(ulint space_id) {
...
@@ -691,7 +691,7 @@ static void backup_optimized_ddl_op_fail(ulint space_id) {
/** Callback whenever MLOG_TRUNCATE happens. */
/** Callback whenever MLOG_TRUNCATE happens. */
static
void
backup_truncate_fail
()
static
void
backup_truncate_fail
()
{
{
msg
(
"mariabackup: Incompatible TRUNCATE operation detected.%s
\n
"
,
msg
(
"mariabackup: Incompatible TRUNCATE operation detected.%s"
,
opt_lock_ddl_per_table
opt_lock_ddl_per_table
?
""
?
""
:
" Use --lock-ddl-per-table to lock all tables before backup."
);
:
" Use --lock-ddl-per-table to lock all tables before backup."
);
...
@@ -1457,14 +1457,14 @@ debug_sync_point(const char *name)
...
@@ -1457,14 +1457,14 @@ debug_sync_point(const char *name)
xtrabackup_target_dir
);
xtrabackup_target_dir
);
fp
=
fopen
(
pid_path
,
"w"
);
fp
=
fopen
(
pid_path
,
"w"
);
if
(
fp
==
NULL
)
{
if
(
fp
==
NULL
)
{
msg
(
"mariabackup: Error: cannot open %s
\n
"
,
pid_path
);
msg
(
"mariabackup: Error: cannot open %s"
,
pid_path
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
fprintf
(
fp
,
"%u
\n
"
,
(
uint
)
pid
);
fprintf
(
fp
,
"%u
\n
"
,
(
uint
)
pid
);
fclose
(
fp
);
fclose
(
fp
);
msg
(
"mariabackup: DEBUG: Suspending at debug sync point '%s'. "
msg
(
"mariabackup: DEBUG: Suspending at debug sync point '%s'. "
"Resume with 'kill -SIGCONT %u'.
\n
"
,
name
,
(
uint
)
pid
);
"Resume with 'kill -SIGCONT %u'."
,
name
,
(
uint
)
pid
);
debug_sync_resumed
=
0
;
debug_sync_resumed
=
0
;
kill
(
pid
,
SIGSTOP
);
kill
(
pid
,
SIGSTOP
);
...
@@ -1473,7 +1473,7 @@ debug_sync_point(const char *name)
...
@@ -1473,7 +1473,7 @@ debug_sync_point(const char *name)
}
}
/* On resume */
/* On resume */
msg
(
"mariabackup: DEBUG: removing the pid file.
\n
"
);
msg
(
"mariabackup: DEBUG: removing the pid file."
);
my_delete
(
pid_path
,
MYF
(
MY_WME
));
my_delete
(
pid_path
,
MYF
(
MY_WME
));
#endif
#endif
}
}
...
@@ -1593,7 +1593,7 @@ static const char *xb_server_default_groups[]=
...
@@ -1593,7 +1593,7 @@ static const char *xb_server_default_groups[]=
static
void
print_version
(
void
)
static
void
print_version
(
void
)
{
{
msg
(
"%s based on MariaDB server %s %s (%s)
\n
"
,
msg
(
"%s based on MariaDB server %s %s (%s)"
,
my_progname
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
my_progname
,
MYSQL_SERVER_VERSION
,
SYSTEM_TYPE
,
MACHINE_TYPE
);
}
}
...
@@ -1717,7 +1717,7 @@ xb_get_one_option(int optid,
...
@@ -1717,7 +1717,7 @@ xb_get_one_option(int optid,
xtrabackup_stream_fmt
=
XB_STREAM_FMT_XBSTREAM
;
xtrabackup_stream_fmt
=
XB_STREAM_FMT_XBSTREAM
;
else
else
{
{
msg
(
"Invalid --stream argument: %s
\n
"
,
argument
);
msg
(
"Invalid --stream argument: %s"
,
argument
);
return
1
;
return
1
;
}
}
xtrabackup_stream
=
TRUE
;
xtrabackup_stream
=
TRUE
;
...
@@ -1727,7 +1727,7 @@ xb_get_one_option(int optid,
...
@@ -1727,7 +1727,7 @@ xb_get_one_option(int optid,
xtrabackup_compress_alg
=
"quicklz"
;
xtrabackup_compress_alg
=
"quicklz"
;
else
if
(
strcasecmp
(
argument
,
"quicklz"
))
else
if
(
strcasecmp
(
argument
,
"quicklz"
))
{
{
msg
(
"Invalid --compress argument: %s
\n
"
,
argument
);
msg
(
"Invalid --compress argument: %s"
,
argument
);
return
1
;
return
1
;
}
}
xtrabackup_compress
=
TRUE
;
xtrabackup_compress
=
TRUE
;
...
@@ -1808,8 +1808,8 @@ innodb_init_param(void)
...
@@ -1808,8 +1808,8 @@ innodb_init_param(void)
if
(
n_shift
>=
12
&&
n_shift
<=
UNIV_PAGE_SIZE_SHIFT_MAX
)
{
if
(
n_shift
>=
12
&&
n_shift
<=
UNIV_PAGE_SIZE_SHIFT_MAX
)
{
srv_page_size_shift
=
n_shift
;
srv_page_size_shift
=
n_shift
;
srv_page_size
=
1
<<
n_shift
;
srv_page_size
=
1
<<
n_shift
;
msg
(
"InnoDB: The
universal
page size of the "
msg
(
"InnoDB: The page size of the "
"database is set to %lu.
\n
"
,
srv_page_size
);
"database is set to %lu."
,
srv_page_size
);
}
else
{
}
else
{
msg
(
"InnoDB: Error: invalid value of "
msg
(
"InnoDB: Error: invalid value of "
"innobase_page_size: %lld"
,
innobase_page_size
);
"innobase_page_size: %lld"
,
innobase_page_size
);
...
@@ -1824,12 +1824,12 @@ innodb_init_param(void)
...
@@ -1824,12 +1824,12 @@ innodb_init_param(void)
if
(
sizeof
(
ulint
)
==
4
)
{
if
(
sizeof
(
ulint
)
==
4
)
{
if
(
xtrabackup_use_memory
>
UINT_MAX32
)
{
if
(
xtrabackup_use_memory
>
UINT_MAX32
)
{
msg
(
"mariabackup: use-memory can't be over 4GB"
msg
(
"mariabackup: use-memory can't be over 4GB"
" on 32-bit systems
\n
"
);
" on 32-bit systems"
);
}
}
if
(
innobase_buffer_pool_size
>
UINT_MAX32
)
{
if
(
innobase_buffer_pool_size
>
UINT_MAX32
)
{
msg
(
"mariabackup: innobase_buffer_pool_size can't be "
msg
(
"mariabackup: innobase_buffer_pool_size can't be "
"over 4GB on 32-bit systems
\n
"
);
"over 4GB on 32-bit systems"
);
goto
error
;
goto
error
;
}
}
...
@@ -1842,10 +1842,10 @@ innodb_init_param(void)
...
@@ -1842,10 +1842,10 @@ innodb_init_param(void)
read from MySQL .cnf file */
read from MySQL .cnf file */
if
(
xtrabackup_backup
)
{
if
(
xtrabackup_backup
)
{
msg
(
"mariabackup: using the following InnoDB configuration:
\n
"
);
msg
(
"mariabackup: using the following InnoDB configuration:"
);
}
else
{
}
else
{
msg
(
"mariabackup: using the following InnoDB configuration "
msg
(
"mariabackup: using the following InnoDB configuration "
"for recovery:
\n
"
);
"for recovery:"
);
}
}
/*--------------- Data files -------------------------*/
/*--------------- Data files -------------------------*/
...
@@ -1854,7 +1854,7 @@ innodb_init_param(void)
...
@@ -1854,7 +1854,7 @@ innodb_init_param(void)
srv_data_home
=
(
xtrabackup_backup
&&
innobase_data_home_dir
srv_data_home
=
(
xtrabackup_backup
&&
innobase_data_home_dir
?
innobase_data_home_dir
:
default_path
);
?
innobase_data_home_dir
:
default_path
);
msg
(
"
mariabackup: innodb_data_home_dir = %s
\n
"
,
srv_data_home
);
msg
(
"
innodb_data_home_dir = %s
"
,
srv_data_home
);
/* Set default InnoDB data file size to 10 MB and let it be
/* Set default InnoDB data file size to 10 MB and let it be
auto-extending. Thus users can use InnoDB in >= 4.0 without having
auto-extending. Thus users can use InnoDB in >= 4.0 without having
...
@@ -1863,7 +1863,7 @@ innodb_init_param(void)
...
@@ -1863,7 +1863,7 @@ innodb_init_param(void)
if
(
!
innobase_data_file_path
)
{
if
(
!
innobase_data_file_path
)
{
innobase_data_file_path
=
(
char
*
)
"ibdata1:10M:autoextend"
;
innobase_data_file_path
=
(
char
*
)
"ibdata1:10M:autoextend"
;
}
}
msg
(
"
mariabackup: innodb_data_file_path = %s
\n
"
,
msg
(
"
innodb_data_file_path = %s
"
,
innobase_data_file_path
);
innobase_data_file_path
);
/* This is the first time univ_page_size is used.
/* This is the first time univ_page_size is used.
...
@@ -1890,13 +1890,12 @@ innodb_init_param(void)
...
@@ -1890,13 +1890,12 @@ innodb_init_param(void)
if
(
xtrabackup_prepare
&&
xtrabackup_incremental_dir
)
{
if
(
xtrabackup_prepare
&&
xtrabackup_incremental_dir
)
{
srv_log_group_home_dir
=
xtrabackup_incremental_dir
;
srv_log_group_home_dir
=
xtrabackup_incremental_dir
;
}
}
msg
(
"
mariabackup: innodb_log_group_home_dir = %s
\n
"
,
msg
(
"
innodb_log_group_home_dir = %s
"
,
srv_log_group_home_dir
);
srv_log_group_home_dir
);
os_normalize_path
(
srv_log_group_home_dir
);
os_normalize_path
(
srv_log_group_home_dir
);
if
(
strchr
(
srv_log_group_home_dir
,
';'
))
{
if
(
strchr
(
srv_log_group_home_dir
,
';'
))
{
msg
(
"syntax error in innodb_log_group_home_dir, "
);
msg
(
"syntax error in innodb_log_group_home_dir, "
);
goto
error
;
goto
error
;
}
}
...
@@ -1963,8 +1962,7 @@ innodb_init_param(void)
...
@@ -1963,8 +1962,7 @@ innodb_init_param(void)
#elif defined(LINUX_NATIVE_AIO)
#elif defined(LINUX_NATIVE_AIO)
if
(
srv_use_native_aio
)
{
if
(
srv_use_native_aio
)
{
ut_print_timestamp
(
stderr
);
msg
(
"InnoDB: Using Linux native AIO"
);
msg
(
" InnoDB: Using Linux native AIO
\n
"
);
}
}
#else
#else
/* Currently native AIO is supported only on windows and linux
/* Currently native AIO is supported only on windows and linux
...
@@ -1991,7 +1989,7 @@ innodb_init_param(void)
...
@@ -1991,7 +1989,7 @@ innodb_init_param(void)
return
(
FALSE
);
return
(
FALSE
);
error:
error:
msg
(
"
mariabackup: innodb_init_param(): Error occured.
\n
"
);
msg
(
"
innodb_init_param(): Error occured.
"
);
return
(
TRUE
);
return
(
TRUE
);
}
}
...
@@ -1999,7 +1997,7 @@ static bool innodb_init()
...
@@ -1999,7 +1997,7 @@ static bool innodb_init()
{
{
dberr_t
err
=
innobase_start_or_create_for_mysql
();
dberr_t
err
=
innobase_start_or_create_for_mysql
();
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
!=
DB_SUCCESS
)
{
msg
(
"mariabackup: innodb_init() returned %d (%s).
\n
"
,
msg
(
"mariabackup: innodb_init() returned %d (%s)."
,
err
,
ut_strerr
(
err
));
err
,
ut_strerr
(
err
));
innodb_shutdown
();
innodb_shutdown
();
return
(
TRUE
);
return
(
TRUE
);
...
@@ -2023,7 +2021,7 @@ xtrabackup_read_metadata(char *filename)
...
@@ -2023,7 +2021,7 @@ xtrabackup_read_metadata(char *filename)
fp
=
fopen
(
filename
,
"r"
);
fp
=
fopen
(
filename
,
"r"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
msg
(
"
mariabackup: Error: cannot open %s
\n
"
,
filename
);
msg
(
"
Error: cannot open %s
"
,
filename
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -2102,8 +2100,7 @@ xtrabackup_stream_metadata(ds_ctxt_t *ds_ctxt)
...
@@ -2102,8 +2100,7 @@ xtrabackup_stream_metadata(ds_ctxt_t *ds_ctxt)
stream
=
ds_open
(
ds_ctxt
,
XTRABACKUP_METADATA_FILENAME
,
&
mystat
);
stream
=
ds_open
(
ds_ctxt
,
XTRABACKUP_METADATA_FILENAME
,
&
mystat
);
if
(
stream
==
NULL
)
{
if
(
stream
==
NULL
)
{
msg
(
"mariabackup: Error: cannot open output stream "
msg
(
"Error: cannot open output stream for %s"
,
XTRABACKUP_METADATA_FILENAME
);
"for %s
\n
"
,
XTRABACKUP_METADATA_FILENAME
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -2135,7 +2132,7 @@ xtrabackup_write_metadata(const char *filepath)
...
@@ -2135,7 +2132,7 @@ xtrabackup_write_metadata(const char *filepath)
fp
=
fopen
(
filepath
,
"w"
);
fp
=
fopen
(
filepath
,
"w"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
msg
(
"
mariabackup: Error: cannot open %s
\n
"
,
filepath
);
msg
(
"
Error: cannot open %s
"
,
filepath
);
return
(
FALSE
);
return
(
FALSE
);
}
}
if
(
fwrite
(
buf
,
len
,
1
,
fp
)
<
1
)
{
if
(
fwrite
(
buf
,
len
,
1
,
fp
)
<
1
)
{
...
@@ -2184,7 +2181,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info)
...
@@ -2184,7 +2181,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info)
fclose
(
fp
);
fclose
(
fp
);
if
(
page_size
==
ULINT_UNDEFINED
)
{
if
(
page_size
==
ULINT_UNDEFINED
)
{
msg
(
"
mariabackup: page_size is required in %s
\n
"
,
filepath
);
msg
(
"
page_size is required in %s
"
,
filepath
);
r
=
FALSE
;
r
=
FALSE
;
}
else
{
}
else
{
info
->
page_size
=
page_size_t
(
zip_size
?
zip_size
:
page_size
,
info
->
page_size
=
page_size_t
(
zip_size
?
zip_size
:
page_size
,
...
@@ -2194,7 +2191,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info)
...
@@ -2194,7 +2191,7 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info)
if
(
info
->
space_id
==
ULINT_UNDEFINED
)
{
if
(
info
->
space_id
==
ULINT_UNDEFINED
)
{
msg
(
"mariabackup: Warning: This backup was taken with XtraBackup 2.0.1 "
msg
(
"mariabackup: Warning: This backup was taken with XtraBackup 2.0.1 "
"or earlier, some DDL operations between full and incremental "
"or earlier, some DDL operations between full and incremental "
"backups may be handled incorrectly
\n
"
);
"backups may be handled incorrectly"
);
}
}
return
(
r
);
return
(
r
);
...
@@ -2227,8 +2224,7 @@ xb_write_delta_metadata(const char *filename, const xb_delta_info_t *info)
...
@@ -2227,8 +2224,7 @@ xb_write_delta_metadata(const char *filename, const xb_delta_info_t *info)
f
=
ds_open
(
ds_meta
,
filename
,
&
mystat
);
f
=
ds_open
(
ds_meta
,
filename
,
&
mystat
);
if
(
f
==
NULL
)
{
if
(
f
==
NULL
)
{
msg
(
"mariabackup: Error: cannot open output stream for %s
\n
"
,
msg
(
"Error: Can't open output stream for %s"
,
filename
);
filename
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -2536,7 +2532,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
...
@@ -2536,7 +2532,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
if
(
fil_is_user_tablespace_id
(
node
->
space
->
id
)
if
(
fil_is_user_tablespace_id
(
node
->
space
->
id
)
&&
check_if_skip_table
(
node_name
))
{
&&
check_if_skip_table
(
node_name
))
{
msg
(
"[%02u] Skipping %s.
\n
"
,
thread_n
,
node_name
);
msg
(
thread_n
,
"Skipping %s."
,
node_name
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -2578,26 +2574,22 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
...
@@ -2578,26 +2574,22 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
if
(
write_filter
->
init
!=
NULL
&&
if
(
write_filter
->
init
!=
NULL
&&
!
write_filter
->
init
(
&
write_filt_ctxt
,
dst_name
,
&
cursor
))
{
!
write_filter
->
init
(
&
write_filt_ctxt
,
dst_name
,
&
cursor
))
{
msg
(
"[%02u] mariabackup: error: "
msg
(
thread_n
,
"mariabackup: error: failed to initialize page write filter."
);
"failed to initialize page write filter.
\n
"
,
thread_n
);
goto
error
;
goto
error
;
}
}
dstfile
=
ds_open
(
ds_data
,
dst_name
,
&
cursor
.
statinfo
);
dstfile
=
ds_open
(
ds_data
,
dst_name
,
&
cursor
.
statinfo
);
if
(
dstfile
==
NULL
)
{
if
(
dstfile
==
NULL
)
{
msg
(
"[%02u] mariabackup: error: "
msg
(
thread_n
,
"mariabackup: error: can't open the destination stream for %s"
,
dst_name
);
"cannot open the destination stream for %s
\n
"
,
thread_n
,
dst_name
);
goto
error
;
goto
error
;
}
}
action
=
xb_get_copy_action
();
action
=
xb_get_copy_action
();
if
(
xtrabackup_stream
)
{
if
(
xtrabackup_stream
)
{
msg
_ts
(
"[%02u] %s %s
\n
"
,
thread_n
,
action
,
node_path
);
msg
(
thread_n
,
"%s %s"
,
action
,
node_path
);
}
else
{
}
else
{
msg_ts
(
"[%02u] %s %s to %s
\n
"
,
thread_n
,
action
,
msg
(
thread_n
,
"%s %s to %s"
,
action
,
node_path
,
dstfile
->
path
);
node_path
,
dstfile
->
path
);
}
}
/* The main copy loop */
/* The main copy loop */
...
@@ -2621,7 +2613,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
...
@@ -2621,7 +2613,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
pthread_mutex_unlock
(
&
backup_mutex
);
pthread_mutex_unlock
(
&
backup_mutex
);
/* close */
/* close */
msg
_ts
(
"[%02u] ...done
\n
"
,
thread_n
);
msg
(
thread_n
,
" ...done"
);
xb_fil_cur_close
(
&
cursor
);
xb_fil_cur_close
(
&
cursor
);
if
(
ds_close
(
dstfile
))
{
if
(
ds_close
(
dstfile
))
{
rc
=
TRUE
;
rc
=
TRUE
;
...
@@ -2639,8 +2631,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
...
@@ -2639,8 +2631,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
if
(
write_filter
&&
write_filter
->
deinit
)
{
if
(
write_filter
&&
write_filter
->
deinit
)
{
write_filter
->
deinit
(
&
write_filt_ctxt
);;
write_filter
->
deinit
(
&
write_filt_ctxt
);;
}
}
msg
(
"[%02u] mariabackup: Error: "
msg
(
thread_n
,
"mariabackup: xtrabackup_copy_datafile() failed."
);
"xtrabackup_copy_datafile() failed.
\n
"
,
thread_n
);
return
(
TRUE
);
/*ERROR*/
return
(
TRUE
);
/*ERROR*/
skip:
skip:
...
@@ -2651,11 +2642,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
...
@@ -2651,11 +2642,7 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n, const char *dest_name=
if
(
write_filter
&&
write_filter
->
deinit
)
{
if
(
write_filter
&&
write_filter
->
deinit
)
{
write_filter
->
deinit
(
&
write_filt_ctxt
);
write_filter
->
deinit
(
&
write_filt_ctxt
);
}
}
msg
(
"[%02u] mariabackup: Warning: We assume the "
msg
(
thread_n
,
"Warning: We assume the table was dropped during xtrabackup execution and ignore the tablespace %s"
,
node_name
);
"table was dropped during xtrabackup execution "
"and ignore the file.
\n
"
,
thread_n
);
msg
(
"[%02u] mariabackup: Warning: skipping tablespace %s.
\n
"
,
thread_n
,
node_name
);
return
(
FALSE
);
return
(
FALSE
);
}
}
...
@@ -2680,9 +2667,8 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
...
@@ -2680,9 +2667,8 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
&&
scanned_checkpoint
-
checkpoint
>=
0x80000000UL
)
{
&&
scanned_checkpoint
-
checkpoint
>=
0x80000000UL
)
{
/* Garbage from a log buffer flush which was made
/* Garbage from a log buffer flush which was made
before the most recent database recovery */
before the most recent database recovery */
msg
(
"mariabackup: checkpoint wrap: "
msg
(
0
,
"checkpoint wrap: "
LSN_PF
",%zx,%zx"
,
LSN_PF
",%zx,%zx
\n
"
,
scanned_lsn
,
scanned_checkpoint
,
checkpoint
);
scanned_lsn
,
scanned_checkpoint
,
checkpoint
);
break
;
break
;
}
}
...
@@ -2703,8 +2689,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
...
@@ -2703,8 +2689,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
>=
OS_FILE_LOG_BLOCK_SIZE
-
LOG_BLOCK_TRL_SIZE
>=
OS_FILE_LOG_BLOCK_SIZE
-
LOG_BLOCK_TRL_SIZE
||
data_len
<=
LOG_BLOCK_HDR_SIZE
)
{
||
data_len
<=
LOG_BLOCK_HDR_SIZE
)
{
/* We got a garbage block (abrupt end of the log). */
/* We got a garbage block (abrupt end of the log). */
msg
(
"mariabackup: garbage block: "
LSN_PF
",%zu
\n
"
,
msg
(
0
,
"garbage block: "
LSN_PF
",%zu"
,
scanned_lsn
,
data_len
);
scanned_lsn
,
data_len
);
break
;
break
;
}
else
{
}
else
{
/* We got a partial block (abrupt end of the log). */
/* We got a partial block (abrupt end of the log). */
...
@@ -2715,7 +2700,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
...
@@ -2715,7 +2700,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
if
(
more_data
&&
recv_parse_log_recs
(
0
,
STORE_NO
,
false
))
{
if
(
more_data
&&
recv_parse_log_recs
(
0
,
STORE_NO
,
false
))
{
msg
(
"
mariabackup: copying the log failed
\n
"
);
msg
(
"
Error: copying the log failed
"
);
return
(
0
);
return
(
0
);
}
}
...
@@ -2734,8 +2719,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
...
@@ -2734,8 +2719,7 @@ static lsn_t xtrabackup_copy_log(lsn_t start_lsn, lsn_t end_lsn, bool last)
}
}
if
(
ds_write
(
dst_log_file
,
log_sys
->
buf
,
write_size
))
{
if
(
ds_write
(
dst_log_file
,
log_sys
->
buf
,
write_size
))
{
msg
(
"mariabackup: Error: "
msg
(
"Error: write to logfile failed
\n
"
);
"write to logfile failed
\n
"
);
return
(
0
);
return
(
0
);
}
}
}
}
...
@@ -2772,7 +2756,7 @@ static bool xtrabackup_copy_logfile(bool last = false)
...
@@ -2772,7 +2756,7 @@ static bool xtrabackup_copy_logfile(bool last = false)
||
lsn
!=
start_lsn
)
{
||
lsn
!=
start_lsn
)
{
break
;
break
;
}
}
msg
(
"Retrying read of log at LSN="
LSN_PF
"
\n
"
,
lsn
);
msg
(
"Retrying read of log at LSN="
LSN_PF
,
lsn
);
my_sleep
(
1000
);
my_sleep
(
1000
);
}
}
...
@@ -2782,15 +2766,14 @@ static bool xtrabackup_copy_logfile(bool last = false)
...
@@ -2782,15 +2766,14 @@ static bool xtrabackup_copy_logfile(bool last = false)
log_mutex_exit
();
log_mutex_exit
();
if
(
!
start_lsn
)
{
if
(
!
start_lsn
)
{
msg
(
"mariabackup: Error: xtrabackup_copy_logfile()"
msg
(
"Error: xtrabackup_copy_logfile() failed."
);
" failed.
\n
"
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
while
(
start_lsn
==
end_lsn
);
}
while
(
start_lsn
==
end_lsn
);
ut_ad
(
start_lsn
==
log_sys
->
log
.
scanned_lsn
);
ut_ad
(
start_lsn
==
log_sys
->
log
.
scanned_lsn
);
msg
_ts
(
">> log scanned up to ("
LSN_PF
")
\n
"
,
start_lsn
);
msg
(
">> log scanned up to ("
LSN_PF
")
"
,
start_lsn
);
/* update global variable*/
/* update global variable*/
pthread_mutex_lock
(
&
backup_mutex
);
pthread_mutex_lock
(
&
backup_mutex
);
...
@@ -2899,7 +2882,7 @@ static void dbug_mariabackup_event(const char *event,const char *key)
...
@@ -2899,7 +2882,7 @@ static void dbug_mariabackup_event(const char *event,const char *key)
}
}
char
*
sql
=
getenv
(
envvar
);
char
*
sql
=
getenv
(
envvar
);
if
(
sql
)
{
if
(
sql
)
{
msg
(
"dbug_mariabackup_event : executing '%s'
\n
"
,
sql
);
msg
(
"dbug_mariabackup_event : executing '%s'"
,
sql
);
xb_mysql_query
(
mysql_connection
,
sql
,
false
,
true
);
xb_mysql_query
(
mysql_connection
,
sql
,
false
,
true
);
}
}
...
@@ -2930,14 +2913,10 @@ data_copy_thread_func(
...
@@ -2930,14 +2913,10 @@ data_copy_thread_func(
debug_sync_point
(
"data_copy_thread_func"
);
debug_sync_point
(
"data_copy_thread_func"
);
while
((
node
=
datafiles_iter_next
(
ctxt
->
it
))
!=
NULL
)
{
while
((
node
=
datafiles_iter_next
(
ctxt
->
it
))
!=
NULL
)
{
DBUG_MARIABACKUP_EVENT
(
"before_copy"
,
node
->
space
->
name
);
DBUG_MARIABACKUP_EVENT
(
"before_copy"
,
node
->
space
->
name
);
/* copy the datafile */
/* copy the datafile */
if
(
xtrabackup_copy_datafile
(
node
,
num
))
{
if
(
xtrabackup_copy_datafile
(
node
,
num
))
{
msg
(
"[%02u] mariabackup: Error: "
msg
(
num
,
"mariabackup: Error: failed to copy datafile."
);
"failed to copy datafile.
\n
"
,
num
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -3115,7 +3094,7 @@ xb_load_single_table_tablespace(
...
@@ -3115,7 +3094,7 @@ xb_load_single_table_tablespace(
Datafile
*
file
=
xb_new_datafile
(
name
,
is_remote
);
Datafile
*
file
=
xb_new_datafile
(
name
,
is_remote
);
if
(
file
->
open_read_only
(
true
)
!=
DB_SUCCESS
)
{
if
(
file
->
open_read_only
(
true
)
!=
DB_SUCCESS
)
{
msg
(
"Can't open datafile %s
\n
"
,
name
);
msg
(
"Can't open datafile %s"
,
name
);
ut_free
(
name
);
ut_free
(
name
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -3318,7 +3297,7 @@ static dberr_t xb_assign_undo_space_start()
...
@@ -3318,7 +3297,7 @@ static dberr_t xb_assign_undo_space_start()
OS_FILE_OPEN
,
OS_FILE_NORMAL
,
OS_DATA_FILE
,
true
,
&
ret
);
OS_FILE_OPEN
,
OS_FILE_NORMAL
,
OS_DATA_FILE
,
true
,
&
ret
);
if
(
!
ret
)
{
if
(
!
ret
)
{
msg
(
"
mariabackup: Error in opening %s
\n
"
,
srv_sys_space
.
first_datafile
()
->
filepath
());
msg
(
"
Error opening %s
"
,
srv_sys_space
.
first_datafile
()
->
filepath
());
return
DB_ERROR
;
return
DB_ERROR
;
}
}
...
@@ -3328,7 +3307,7 @@ static dberr_t xb_assign_undo_space_start()
...
@@ -3328,7 +3307,7 @@ static dberr_t xb_assign_undo_space_start()
retry:
retry:
if
(
!
os_file_read
(
IORequestRead
,
file
,
page
,
TRX_SYS_PAGE_NO
*
UNIV_PAGE_SIZE
,
if
(
!
os_file_read
(
IORequestRead
,
file
,
page
,
TRX_SYS_PAGE_NO
*
UNIV_PAGE_SIZE
,
UNIV_PAGE_SIZE
))
{
UNIV_PAGE_SIZE
))
{
msg
(
"
mariabackup: Reading TRX_SYS page failed.
\n
"
);
msg
(
"
Reading TRX_SYS page failed.
"
);
error
=
DB_ERROR
;
error
=
DB_ERROR
;
goto
func_exit
;
goto
func_exit
;
}
}
...
@@ -3386,8 +3365,7 @@ xb_load_tablespaces()
...
@@ -3386,8 +3365,7 @@ xb_load_tablespaces()
/* create_new_db must not be true. */
/* create_new_db must not be true. */
if
(
err
!=
DB_SUCCESS
||
create_new_db
)
{
if
(
err
!=
DB_SUCCESS
||
create_new_db
)
{
msg
(
"mariabackup: could not find data files at the "
msg
(
"Could not find data files at the specified datadir"
);
"specified datadir
\n
"
);
return
(
DB_ERROR
);
return
(
DB_ERROR
);
}
}
...
@@ -3402,7 +3380,7 @@ xb_load_tablespaces()
...
@@ -3402,7 +3380,7 @@ xb_load_tablespaces()
}
}
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
!=
DB_SUCCESS
)
{
msg
(
"
mariabackup:
Could not open data files.
\n
"
);
msg
(
"Could not open data files.
\n
"
);
return
(
err
);
return
(
err
);
}
}
...
@@ -3424,7 +3402,7 @@ xb_load_tablespaces()
...
@@ -3424,7 +3402,7 @@ xb_load_tablespaces()
srv_undo_tablespaces_init(), because fil_is_user_tablespace_id() *
srv_undo_tablespaces_init(), because fil_is_user_tablespace_id() *
relies on srv_undo_tablespaces_open to be properly initialized */
relies on srv_undo_tablespaces_open to be properly initialized */
msg
(
"mariabackup: Generating a list of tablespaces
\n
"
);
msg
(
"mariabackup: Generating a list of tablespaces"
);
err
=
enumerate_ibd_files
(
xb_load_single_table_tablespace
);
err
=
enumerate_ibd_files
(
xb_load_single_table_tablespace
);
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
!=
DB_SUCCESS
)
{
...
@@ -3527,12 +3505,12 @@ xb_validate_name(
...
@@ -3527,12 +3505,12 @@ xb_validate_name(
/* perform only basic validation. validate length and
/* perform only basic validation. validate length and
path symbols */
path symbols */
if
(
len
>
NAME_LEN
)
{
if
(
len
>
NAME_LEN
)
{
msg
(
"mariabackup: name `%s` is too long.
\n
"
,
name
);
msg
(
"mariabackup: name `%s` is too long."
,
name
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
p
=
strpbrk
(
name
,
"/
\\
~"
);
p
=
strpbrk
(
name
,
"/
\\
~"
);
if
(
p
&&
(
uint
)
(
p
-
name
)
<
NAME_LEN
)
{
if
(
p
&&
(
uint
)
(
p
-
name
)
<
NAME_LEN
)
{
msg
(
"mariabackup: name `%s` is not valid.
\n
"
,
name
);
msg
(
"mariabackup: name `%s` is not valid."
,
name
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -3611,7 +3589,7 @@ xb_register_table(
...
@@ -3611,7 +3589,7 @@ xb_register_table(
const
char
*
name
)
/*!< in: name of table */
const
char
*
name
)
/*!< in: name of table */
{
{
if
(
strchr
(
name
,
'.'
)
==
NULL
)
{
if
(
strchr
(
name
,
'.'
)
==
NULL
)
{
msg
(
"mariabackup: `%s` is not fully qualified name.
\n
"
,
name
);
msg
(
"mariabackup: `%s` is not fully qualified name."
,
name
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -3633,7 +3611,7 @@ xb_add_regex_to_list(
...
@@ -3633,7 +3611,7 @@ xb_add_regex_to_list(
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
regerror
(
ret
,
&
compiled_regex
,
errbuf
,
sizeof
(
errbuf
));
regerror
(
ret
,
&
compiled_regex
,
errbuf
,
sizeof
(
errbuf
));
msg
(
"mariabackup: error: %s regcomp(%s): %s
\n
"
,
msg
(
"mariabackup: error: %s regcomp(%s): %s"
,
error_context
,
regex
,
errbuf
);
error_context
,
regex
,
errbuf
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -3702,7 +3680,7 @@ xb_load_list_file(
...
@@ -3702,7 +3680,7 @@ xb_load_list_file(
/* read and store the filenames */
/* read and store the filenames */
fp
=
fopen
(
filename
,
"r"
);
fp
=
fopen
(
filename
,
"r"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
msg
(
"mariabackup: cannot open %s
\n
"
,
msg
(
"mariabackup: cannot open %s"
,
filename
);
filename
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
...
@@ -3965,11 +3943,11 @@ static bool xtrabackup_backup_low()
...
@@ -3965,11 +3943,11 @@ static bool xtrabackup_backup_low()
}
}
metadata_to_lsn
=
mach_read_from_8
(
metadata_to_lsn
=
mach_read_from_8
(
log_sys
->
checkpoint_buf
+
LOG_CHECKPOINT_LSN
);
log_sys
->
checkpoint_buf
+
LOG_CHECKPOINT_LSN
);
msg
(
"
mariabackup:
The latest check point"
msg
(
"The latest check point"
" (for incremental): '"
LSN_PF
"'
\n
"
,
" (for incremental): '"
LSN_PF
"'"
,
metadata_to_lsn
);
metadata_to_lsn
);
}
else
{
}
else
{
msg
(
"
mariabackup: Error: recv_find_max_checkpoint() failed.
\n
"
);
msg
(
"
Error: recv_find_max_checkpoint() failed.
"
);
}
}
log_mutex_exit
();
log_mutex_exit
();
}
}
...
@@ -3999,7 +3977,7 @@ static bool xtrabackup_backup_low()
...
@@ -3999,7 +3977,7 @@ static bool xtrabackup_backup_low()
metadata_last_lsn
=
log_copy_scanned_lsn
;
metadata_last_lsn
=
log_copy_scanned_lsn
;
if
(
!
xtrabackup_stream_metadata
(
ds_meta
))
{
if
(
!
xtrabackup_stream_metadata
(
ds_meta
))
{
msg
(
"
mariabackup: Error: failed to stream metadata.
\n
"
);
msg
(
"
Error: failed to stream metadata.
"
);
return
false
;
return
false
;
}
}
if
(
xtrabackup_extra_lsndir
)
{
if
(
xtrabackup_extra_lsndir
)
{
...
@@ -4008,15 +3986,15 @@ static bool xtrabackup_backup_low()
...
@@ -4008,15 +3986,15 @@ static bool xtrabackup_backup_low()
sprintf
(
filename
,
"%s/%s"
,
xtrabackup_extra_lsndir
,
sprintf
(
filename
,
"%s/%s"
,
xtrabackup_extra_lsndir
,
XTRABACKUP_METADATA_FILENAME
);
XTRABACKUP_METADATA_FILENAME
);
if
(
!
xtrabackup_write_metadata
(
filename
))
{
if
(
!
xtrabackup_write_metadata
(
filename
))
{
msg
(
"
mariabackup:
Error: failed to write metadata "
msg
(
"Error: failed to write metadata "
"to '%s'.
\n
"
,
filename
);
"to '%s'."
,
filename
);
return
false
;
return
false
;
}
}
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
))
{
msg
(
"
mariabackup:
Error: failed to write info "
msg
(
"Error: failed to write info "
"to '%s'.
\n
"
,
filename
);
"to '%s'."
,
filename
);
return
false
;
return
false
;
}
}
}
}
...
@@ -4039,19 +4017,19 @@ xtrabackup_backup_func()
...
@@ -4039,19 +4017,19 @@ xtrabackup_backup_func()
pthread_cond_init
(
&
scanned_lsn_cond
,
NULL
);
pthread_cond_init
(
&
scanned_lsn_cond
,
NULL
);
#ifdef USE_POSIX_FADVISE
#ifdef USE_POSIX_FADVISE
msg
(
"
mariabackup: uses posix_fadvise().
\n
"
);
msg
(
"
uses posix_fadvise().
"
);
#endif
#endif
/* cd to datadir */
/* cd to datadir */
if
(
my_setwd
(
mysql_real_data_home
,
MYF
(
MY_WME
)))
if
(
my_setwd
(
mysql_real_data_home
,
MYF
(
MY_WME
)))
{
{
msg
(
"m
ariabackup: cannot my_setwd %s
\n
"
,
mysql_real_data_home
);
msg
(
"m
y_setwd() failed , %s
"
,
mysql_real_data_home
);
return
(
false
);
return
(
false
);
}
}
msg
(
"
mariabackup: cd to %s
\n
"
,
mysql_real_data_home
);
msg
(
"
cd to %s
"
,
mysql_real_data_home
);
encryption_plugin_backup_init
(
mysql_connection
);
encryption_plugin_backup_init
(
mysql_connection
);
msg
(
"
mariabackup: open files limit requested %u, set to %u
\n
"
,
msg
(
"
open files limit requested %u, set to %u
"
,
(
uint
)
xb_open_files_limit
,
(
uint
)
xb_open_files_limit
,
xb_set_max_open_files
(
xb_open_files_limit
));
xb_set_max_open_files
(
xb_open_files_limit
));
...
@@ -4066,12 +4044,6 @@ xtrabackup_backup_func()
...
@@ -4066,12 +4044,6 @@ xtrabackup_backup_func()
log_file_op
=
backup_file_op
;
log_file_op
=
backup_file_op
;
metadata_to_lsn
=
0
;
metadata_to_lsn
=
0
;
if
(
xb_close_files
)
msg
(
"mariabackup: warning: close-files specified. Use it "
"at your own risk. If there are DDL operations like table DROP TABLE "
"or RENAME TABLE during the backup, inconsistent backup will be "
"produced.
\n
"
);
/* initialize components */
/* initialize components */
if
(
innodb_init_param
())
{
if
(
innodb_init_param
())
{
fail:
fail:
...
@@ -4100,21 +4072,21 @@ xtrabackup_backup_func()
...
@@ -4100,21 +4072,21 @@ xtrabackup_backup_func()
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"O_DIRECT"
))
{
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"O_DIRECT"
))
{
srv_file_flush_method
=
SRV_O_DIRECT
;
srv_file_flush_method
=
SRV_O_DIRECT
;
msg
(
"
mariabackup: using O_DIRECT
\n
"
);
msg
(
"
using O_DIRECT
"
);
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"littlesync"
))
{
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"littlesync"
))
{
srv_file_flush_method
=
SRV_LITTLESYNC
;
srv_file_flush_method
=
SRV_LITTLESYNC
;
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"nosync"
))
{
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"nosync"
))
{
srv_file_flush_method
=
SRV_NOSYNC
;
srv_file_flush_method
=
SRV_NOSYNC
;
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"ALL_O_DIRECT"
))
{
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"ALL_O_DIRECT"
))
{
srv_file_flush_method
=
SRV_ALL_O_DIRECT_FSYNC
;
srv_file_flush_method
=
SRV_ALL_O_DIRECT_FSYNC
;
msg
(
"
mariabackup: using ALL_O_DIRECT
\n
"
);
msg
(
"
using ALL_O_DIRECT
"
);
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
}
else
if
(
0
==
ut_strcmp
(
srv_file_flush_method_str
,
"O_DIRECT_NO_FSYNC"
))
{
"O_DIRECT_NO_FSYNC"
))
{
srv_file_flush_method
=
SRV_O_DIRECT_NO_FSYNC
;
srv_file_flush_method
=
SRV_O_DIRECT_NO_FSYNC
;
msg
(
"
mariabackup: using O_DIRECT_NO_FSYNC
\n
"
);
msg
(
"
using O_DIRECT_NO_FSYNC
"
);
}
else
{
}
else
{
msg
(
"
mariabackup:
Unrecognized value %s for "
msg
(
"Unrecognized value %s for "
"innodb_flush_method
\n
"
,
srv_file_flush_method_str
);
"innodb_flush_method"
,
srv_file_flush_method_str
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4179,7 +4151,7 @@ xtrabackup_backup_func()
...
@@ -4179,7 +4151,7 @@ xtrabackup_backup_func()
if
(
xtrabackup_extra_lsndir
if
(
xtrabackup_extra_lsndir
&&!
my_stat
(
xtrabackup_extra_lsndir
,
&
stat_info
,
MYF
(
0
))
&&!
my_stat
(
xtrabackup_extra_lsndir
,
&
stat_info
,
MYF
(
0
))
&&
(
my_mkdir
(
xtrabackup_extra_lsndir
,
0777
,
MYF
(
0
))
<
0
))
{
&&
(
my_mkdir
(
xtrabackup_extra_lsndir
,
0777
,
MYF
(
0
))
<
0
))
{
msg
(
"
mariabackup:
Error: cannot mkdir %d: %s
\n
"
,
msg
(
"Error: cannot mkdir %d: %s
\n
"
,
my_errno
,
xtrabackup_extra_lsndir
);
my_errno
,
xtrabackup_extra_lsndir
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4187,7 +4159,7 @@ xtrabackup_backup_func()
...
@@ -4187,7 +4159,7 @@ xtrabackup_backup_func()
/* create target dir if not exist */
/* create target dir if not exist */
if
(
!
xtrabackup_stream_str
&&
!
my_stat
(
xtrabackup_target_dir
,
&
stat_info
,
MYF
(
0
))
if
(
!
xtrabackup_stream_str
&&
!
my_stat
(
xtrabackup_target_dir
,
&
stat_info
,
MYF
(
0
))
&&
(
my_mkdir
(
xtrabackup_target_dir
,
0777
,
MYF
(
0
))
<
0
)){
&&
(
my_mkdir
(
xtrabackup_target_dir
,
0777
,
MYF
(
0
))
<
0
)){
msg
(
"
mariabackup:
Error: cannot mkdir %d: %s
\n
"
,
msg
(
"Error: cannot mkdir %d: %s
\n
"
,
my_errno
,
xtrabackup_target_dir
);
my_errno
,
xtrabackup_target_dir
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4214,8 +4186,8 @@ xtrabackup_backup_func()
...
@@ -4214,8 +4186,8 @@ xtrabackup_backup_func()
if
(
log_sys
->
log
.
format
==
0
)
{
if
(
log_sys
->
log
.
format
==
0
)
{
old_format:
old_format:
msg
(
"
mariabackup:
Error: cannot process redo log"
msg
(
"Error: cannot process redo log"
" before MariaDB 10.2.2
\n
"
);
" before MariaDB 10.2.2"
);
log_mutex_exit
();
log_mutex_exit
();
goto
log_fail
;
goto
log_fail
;
}
}
...
@@ -4254,8 +4226,8 @@ xtrabackup_backup_func()
...
@@ -4254,8 +4226,8 @@ xtrabackup_backup_func()
memset
(
&
stat_info
,
0
,
sizeof
(
MY_STAT
));
memset
(
&
stat_info
,
0
,
sizeof
(
MY_STAT
));
dst_log_file
=
ds_open
(
ds_redo
,
"ib_logfile0"
,
&
stat_info
);
dst_log_file
=
ds_open
(
ds_redo
,
"ib_logfile0"
,
&
stat_info
);
if
(
dst_log_file
==
NULL
)
{
if
(
dst_log_file
==
NULL
)
{
msg
(
"
mariabackup: e
rror: failed to open the target stream for "
msg
(
"
§
rror: failed to open the target stream for "
"'ib_logfile0'.
\n
"
);
"'ib_logfile0'."
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4274,7 +4246,7 @@ xtrabackup_backup_func()
...
@@ -4274,7 +4246,7 @@ xtrabackup_backup_func()
/* Write the log header. */
/* Write the log header. */
if
(
ds_write
(
dst_log_file
,
log_hdr
,
sizeof
log_hdr
))
{
if
(
ds_write
(
dst_log_file
,
log_hdr
,
sizeof
log_hdr
))
{
log_write_fail:
log_write_fail:
msg
(
"
mariabackup: error: write to logfile failed
\n
"
);
msg
(
"
error: write to logfile failed
"
);
goto
fail
;
goto
fail
;
}
}
/* Adjust the checkpoint page. */
/* Adjust the checkpoint page. */
...
@@ -4309,8 +4281,8 @@ xtrabackup_backup_func()
...
@@ -4309,8 +4281,8 @@ xtrabackup_backup_func()
/* Populate fil_system with tablespaces to copy */
/* Populate fil_system with tablespaces to copy */
err
=
xb_load_tablespaces
();
err
=
xb_load_tablespaces
();
if
(
err
!=
DB_SUCCESS
)
{
if
(
err
!=
DB_SUCCESS
)
{
msg
(
"m
ariabackup:
error: xb_load_tablespaces() failed with"
msg
(
"merror: xb_load_tablespaces() failed with"
" error %s.
\n
"
,
ut_strerr
(
err
));
" error %s."
,
ut_strerr
(
err
));
fail_before_log_copying_thread_start:
fail_before_log_copying_thread_start:
log_copying_running
=
false
;
log_copying_running
=
false
;
goto
fail
;
goto
fail
;
...
@@ -4339,7 +4311,7 @@ xtrabackup_backup_func()
...
@@ -4339,7 +4311,7 @@ xtrabackup_backup_func()
if
(
xtrabackup_parallel
>
1
)
{
if
(
xtrabackup_parallel
>
1
)
{
msg
(
"mariabackup: Starting %u threads for parallel data "
msg
(
"mariabackup: Starting %u threads for parallel data "
"files transfer
\n
"
,
xtrabackup_parallel
);
"files transfer"
,
xtrabackup_parallel
);
}
}
if
(
opt_lock_ddl_per_table
)
{
if
(
opt_lock_ddl_per_table
)
{
...
@@ -4353,7 +4325,7 @@ xtrabackup_backup_func()
...
@@ -4353,7 +4325,7 @@ xtrabackup_backup_func()
datafiles_iter_t
*
it
=
datafiles_iter_new
(
fil_system
);
datafiles_iter_t
*
it
=
datafiles_iter_new
(
fil_system
);
if
(
it
==
NULL
)
{
if
(
it
==
NULL
)
{
msg
(
"mariabackup: Error: datafiles_iter_new() failed.
\n
"
);
msg
(
"mariabackup: Error: datafiles_iter_new() failed."
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4414,16 +4386,16 @@ xtrabackup_backup_func()
...
@@ -4414,16 +4386,16 @@ xtrabackup_backup_func()
}
}
xtrabackup_destroy_datasinks
();
xtrabackup_destroy_datasinks
();
msg
(
"
mariabackup:
Redo log (from LSN "
LSN_PF
" to "
LSN_PF
msg
(
"Redo log (from LSN "
LSN_PF
" to "
LSN_PF
") was copied.
\n
"
,
checkpoint_lsn_start
,
log_copy_scanned_lsn
);
") was copied."
,
checkpoint_lsn_start
,
log_copy_scanned_lsn
);
xb_filters_free
();
xb_filters_free
();
xb_data_files_close
();
xb_data_files_close
();
/* Make sure that the latest checkpoint was included */
/* Make sure that the latest checkpoint was included */
if
(
metadata_to_lsn
>
log_copy_scanned_lsn
)
{
if
(
metadata_to_lsn
>
log_copy_scanned_lsn
)
{
msg
(
"
mariabackup: e
rror: failed to copy enough redo log ("
msg
(
"
E
rror: failed to copy enough redo log ("
"LSN="
LSN_PF
"; checkpoint LSN="
LSN_PF
").
\n
"
,
"LSN="
LSN_PF
"; checkpoint LSN="
LSN_PF
")."
,
log_copy_scanned_lsn
,
metadata_to_lsn
);
log_copy_scanned_lsn
,
metadata_to_lsn
);
goto
fail
;
goto
fail
;
}
}
...
@@ -4576,7 +4548,7 @@ void backup_fix_ddl(void)
...
@@ -4576,7 +4548,7 @@ void backup_fix_ddl(void)
const
char
*
dbname
=
buf
;
const
char
*
dbname
=
buf
;
char
*
p
=
strchr
(
buf
,
'/'
);
char
*
p
=
strchr
(
buf
,
'/'
);
if
(
p
==
0
)
{
if
(
p
==
0
)
{
msg
(
"Unexpected tablespace %s filename %s
\n
"
,
space_name
,
name
.
c_str
());
msg
(
"Unexpected tablespace %s filename %s"
,
space_name
,
name
.
c_str
());
ut_a
(
0
);
ut_a
(
0
);
}
}
ut_a
(
p
);
ut_a
(
p
);
...
@@ -4595,16 +4567,6 @@ void backup_fix_ddl(void)
...
@@ -4595,16 +4567,6 @@ void backup_fix_ddl(void)
continue
;
continue
;
std
::
string
dest_name
(
node
->
space
->
name
);
std
::
string
dest_name
(
node
->
space
->
name
);
dest_name
.
append
(
".new"
);
dest_name
.
append
(
".new"
);
#if 0
bool do_full_copy = ddl_tracker.optimized_ddl.find(n->space->id) != ddl_tracker.optimized_ddl.end();
if (do_full_copy) {
msg(
"Performing a full copy of the tablespace %s, because optimized (without redo logging) DDL operation"
"ran during backup. You can use set innodb_log_optimize_ddl=OFF to improve backup performance"
"in the future.\n",
n->space->name);
}
#endif
xtrabackup_copy_datafile
(
node
,
0
,
dest_name
.
c_str
()
/*, do_full_copy ? ULONGLONG_MAX:UNIV_PAGE_SIZE */
);
xtrabackup_copy_datafile
(
node
,
0
,
dest_name
.
c_str
()
/*, do_full_copy ? ULONGLONG_MAX:UNIV_PAGE_SIZE */
);
}
}
...
@@ -4659,14 +4621,14 @@ xb_space_create_file(
...
@@ -4659,14 +4621,14 @@ xb_space_create_file(
*
file
=
os_file_create_simple_no_error_handling
(
*
file
=
os_file_create_simple_no_error_handling
(
0
,
path
,
OS_FILE_CREATE
,
OS_FILE_READ_WRITE
,
false
,
&
ret
);
0
,
path
,
OS_FILE_CREATE
,
OS_FILE_READ_WRITE
,
false
,
&
ret
);
if
(
!
ret
)
{
if
(
!
ret
)
{
msg
(
"
mariabackup: cannot create file %s
\n
"
,
path
);
msg
(
"
Can't create file %s
"
,
path
);
return
ret
;
return
ret
;
}
}
ret
=
os_file_set_size
(
path
,
*
file
,
ret
=
os_file_set_size
(
path
,
*
file
,
FIL_IBD_FILE_INITIAL_SIZE
*
UNIV_PAGE_SIZE
);
FIL_IBD_FILE_INITIAL_SIZE
*
UNIV_PAGE_SIZE
);
if
(
!
ret
)
{
if
(
!
ret
)
{
msg
(
"mariabackup: cannot set size for file %s
\n
"
,
path
);
msg
(
"mariabackup: cannot set size for file %s"
,
path
);
os_file_close
(
*
file
);
os_file_close
(
*
file
);
os_file_delete
(
0
,
path
);
os_file_delete
(
0
,
path
);
return
ret
;
return
ret
;
...
@@ -4710,7 +4672,7 @@ xb_space_create_file(
...
@@ -4710,7 +4672,7 @@ xb_space_create_file(
free
(
buf
);
free
(
buf
);
if
(
!
ret
)
{
if
(
!
ret
)
{
msg
(
"mariabackup: could not write the first page to %s
\n
"
,
msg
(
"mariabackup: could not write the first page to %s"
,
path
);
path
);
os_file_close
(
*
file
);
os_file_close
(
*
file
);
os_file_delete
(
0
,
path
);
os_file_delete
(
0
,
path
);
...
@@ -4771,7 +4733,7 @@ xb_delta_open_matching_space(
...
@@ -4771,7 +4733,7 @@ xb_delta_open_matching_space(
/* Create the database directory if it doesn't exist yet */
/* Create the database directory if it doesn't exist yet */
if
(
!
os_file_create_directory
(
dest_dir
,
FALSE
))
{
if
(
!
os_file_create_directory
(
dest_dir
,
FALSE
))
{
msg
(
"mariabackup: error: cannot create dir %s
\n
"
,
dest_dir
);
msg
(
"mariabackup: error: cannot create dir %s"
,
dest_dir
);
return
file
;
return
file
;
}
}
...
@@ -4818,7 +4780,7 @@ xb_delta_open_matching_space(
...
@@ -4818,7 +4780,7 @@ xb_delta_open_matching_space(
snprintf
(
tmpname
,
FN_REFLEN
,
"%s/xtrabackup_tmp_#"
ULINTPF
,
snprintf
(
tmpname
,
FN_REFLEN
,
"%s/xtrabackup_tmp_#"
ULINTPF
,
dbname
,
fil_space
->
id
);
dbname
,
fil_space
->
id
);
msg
(
"mariabackup: Renaming %s to %s.ibd
\n
"
,
msg
(
"mariabackup: Renaming %s to %s.ibd"
,
fil_space
->
name
,
tmpname
);
fil_space
->
name
,
tmpname
);
if
(
!
fil_rename_tablespace
(
if
(
!
fil_rename_tablespace
(
...
@@ -4826,7 +4788,7 @@ xb_delta_open_matching_space(
...
@@ -4826,7 +4788,7 @@ xb_delta_open_matching_space(
fil_space
->
chain
.
start
->
name
,
fil_space
->
chain
.
start
->
name
,
tmpname
,
NULL
))
tmpname
,
NULL
))
{
{
msg
(
"mariabackup: Cannot rename %s to %s
\n
"
,
msg
(
"mariabackup: Cannot rename %s to %s"
,
fil_space
->
name
,
tmpname
);
fil_space
->
name
,
tmpname
);
goto
exit
;
goto
exit
;
}
}
...
@@ -4847,7 +4809,7 @@ xb_delta_open_matching_space(
...
@@ -4847,7 +4809,7 @@ xb_delta_open_matching_space(
strncpy
(
tmpname
,
dest_space_name
,
FN_REFLEN
);
strncpy
(
tmpname
,
dest_space_name
,
FN_REFLEN
);
msg
(
"mariabackup: Renaming %s to %s
\n
"
,
msg
(
"mariabackup: Renaming %s to %s"
,
fil_space
->
name
,
dest_space_name
);
fil_space
->
name
,
dest_space_name
);
if
(
!
fil_rename_tablespace
(
fil_space
->
id
,
if
(
!
fil_rename_tablespace
(
fil_space
->
id
,
...
@@ -4855,7 +4817,7 @@ xb_delta_open_matching_space(
...
@@ -4855,7 +4817,7 @@ xb_delta_open_matching_space(
tmpname
,
tmpname
,
NULL
))
NULL
))
{
{
msg
(
"mariabackup: Cannot rename %s to %s
\n
"
,
msg
(
"mariabackup: Cannot rename %s to %s"
,
fil_space
->
name
,
dest_space_name
);
fil_space
->
name
,
dest_space_name
);
goto
exit
;
goto
exit
;
}
}
...
@@ -4883,8 +4845,7 @@ xb_delta_open_matching_space(
...
@@ -4883,8 +4845,7 @@ xb_delta_open_matching_space(
*
success
=
xb_space_create_file
(
real_name
,
info
.
space_id
,
*
success
=
xb_space_create_file
(
real_name
,
info
.
space_id
,
flags
,
&
file
);
flags
,
&
file
);
}
else
{
}
else
{
msg
(
"mariabackup: Cannot create tablespace %s
\n
"
,
msg
(
"Can't create tablespace %s
\n
"
,
dest_space_name
);
dest_space_name
);
}
}
goto
exit
;
goto
exit
;
...
@@ -4954,12 +4915,12 @@ xtrabackup_apply_delta(
...
@@ -4954,12 +4915,12 @@ xtrabackup_apply_delta(
page_size
=
info
.
page_size
.
physical
();
page_size
=
info
.
page_size
.
physical
();
page_size_shift
=
get_bit_shift
(
page_size
);
page_size_shift
=
get_bit_shift
(
page_size
);
msg
(
"
mariabackup: page size for %s is %zu bytes
\n
"
,
msg
(
"
page size for %s is %zu bytes
"
,
src_path
,
page_size
);
src_path
,
page_size
);
if
(
page_size_shift
<
10
||
if
(
page_size_shift
<
10
||
page_size_shift
>
UNIV_PAGE_SIZE_SHIFT_MAX
)
{
page_size_shift
>
UNIV_PAGE_SIZE_SHIFT_MAX
)
{
msg
(
"
mariabackup:
error: invalid value of page_size "
msg
(
"error: invalid value of page_size "
"(%zu bytes) read from %s
\n
"
,
page_size
,
meta_path
);
"(%zu bytes) read from %s"
,
page_size
,
meta_path
);
goto
error
;
goto
error
;
}
}
...
@@ -4968,7 +4929,7 @@ xtrabackup_apply_delta(
...
@@ -4968,7 +4929,7 @@ xtrabackup_apply_delta(
OS_FILE_OPEN
,
OS_FILE_READ_WRITE
,
false
,
&
success
);
OS_FILE_OPEN
,
OS_FILE_READ_WRITE
,
false
,
&
success
);
if
(
!
success
)
{
if
(
!
success
)
{
os_file_get_last_error
(
TRUE
);
os_file_get_last_error
(
TRUE
);
msg
(
"
mariabackup: error: cannot open %s
\n
"
,
src_path
);
msg
(
"
error: can't open %s
"
,
src_path
);
goto
error
;
goto
error
;
}
}
...
@@ -4978,7 +4939,7 @@ xtrabackup_apply_delta(
...
@@ -4978,7 +4939,7 @@ xtrabackup_apply_delta(
dbname
,
space_name
,
info
,
dbname
,
space_name
,
info
,
dst_path
,
sizeof
(
dst_path
),
&
success
);
dst_path
,
sizeof
(
dst_path
),
&
success
);
if
(
!
success
)
{
if
(
!
success
)
{
msg
(
"
mariabackup: error: cannot open %s
\n
"
,
dst_path
);
msg
(
"
error: can't open %s
"
,
dst_path
);
goto
error
;
goto
error
;
}
}
...
@@ -4991,7 +4952,7 @@ xtrabackup_apply_delta(
...
@@ -4991,7 +4952,7 @@ xtrabackup_apply_delta(
(
ut_align
(
incremental_buffer_base
,
(
ut_align
(
incremental_buffer_base
,
page_size
));
page_size
));
msg
(
"Applying %s to %s...
\n
"
,
src_path
,
dst_path
);
msg
(
"Applying %s to %s..."
,
src_path
,
dst_path
);
while
(
!
last_buffer
)
{
while
(
!
last_buffer
)
{
ulint
cluster_header
;
ulint
cluster_header
;
...
@@ -5014,8 +4975,8 @@ xtrabackup_apply_delta(
...
@@ -5014,8 +4975,8 @@ xtrabackup_apply_delta(
last_buffer
=
TRUE
;
last_buffer
=
TRUE
;
break
;
break
;
default:
default:
msg
(
"
mariabackup:
error: %s seems not "
msg
(
"error: %s seems not "
".delta file.
\n
"
,
src_path
);
".delta file."
,
src_path
);
goto
error
;
goto
error
;
}
}
...
@@ -5114,7 +5075,7 @@ xtrabackup_apply_delta(
...
@@ -5114,7 +5075,7 @@ xtrabackup_apply_delta(
os_file_close
(
src_file
);
os_file_close
(
src_file
);
if
(
dst_file
!=
OS_FILE_CLOSED
)
if
(
dst_file
!=
OS_FILE_CLOSED
)
os_file_close
(
dst_file
);
os_file_close
(
dst_file
);
msg
(
"
mariabackup:
Error: xtrabackup_apply_delta(): "
msg
(
"Error: xtrabackup_apply_delta(): "
"failed to apply %s to %s.
\n
"
,
src_path
,
dst_path
);
"failed to apply %s to %s.
\n
"
,
src_path
,
dst_path
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -5132,7 +5093,7 @@ std::string change_extension(std::string filename, std::string new_ext) {
...
@@ -5132,7 +5093,7 @@ std::string change_extension(std::string filename, std::string new_ext) {
static
void
rename_file
(
const
char
*
from
,
const
char
*
to
)
{
static
void
rename_file
(
const
char
*
from
,
const
char
*
to
)
{
msg
(
"Renaming %s to %s
\n
"
,
from
,
to
);
msg
(
"Renaming %s to %s
\n
"
,
from
,
to
);
if
(
my_rename
(
from
,
to
,
MY_WME
))
{
if
(
my_rename
(
from
,
to
,
MY_WME
))
{
msg
(
"Can
no
t rename %s to %s errno %d"
,
from
,
to
,
errno
);
msg
(
"Can
'
t rename %s to %s errno %d"
,
from
,
to
,
errno
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -5154,7 +5115,7 @@ typedef ibool (*handle_datadir_entry_func_t)(
...
@@ -5154,7 +5115,7 @@ typedef ibool (*handle_datadir_entry_func_t)(
/** Rename, and replace destination file, if exists */
/** Rename, and replace destination file, if exists */
static
void
rename_force
(
const
char
*
from
,
const
char
*
to
)
{
static
void
rename_force
(
const
char
*
from
,
const
char
*
to
)
{
if
(
access
(
to
,
R_OK
)
==
0
)
{
if
(
access
(
to
,
R_OK
)
==
0
)
{
msg
(
"Removing %s
\n
"
,
to
);
msg
(
"Removing %s"
,
to
);
if
(
my_delete
(
to
,
MYF
(
MY_WME
)))
{
if
(
my_delete
(
to
,
MYF
(
MY_WME
)))
{
msg
(
"Can't remove %s, errno %d"
,
to
,
errno
);
msg
(
"Can't remove %s, errno %d"
,
to
,
errno
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
...
@@ -5274,16 +5235,14 @@ xb_process_datadir(
...
@@ -5274,16 +5235,14 @@ xb_process_datadir(
os_file_closedir
(
dbdir
);
os_file_closedir
(
dbdir
);
}
else
{
}
else
{
msg
(
"mariabackup: Cannot open dir %s
\n
"
,
msg
(
"Can't open dir %s"
,
path
);
path
);
}
}
/* single table tablespaces */
/* single table tablespaces */
dir
=
os_file_opendir
(
path
,
FALSE
);
dir
=
os_file_opendir
(
path
,
FALSE
);
if
(
dir
==
NULL
)
{
if
(
dir
==
NULL
)
{
msg
(
"mariabackup: Cannot open dir %s
\n
"
,
msg
(
"Can't open dir %s"
,
path
);
path
);
}
}
ret
=
fil_file_readdir_next_file
(
&
err
,
path
,
dir
,
ret
=
fil_file_readdir_next_file
(
&
err
,
path
,
dir
,
...
@@ -5379,7 +5338,7 @@ store_binlog_info(const char* filename, const char* name, ulonglong pos)
...
@@ -5379,7 +5338,7 @@ store_binlog_info(const char* filename, const char* name, ulonglong pos)
FILE
*
fp
=
fopen
(
filename
,
"w"
);
FILE
*
fp
=
fopen
(
filename
,
"w"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
msg
(
"mariabackup: failed to open '%s'
\n
"
,
filename
);
msg
(
"mariabackup: failed to open '%s'"
,
filename
);
return
(
false
);
return
(
false
);
}
}
...
@@ -5400,7 +5359,7 @@ static std::string read_file_as_string(const std::string file) {
...
@@ -5400,7 +5359,7 @@ static std::string read_file_as_string(const std::string file) {
char
content
[
FN_REFLEN
];
char
content
[
FN_REFLEN
];
FILE
*
f
=
fopen
(
file
.
c_str
(),
"r"
);
FILE
*
f
=
fopen
(
file
.
c_str
(),
"r"
);
if
(
!
f
)
{
if
(
!
f
)
{
msg
(
"Can not open %s
\n
"
,
file
.
c_str
());
msg
(
"Can not open %s"
,
file
.
c_str
());
}
}
size_t
len
=
fread
(
content
,
1
,
FN_REFLEN
,
f
);
size_t
len
=
fread
(
content
,
1
,
FN_REFLEN
,
f
);
fclose
(
f
);
fclose
(
f
);
...
@@ -5497,11 +5456,10 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5497,11 +5456,10 @@ xtrabackup_prepare_func(char** argv)
if
(
my_setwd
(
xtrabackup_real_target_dir
,
MYF
(
MY_WME
)))
if
(
my_setwd
(
xtrabackup_real_target_dir
,
MYF
(
MY_WME
)))
{
{
msg
(
"mariabackup: cannot my_setwd %s
\n
"
,
msg
(
"can't my_setwd %s"
,
xtrabackup_real_target_dir
);
xtrabackup_real_target_dir
);
return
(
false
);
return
(
false
);
}
}
msg
(
"
mariabackup: cd to %s
\n
"
,
xtrabackup_real_target_dir
);
msg
(
"
cd to %s
"
,
xtrabackup_real_target_dir
);
fil_path_to_mysql_datadir
=
"."
;
fil_path_to_mysql_datadir
=
"."
;
...
@@ -5537,32 +5495,31 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5537,32 +5495,31 @@ xtrabackup_prepare_func(char** argv)
XTRABACKUP_METADATA_FILENAME
);
XTRABACKUP_METADATA_FILENAME
);
if
(
!
xtrabackup_read_metadata
(
metadata_path
))
{
if
(
!
xtrabackup_read_metadata
(
metadata_path
))
{
msg
(
"
mariabackup:
Error: failed to read metadata from '%s'
\n
"
,
msg
(
"Error: failed to read metadata from '%s'
\n
"
,
metadata_path
);
metadata_path
);
return
(
false
);
return
(
false
);
}
}
if
(
!
strcmp
(
metadata_type
,
"full-backuped"
))
{
if
(
!
strcmp
(
metadata_type
,
"full-backuped"
))
{
if
(
xtrabackup_incremental
)
{
if
(
xtrabackup_incremental
)
{
msg
(
"
mariabackup:
error: applying incremental backup "
msg
(
"error: applying incremental backup "
"needs a prepared target.
\n
"
);
"needs a prepared target."
);
return
(
false
);
return
(
false
);
}
}
msg
(
"
mariabackup: This target seems to be not prepared yet.
\n
"
);
msg
(
"
This target seems to be not prepared yet.
"
);
}
else
if
(
!
strcmp
(
metadata_type
,
"log-applied"
))
{
}
else
if
(
!
strcmp
(
metadata_type
,
"log-applied"
))
{
msg
(
"
mariabackup: This target seems to be already prepared.
\n
"
);
msg
(
"
This target seems to be already prepared.
"
);
}
else
{
}
else
{
msg
(
"
mariabackup: This target does not have correct metadata.
\n
"
);
msg
(
"
This target does not have correct metadata.
"
);
return
(
false
);
return
(
false
);
}
}
bool
ok
=
!
xtrabackup_incremental
bool
ok
=
!
xtrabackup_incremental
||
metadata_to_lsn
==
incremental_lsn
;
||
metadata_to_lsn
==
incremental_lsn
;
if
(
!
ok
)
{
if
(
!
ok
)
{
msg
(
"mariabackup: error: This incremental backup seems "
msg
(
"error: This incremental backup seems "
"not to be proper for the target.
\n
"
"not to be proper for the target. Check 'to_lsn' of the target and "
"mariabackup: Check 'to_lsn' of the target and "
"'from_lsn' of the incremental."
);
"'from_lsn' of the incremental.
\n
"
);
return
(
false
);
return
(
false
);
}
}
...
@@ -5639,9 +5596,10 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5639,9 +5596,10 @@ xtrabackup_prepare_func(char** argv)
srv_n_write_io_threads
=
4
;
srv_n_write_io_threads
=
4
;
}
}
msg
(
"mariabackup: Starting InnoDB instance for recovery.
\n
"
msg
(
"Starting InnoDB instance for recovery."
);
"mariabackup: Using %lld bytes for buffer pool "
"(set by --use-memory parameter)
\n
"
,
xtrabackup_use_memory
);
msg
(
"mariabackup: Using %lld bytes for buffer pool "
"(set by --use-memory parameter)"
,
xtrabackup_use_memory
);
srv_max_buf_pool_modified_pct
=
(
double
)
max_buf_pool_modified_pct
;
srv_max_buf_pool_modified_pct
=
(
double
)
max_buf_pool_modified_pct
;
...
@@ -5669,7 +5627,7 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5669,7 +5627,7 @@ xtrabackup_prepare_func(char** argv)
const
char
*
name
=
reinterpret_cast
<
const
char
*>
(
const
char
*
name
=
reinterpret_cast
<
const
char
*>
(
TRX_SYS_MYSQL_LOG_INFO
+
TRX_SYS_MYSQL_LOG_NAME
TRX_SYS_MYSQL_LOG_INFO
+
TRX_SYS_MYSQL_LOG_NAME
+
sys_header
);
+
sys_header
);
msg
(
"Last binlog file %s, position %llu
\n
"
,
name
,
pos
);
msg
(
"Last binlog file %s, position %llu"
,
name
,
pos
);
/* output to xtrabackup_binlog_pos_innodb and
/* output to xtrabackup_binlog_pos_innodb and
(if backup_safe_binlog_info was available on
(if backup_safe_binlog_info was available on
...
@@ -5692,7 +5650,7 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5692,7 +5650,7 @@ xtrabackup_prepare_func(char** argv)
&&
srv_start_lsn
<
target_lsn
)
{
&&
srv_start_lsn
<
target_lsn
)
{
msg
(
"mariabackup: error: "
msg
(
"mariabackup: error: "
"The log was only applied up to LSN "
LSN_PF
"The log was only applied up to LSN "
LSN_PF
", instead of "
LSN_PF
"
\n
"
,
", instead of "
LSN_PF
,
srv_start_lsn
,
target_lsn
);
srv_start_lsn
,
target_lsn
);
ok
=
false
;
ok
=
false
;
}
}
...
@@ -5720,13 +5678,13 @@ xtrabackup_prepare_func(char** argv)
...
@@ -5720,13 +5678,13 @@ xtrabackup_prepare_func(char** argv)
if
(
!
xtrabackup_write_metadata
(
filename
))
{
if
(
!
xtrabackup_write_metadata
(
filename
))
{
msg
(
"mariabackup: Error: failed to write metadata "
msg
(
"mariabackup: Error: failed to write metadata "
"to '%s'
\n
"
,
filename
);
"to '%s'"
,
filename
);
ok
=
false
;
ok
=
false
;
}
else
if
(
xtrabackup_extra_lsndir
)
{
}
else
if
(
xtrabackup_extra_lsndir
)
{
sprintf
(
filename
,
"%s/%s"
,
xtrabackup_extra_lsndir
,
XTRABACKUP_METADATA_FILENAME
);
sprintf
(
filename
,
"%s/%s"
,
xtrabackup_extra_lsndir
,
XTRABACKUP_METADATA_FILENAME
);
if
(
!
xtrabackup_write_metadata
(
filename
))
{
if
(
!
xtrabackup_write_metadata
(
filename
))
{
msg
(
"mariabackup: Error: failed to write "
msg
(
"mariabackup: Error: failed to write "
"metadata to '%s'
\n
"
,
filename
);
"metadata to '%s'"
,
filename
);
ok
=
false
;
ok
=
false
;
}
}
}
}
...
@@ -5841,7 +5799,7 @@ int check_privilege(
...
@@ -5841,7 +5799,7 @@ int check_privilege(
{
{
if
(
!
has_privilege
(
granted_priv
,
if
(
!
has_privilege
(
granted_priv
,
required
,
target_database
,
target_table
))
{
required
,
target_database
,
target_table
))
{
msg
(
"%s: missing required privilege %s on %s.%s
\n
"
,
msg
(
"%s: missing required privilege %s on %s.%s"
,
(
error
==
PRIVILEGE_ERROR
?
"Error"
:
"Warning"
),
(
error
==
PRIVILEGE_ERROR
?
"Error"
:
"Warning"
),
required
,
target_database
,
target_table
);
required
,
target_database
,
target_table
);
return
error
;
return
error
;
...
@@ -5930,7 +5888,7 @@ xb_init()
...
@@ -5930,7 +5888,7 @@ xb_init()
&&
!
opt_safe_slave_backup
)
{
&&
!
opt_safe_slave_backup
)
{
msg
(
"Error: --slave-info is used with --no-lock but "
msg
(
"Error: --slave-info is used with --no-lock but "
"without --safe-slave-backup. The binlog position "
"without --safe-slave-backup. The binlog position "
"cannot be consistent with the backup data.
\n
"
);
"cannot be consistent with the backup data."
);
return
(
false
);
return
(
false
);
}
}
...
@@ -6156,7 +6114,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server)
...
@@ -6156,7 +6114,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server)
msg
(
"mariabackup: Error: --defaults-file "
msg
(
"mariabackup: Error: --defaults-file "
"must be specified first on the command "
"must be specified first on the command "
"line
\n
"
);
"line"
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
if
(
optend
-
argv
[
i
]
==
21
&&
if
(
optend
-
argv
[
i
]
==
21
&&
...
@@ -6213,7 +6171,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server)
...
@@ -6213,7 +6171,7 @@ handle_options(int argc, char **argv, char ***argv_client, char ***argv_server)
if
(
!
server_option
)
{
if
(
!
server_option
)
{
msg
(
"mariabackup: Error:"
msg
(
"mariabackup: Error:"
" unknown argument: '%s'
\n
"
,
opt
);
" unknown argument: '%s'"
,
opt
);
exit
(
EXIT_FAILURE
);
exit
(
EXIT_FAILURE
);
}
}
}
}
...
@@ -6313,7 +6271,7 @@ int main(int argc, char **argv)
...
@@ -6313,7 +6271,7 @@ int main(int argc, char **argv)
mysql_mutex_destroy
(
&
LOCK_error_log
);
mysql_mutex_destroy
(
&
LOCK_error_log
);
if
(
status
==
EXIT_SUCCESS
)
{
if
(
status
==
EXIT_SUCCESS
)
{
msg
_ts
(
"completed OK!
\n
"
);
msg
(
"completed OK!
"
);
}
}
return
status
;
return
status
;
...
@@ -6331,7 +6289,7 @@ static int main_low(char** argv)
...
@@ -6331,7 +6289,7 @@ static int main_low(char** argv)
&&
!
strcmp
(
mysql_data_home
,
"./"
))
{
&&
!
strcmp
(
mysql_data_home
,
"./"
))
{
if
(
!
xtrabackup_print_param
)
if
(
!
xtrabackup_print_param
)
usage
();
usage
();
msg
(
"
\n
mariabackup: Error: Please set parameter 'datadir'
\n
"
);
msg
(
"
mariabackup: Error: Please set parameter 'datadir'
"
);
return
(
EXIT_FAILURE
);
return
(
EXIT_FAILURE
);
}
}
...
@@ -6402,7 +6360,7 @@ static int main_low(char** argv)
...
@@ -6402,7 +6360,7 @@ static int main_low(char** argv)
if
(
error
)
{
if
(
error
)
{
msg
(
"mariabackup: value '%s' may be wrong format for "
msg
(
"mariabackup: value '%s' may be wrong format for "
"incremental option.
\n
"
,
xtrabackup_incremental
);
"incremental option."
,
xtrabackup_incremental
);
return
(
EXIT_FAILURE
);
return
(
EXIT_FAILURE
);
}
}
}
else
if
(
xtrabackup_backup
&&
xtrabackup_incremental_basedir
)
{
}
else
if
(
xtrabackup_backup
&&
xtrabackup_incremental_basedir
)
{
...
@@ -6412,7 +6370,7 @@ static int main_low(char** argv)
...
@@ -6412,7 +6370,7 @@ static int main_low(char** argv)
if
(
!
xtrabackup_read_metadata
(
filename
))
{
if
(
!
xtrabackup_read_metadata
(
filename
))
{
msg
(
"mariabackup: error: failed to read metadata from "
msg
(
"mariabackup: error: failed to read metadata from "
"%s
\n
"
,
filename
);
"%s"
,
filename
);
return
(
EXIT_FAILURE
);
return
(
EXIT_FAILURE
);
}
}
...
@@ -6425,7 +6383,7 @@ static int main_low(char** argv)
...
@@ -6425,7 +6383,7 @@ static int main_low(char** argv)
if
(
!
xtrabackup_read_metadata
(
filename
))
{
if
(
!
xtrabackup_read_metadata
(
filename
))
{
msg
(
"mariabackup: error: failed to read metadata from "
msg
(
"mariabackup: error: failed to read metadata from "
"%s
\n
"
,
filename
);
"%s"
,
filename
);
return
(
EXIT_FAILURE
);
return
(
EXIT_FAILURE
);
}
}
...
@@ -6443,7 +6401,7 @@ static int main_low(char** argv)
...
@@ -6443,7 +6401,7 @@ static int main_low(char** argv)
}
}
if
(
xtrabackup_stream
&&
!
xtrabackup_backup
)
{
if
(
xtrabackup_stream
&&
!
xtrabackup_backup
)
{
msg
(
"Warning: --stream parameter is ignored, it only works together with --backup.
\n
"
);
msg
(
"Warning: --stream parameter is ignored, it only works together with --backup."
);
}
}
if
(
!
xb_init
())
{
if
(
!
xb_init
())
{
...
@@ -6458,13 +6416,13 @@ static int main_low(char** argv)
...
@@ -6458,13 +6416,13 @@ static int main_low(char** argv)
print_version
();
print_version
();
if
(
xtrabackup_incremental
)
{
if
(
xtrabackup_incremental
)
{
msg
(
"incremental backup from "
LSN_PF
" is enabled.
\n
"
,
msg
(
"incremental backup from "
LSN_PF
" is enabled."
,
incremental_lsn
);
incremental_lsn
);
}
}
if
(
xtrabackup_export
&&
innobase_file_per_table
==
FALSE
)
{
if
(
xtrabackup_export
&&
innobase_file_per_table
==
FALSE
)
{
msg
(
"mariabackup: auto-enabling --innodb-file-per-table due to "
msg
(
"mariabackup: auto-enabling --innodb-file-per-table due to "
"the --export option
\n
"
);
"the --export option"
);
innobase_file_per_table
=
TRUE
;
innobase_file_per_table
=
TRUE
;
}
}
...
...
extra/mariabackup/xtrabackup.h
View file @
a8a27e65
...
@@ -71,7 +71,7 @@ extern char *xtrabackup_databases_file;
...
@@ -71,7 +71,7 @@ extern char *xtrabackup_databases_file;
extern
char
*
xtrabackup_tables_exclude
;
extern
char
*
xtrabackup_tables_exclude
;
extern
char
*
xtrabackup_databases_exclude
;
extern
char
*
xtrabackup_databases_exclude
;
extern
ibool
xtrabackup_compress
;
extern
uint
xtrabackup_compress
;
extern
my_bool
xtrabackup_backup
;
extern
my_bool
xtrabackup_backup
;
extern
my_bool
xtrabackup_prepare
;
extern
my_bool
xtrabackup_prepare
;
...
@@ -86,14 +86,10 @@ extern int xtrabackup_parallel;
...
@@ -86,14 +86,10 @@ extern int xtrabackup_parallel;
extern
my_bool
xb_close_files
;
extern
my_bool
xb_close_files
;
extern
const
char
*
xtrabackup_compress_alg
;
extern
const
char
*
xtrabackup_compress_alg
;
#ifdef __cplusplus
extern
"C"
{
extern
uint
xtrabackup_compress_threads
;
#endif
extern
ulonglong
xtrabackup_compress_chunk_size
;
extern
uint
xtrabackup_compress_threads
;
extern
ulonglong
xtrabackup_compress_chunk_size
;
#ifdef __cplusplus
}
#endif
extern
my_bool
xtrabackup_export
;
extern
my_bool
xtrabackup_export
;
extern
char
*
xtrabackup_extra_lsndir
;
extern
char
*
xtrabackup_extra_lsndir
;
extern
ulint
xtrabackup_log_copy_interval
;
extern
ulint
xtrabackup_log_copy_interval
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment