Merge lp:~sergei.glushchenko/percona-xtrabackup/buffer_pool_dump-2.1 into lp:percona-xtrabackup/2.1

Proposed by Sergei Glushchenko
Status: Merged
Approved by: Alexey Kopytov
Approved revision: no longer in the source branch.
Merged at revision: 572
Proposed branch: lp:~sergei.glushchenko/percona-xtrabackup/buffer_pool_dump-2.1
Merge into: lp:percona-xtrabackup/2.1
Diff against target: 281 lines (+189/-14)
5 files modified
innobackupex (+23/-14)
src/xtrabackup.cc (+11/-0)
test/t/ib_buffer_pool.sh (+57/-0)
test/t/ib_buffer_pool_dump_incremental.sh (+58/-0)
test/t/ib_buffer_pool_rsync.sh (+40/-0)
To merge this branch: bzr merge lp:~sergei.glushchenko/percona-xtrabackup/buffer_pool_dump-2.1
Reviewer Review Type Date Requested Status
Alexey Kopytov (community) Approve
Review via email: mp+160826@code.launchpad.net

Description of the change

To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'innobackupex'
--- innobackupex 2013-04-25 08:28:19 +0000
+++ innobackupex 2013-04-25 14:39:35 +0000
@@ -393,6 +393,8 @@
393sub backup {393sub backup {
394 my $orig_datadir = get_option(\%config, $option_defaults_group, 'datadir');394 my $orig_datadir = get_option(\%config, $option_defaults_group, 'datadir');
395 my $suspend_file;395 my $suspend_file;
396 my $buffer_pool_filename = get_option(\%config, $option_defaults_group,
397 'innodb_buffer_pool_filename');
396398
397 if ($option_incremental) {399 if ($option_incremental) {
398 detect_mysql_capabilities_for_backup(\%mysql);400 detect_mysql_capabilities_for_backup(\%mysql);
@@ -451,16 +453,19 @@
451 }453 }
452454
453 # copy ib_lru_dump455 # copy ib_lru_dump
454 if (-e "$orig_datadir/ib_lru_dump") {456 # Copy buffer poll dump and/or LRU dump
455 if ($option_stream) {457 foreach my $dump_name ($buffer_pool_filename, 'ib_lru_dump') {
456 print STDERR "$prefix Backing up as tar stream 'ib_lru_dump'\n";458 if (-e "$orig_datadir/$dump_name") {
457 stream_encrypt_file($orig_datadir, "ib_lru_dump")459 if ($option_stream) {
458 and Die "Failed to stream 'ib_lru_dump': $!";460 print STDERR "$prefix Backing up as tar stream '$dump_name'\n";
459 } elsif (!$option_rsync) {461 stream_encrypt_file($orig_datadir, "$dump_name")
460 my $src_name = escape_path("$orig_datadir/ib_lru_dump");462 and Die "Failed to stream '$dump_name': $!";
461 my $dst_name = escape_path("$backup_dir/ib_lru_dump");463 } elsif (!$option_rsync) {
462 system("$CP_CMD \"$src_name\" \"$dst_name\"")464 my $src_name = escape_path("$orig_datadir/$dump_name");
463 and Die "Failed to copy file 'ib_lru_dump': $!";465 my $dst_name = escape_path("$backup_dir/$dump_name");
466 system("$CP_CMD \"$src_name\" \"$dst_name\"")
467 and Die "Failed to copy file '$dump_name': $!";
468 }
464 }469 }
465 }470 }
466471
@@ -2126,6 +2131,8 @@
2126sub backup_files {2131sub backup_files {
2127 my $prep_mode = shift;2132 my $prep_mode = shift;
2128 my $source_dir = get_option(\%config, $option_defaults_group, 'datadir');2133 my $source_dir = get_option(\%config, $option_defaults_group, 'datadir');
2134 my $buffer_pool_filename = get_option(\%config, $option_defaults_group,
2135 'innodb_buffer_pool_filename');
2129 my @list;2136 my @list;
2130 my $file;2137 my $file;
2131 my $database;2138 my $database;
@@ -2247,10 +2254,12 @@
2247 closedir(DIR);2254 closedir(DIR);
22482255
2249 if ($option_rsync) {2256 if ($option_rsync) {
2250 if (-e "$source_dir/ib_lru_dump") {2257 foreach my $dump_name ($buffer_pool_filename, 'ib_lru_dump') {
2251 print RSYNC "ib_lru_dump\n";2258 if (-e "$source_dir/$dump_name") {
2252 if (!$prep_mode) {2259 print RSYNC "$dump_name\n";
2253 $rsync_files_hash{"ib_lru_dump"} = 1;2260 if (!$prep_mode) {
2261 $rsync_files_hash{"$dump_name"} = 1;
2262 }
2254 }2263 }
2255 }2264 }
2256 close(RSYNC);2265 close(RSYNC);
22572266
=== modified file 'src/xtrabackup.cc'
--- src/xtrabackup.cc 2013-04-24 14:10:22 +0000
+++ src/xtrabackup.cc 2013-04-25 14:39:35 +0000
@@ -219,6 +219,7 @@
219my_bool innobase_fast_checksum = FALSE;219my_bool innobase_fast_checksum = FALSE;
220my_bool innobase_extra_undoslots = FALSE;220my_bool innobase_extra_undoslots = FALSE;
221char* innobase_doublewrite_file = NULL;221char* innobase_doublewrite_file = NULL;
222char* innobase_buffer_pool_filename = NULL;
222223
223longlong innobase_buffer_pool_size = 8*1024*1024L;224longlong innobase_buffer_pool_size = 8*1024*1024L;
224longlong innobase_log_file_size = DEFAULT_LOG_FILE_SIZE;225longlong innobase_log_file_size = DEFAULT_LOG_FILE_SIZE;
@@ -428,6 +429,7 @@
428 OPT_INNODB_EXTRA_UNDOSLOTS,429 OPT_INNODB_EXTRA_UNDOSLOTS,
429 OPT_INNODB_DOUBLEWRITE_FILE,430 OPT_INNODB_DOUBLEWRITE_FILE,
430#endif431#endif
432 OPT_INNODB_BUFFER_POOL_FILENAME,
431 OPT_INNODB_FORCE_RECOVERY,433 OPT_INNODB_FORCE_RECOVERY,
432 OPT_INNODB_LOCK_WAIT_TIMEOUT,434 OPT_INNODB_LOCK_WAIT_TIMEOUT,
433 OPT_INNODB_LOG_BUFFER_SIZE,435 OPT_INNODB_LOG_BUFFER_SIZE,
@@ -792,6 +794,11 @@
792 (G_PTR*) &innobase_doublewrite_file, (G_PTR*) &innobase_doublewrite_file,794 (G_PTR*) &innobase_doublewrite_file, (G_PTR*) &innobase_doublewrite_file,
793 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},795 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
794#endif796#endif
797 {"innodb_buffer_pool_filename", OPT_INNODB_BUFFER_POOL_FILENAME,
798 "Filename to/from which to dump/load the InnoDB buffer pool",
799 (G_PTR*) &innobase_buffer_pool_filename,
800 (G_PTR*) &innobase_buffer_pool_filename,
801 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
795802
796#ifndef __WIN__803#ifndef __WIN__
797 {"debug-sync", OPT_XTRA_DEBUG_SYNC,804 {"debug-sync", OPT_XTRA_DEBUG_SYNC,
@@ -5304,6 +5311,10 @@
5304 }5311 }
5305 printf("innodb_undo_tablespaces = %lu\n", srv_undo_tablespaces);5312 printf("innodb_undo_tablespaces = %lu\n", srv_undo_tablespaces);
5306#endif5313#endif
5314 printf("innodb_buffer_pool_filename = \"%s\"\n",
5315 innobase_buffer_pool_filename ?
5316 innobase_buffer_pool_filename :
5317 "ib_buffer_pool");
5307 exit(EXIT_SUCCESS);5318 exit(EXIT_SUCCESS);
5308 }5319 }
53095320
53105321
=== added file 'test/t/ib_buffer_pool.sh'
--- test/t/ib_buffer_pool.sh 1970-01-01 00:00:00 +0000
+++ test/t/ib_buffer_pool.sh 2013-04-25 14:39:35 +0000
@@ -0,0 +1,57 @@
1########################################################################
2# Blueprint: Support InnoDB buffer pool dumps in MySQL 5.6
3########################################################################
4
5. inc/common.sh
6
7if [ "${MYSQL_VERSION:0:3}" != "5.6" ]; then
8 echo "Requires MySQL 5.6" > $SKIPPED_REASON
9 exit $SKIPPED_EXIT_CODE
10fi
11
12MYSQLD_EXTRA_MY_CNF_OPTS="
13innodb_buffer_pool_filename=pool/dump
14"
15
16start_server
17
18# test presence of innodb_buffer_pool_filename
19${XB_BIN} --defaults-file=$topdir/my.cnf --print-param | \
20 grep -q "innodb_buffer_pool_filename"
21
22mkdir $mysql_datadir/pool
23
24# produce buffer pool dump
25${MYSQL} ${MYSQL_ARGS} -e "SET GLOBAL innodb_buffer_pool_dump_now=ON;"
26
27# take a backup
28innobackupex --no-timestamp $topdir/backup
29
30if [ -f $topdir/backup/pool/dump ] ; then
31 vlog "Buffer pool dump has been backed up"
32else
33 vlog "Buffer pool dump has not been backed up"
34 exit -1
35fi
36
37# take streaming backup
38mkdir -p $topdir/backup
39innobackupex --stream=tar $topdir/backup > $topdir/backup/stream.tar
40
41if $TAR itf $topdir/backup/stream.tar | grep 'pool/dump' ; then
42 vlog "Buffer pool dump has been restored"
43else
44 vlog "Buffer pool dump has not been restored"
45 exit -1
46fi
47
48# restore from backup
49rm -rf $mysql_datadir/*
50innobackupex --copy-back $topdir/backup
51
52if [ -f $mysql_datadir/pool/dump ] ; then
53 vlog "Buffer pool dump has been restored"
54else
55 vlog "Buffer pool dump has not been restored"
56 exit -1
57fi
058
=== added file 'test/t/ib_buffer_pool_dump_incremental.sh'
--- test/t/ib_buffer_pool_dump_incremental.sh 1970-01-01 00:00:00 +0000
+++ test/t/ib_buffer_pool_dump_incremental.sh 2013-04-25 14:39:35 +0000
@@ -0,0 +1,58 @@
1########################################################################
2# Blueprint: Support InnoDB buffer pool dumps in MySQL 5.6
3########################################################################
4
5. inc/common.sh
6
7if [ "${MYSQL_VERSION:0:3}" != "5.6" ]; then
8 echo "Requires MySQL 5.6" > $SKIPPED_REASON
9 exit $SKIPPED_EXIT_CODE
10fi
11
12MYSQLD_EXTRA_MY_CNF_OPTS="
13innodb_buffer_pool_filename=pool/dump
14"
15
16start_server
17
18# test presence of innodb_buffer_pool_filename
19${XB_BIN} --defaults-file=$topdir/my.cnf --print-param | \
20 grep -q "innodb_buffer_pool_filename"
21
22mkdir $mysql_datadir/pool
23
24# take a backup
25innobackupex --no-timestamp $topdir/backup
26
27# produce buffer pool dump
28${MYSQL} ${MYSQL_ARGS} -e "SET GLOBAL innodb_buffer_pool_dump_now=ON;"
29
30# incremental backup
31innobackupex --no-timestamp --incremental --incremental-basedir=$topdir/backup \
32 $topdir/incremental
33
34if [ -f $topdir/incremental/pool/dump ] ; then
35 vlog "Buffer pool dump has been backed up"
36else
37 vlog "Buffer pool dump has not been backed up"
38 exit -1
39fi
40
41# prepare
42innobackupex --apply-log --redo-only $topdir/backup
43
44innobackupex --apply-log --redo-only --incremental-dir=$topdir/incremental \
45 $topdir/backup
46
47innobackupex --apply-log $topdir/backup
48
49# restore from backup
50rm -rf $mysql_datadir/*
51innobackupex --copy-back $topdir/backup
52
53if [ -f $mysql_datadir/pool/dump ] ; then
54 vlog "Buffer pool dump has been restored"
55else
56 vlog "Buffer pool dump has not been restored"
57 exit -1
58fi
059
=== added file 'test/t/ib_buffer_pool_rsync.sh'
--- test/t/ib_buffer_pool_rsync.sh 1970-01-01 00:00:00 +0000
+++ test/t/ib_buffer_pool_rsync.sh 2013-04-25 14:39:35 +0000
@@ -0,0 +1,40 @@
1########################################################################
2# Blueprint: Support InnoDB buffer pool dumps in MySQL 5.6
3########################################################################
4
5. inc/common.sh
6
7if ! which rsync > /dev/null 2>&1 ; then
8 echo "Requires rsync to be installed" > $SKIPPED_REASON
9 exit $SKIPPED_EXIT_CODE
10fi
11
12if [ "${MYSQL_VERSION:0:3}" != "5.6" ]; then
13 echo "Requires MySQL 5.6" > $SKIPPED_REASON
14 exit $SKIPPED_EXIT_CODE
15fi
16
17MYSQLD_EXTRA_MY_CNF_OPTS="
18innodb_buffer_pool_filename=pool/dump
19"
20
21start_server
22
23# test presence of innodb_buffer_pool_filename
24${XB_BIN} --defaults-file=$topdir/my.cnf --print-param | \
25 grep -q "innodb_buffer_pool_filename"
26
27mkdir $mysql_datadir/pool
28
29# produce buffer pool dump
30${MYSQL} ${MYSQL_ARGS} -e "SET GLOBAL innodb_buffer_pool_dump_now=ON;"
31
32# take a backup with rsync mode
33innobackupex --rsync --no-timestamp $topdir/backup
34
35if [ -f $topdir/backup/pool/dump ] ; then
36 vlog "Buffer pool dump has been backed up"
37else
38 vlog "Buffer pool dump has not been backed up"
39 exit -1
40fi

Subscribers

People subscribed via source and target branches