Merge lp:~sergei.glushchenko/percona-xtrabackup/BT-26901-2.0 into lp:percona-xtrabackup/2.0
- BT-26901-2.0
- Merge into 2.0
Status: | Merged |
---|---|
Approved by: | Alexey Kopytov |
Approved revision: | no longer in the source branch. |
Merged at revision: | 480 |
Proposed branch: | lp:~sergei.glushchenko/percona-xtrabackup/BT-26901-2.0 |
Merge into: | lp:percona-xtrabackup/2.0 |
Diff against target: |
283 lines (+148/-26) 3 files modified
innobackupex (+14/-1) src/xtrabackup.c (+14/-25) test/t/ib_doublewrite.sh (+120/-0) |
To merge this branch: | bzr merge lp:~sergei.glushchenko/percona-xtrabackup/BT-26901-2.0 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alexey Kopytov (community) | Approve | ||
Laurynas Biveinis | Pending | ||
Review via email: mp+134512@code.launchpad.net |
This proposal supersedes a proposal from 2012-11-12.
Commit message
Description of the change
Bug #1066843: Fix for bug #932623 does not take separate doublewrite
tablespace into account
Fixed by checking trx_sys_sys_space instead of space_id == 0.
innodb_
Copy back now skip doublewrite tablespace.
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
Laurynas Biveinis (laurynas-biveinis) wrote : Posted in a previous version of this proposal | # |
What is the purpose of chunk at 23-40?
That chunk and the innobackupex change seem to fix some other bug, not a regression from 932623. Can you link that bug, or if there is none, report it?
Please introduce a wrapper around #ifdef ... == 0 #else ... trx_sys_sys_space ... #endif.
Why does the testcase skip in case of !XtraDB? I think this test applies to all InnoDB flavors.
Is it necessary to grep innobackupex output for full_backup_dir? IIRC other testcases dont't do this. Likewise for inc_backup_dir.
I am not sure if the testcase should be all the way to table checksum checking with restored data, or the steps up to the crashing point are necessary. In this particular instance I'd err on the side of more testing.
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
> What is the purpose of chunk at 23-40?
>
> That chunk and the innobackupex change seem to fix some other bug, not a
> regression from 932623. Can you link that bug, or if there is none, report it?
>
OK. I'll report separate bug for that. Or maybe it's possible to change description of existing one?
> Please introduce a wrapper around #ifdef ... == 0 #else ... trx_sys_sys_space
> ... #endif.
>
This can be done.
> Why does the testcase skip in case of !XtraDB? I think this test applies to
> all InnoDB flavors.
>
It's because of usage of innodb_
> Is it necessary to grep innobackupex output for full_backup_dir? IIRC other
> testcases dont't do this. Likewise for inc_backup_dir.
>
Yep. Could be changed to use --no-timestamps
> I am not sure if the testcase should be all the way to table checksum checking
> with restored data, or the steps up to the crashing point are necessary. In
> this particular instance I'd err on the side of more testing.
Basically I had failures at last server startup. This is what 23-40 and innobackupex changes are needed.
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
Explanation of changes in innobackupex is following.
During backup xtrabackup copies doublewrite buffer file from the path specified in my.cnf to the root backup directory. Then during prepare double file is not specified in backup-my.cnf, and not used. When copy back is done old doublewrite buffer file copied to root data directory, which could cause failures on server startup.
Following are incorrect and being fixed:
1. Path to doublewrite buffer file is not specified in backup-my.cnf
2. Prepare should use doublewrite buffer file from root of backup dir
3. Copy back should not copy doublewrite buffer file as it is not needed after prepare is done.
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
In the case of run with our test framework we have even worst behavior. Instead of looking at backup-my.cnf prepare look at original my.cnf (--defaults-file is specified) and modify original doublewrite buffer file.
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
Bug failed and linked, testcase changed to use --no-timestamp, wrapper for trx_sys_sys_space introduced.
http://
Laurynas Biveinis (laurynas-biveinis) : Posted in a previous version of this proposal | # |
Alexey Kopytov (akopytov) wrote : Posted in a previous version of this proposal | # |
Sergei,
A few of comments:
- what if innodb_
- why don't we write stripped innodb_
- why don't we make 2.0 and 2.1 consistent and just modify trx_sys_
- please use one of MYSQLD_
- s/.idb/.ibd/
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
> Sergei,
>
> A few of comments:
>
> - what if innodb_
> --print-param will either crash or print "innodb_
> (on Linux), and then innobackupex will assume we have a doublewrite full with
> "(null)" as its name.
>
Yes, i fixed it.
> - why don't we write stripped innodb_
> to backup-my.cnf? Less code in innobackupex to strip it on --copy-back
>
The reason was to avoid hacking in testcase. Also we modified some values from my.cnf when put them to backup-my.cnf before. Currently we don't. But I agree that full original path is not needed in backup-my.cnf for xtrabackup to operate. So I rewrite to do path strip before writing to backup-my.cnf.
> - why don't we make 2.0 and 2.1 consistent and just modify
> trx_sys_
> Less code changes in 2.0, less conflicts when merging 2.0->2.1 in the future.
>
Yep. The reason was I did not see it before. Then see in 2.1 and fix and not yet synced 2.0 with it.
> - please use one of MYSQLD_
> hardcoded paths as in "${TEST_
>
It isn't possible due to unavailability of MYSQLD_* before server startup.
> - s/.idb/.ibd/
OK.
Alexey Kopytov (akopytov) wrote : Posted in a previous version of this proposal | # |
Sergei,
Thanks, everything looks good now, except that I think we can still avoid hard-coded path for the doublewrite file.
On server startup, the path can be relative to the data, i.e. --innodb-
Sergei Glushchenko (sergei.glushchenko) wrote : Posted in a previous version of this proposal | # |
Testcase been modified. Path to dblwr.ibd is not specified now.
Alexey Kopytov (akopytov) : | # |
Preview Diff
1 | === modified file 'innobackupex' | |||
2 | --- innobackupex 2012-11-07 06:44:45 +0000 | |||
3 | +++ innobackupex 2012-11-15 16:48:23 +0000 | |||
4 | @@ -719,6 +719,13 @@ | |||
5 | 719 | my $file; | 719 | my $file; |
6 | 720 | my $backup_innodb_data_file_path; | 720 | my $backup_innodb_data_file_path; |
7 | 721 | 721 | ||
8 | 722 | if (has_option(\%config, $option_defaults_group, 'innodb_doublewrite_file')) { | ||
9 | 723 | my $doublewrite_file = | ||
10 | 724 | get_option(\%config, $option_defaults_group, | ||
11 | 725 | 'innodb_doublewrite_file'); | ||
12 | 726 | $excluded_files = $excluded_files . '|' . $doublewrite_file; | ||
13 | 727 | } | ||
14 | 728 | |||
15 | 722 | # check whether files should be copied or moved to dest directory | 729 | # check whether files should be copied or moved to dest directory |
16 | 723 | my $move_or_copy_file = $move_flag ? \&move_file : \©_file; | 730 | my $move_or_copy_file = $move_flag ? \&move_file : \©_file; |
17 | 724 | my $move_or_copy_dir = $move_flag ? | 731 | my $move_or_copy_dir = $move_flag ? |
18 | @@ -1727,7 +1734,7 @@ | |||
19 | 1727 | "innodb_log_file_size", | 1734 | "innodb_log_file_size", |
20 | 1728 | "innodb_fast_checksum", | 1735 | "innodb_fast_checksum", |
21 | 1729 | "innodb_page_size", | 1736 | "innodb_page_size", |
23 | 1730 | "innodb_log_block_size", | 1737 | "innodb_log_block_size" |
24 | 1731 | ); | 1738 | ); |
25 | 1732 | 1739 | ||
26 | 1733 | my $options_dump = "# This MySQL options file was generated by $innobackup_script.\n\n" . | 1740 | my $options_dump = "# This MySQL options file was generated by $innobackup_script.\n\n" . |
27 | @@ -1741,6 +1748,12 @@ | |||
28 | 1741 | $options_dump .= "$option_name=$option_value\n"; | 1748 | $options_dump .= "$option_name=$option_value\n"; |
29 | 1742 | } | 1749 | } |
30 | 1743 | } | 1750 | } |
31 | 1751 | if (has_option(\%config, | ||
32 | 1752 | $option_defaults_group, "innodb_doublewrite_file")) { | ||
33 | 1753 | $options_dump .= "innodb_doublewrite_file=" . (split(/\/+/, | ||
34 | 1754 | get_option(\%config, $option_defaults_group, | ||
35 | 1755 | 'innodb_doublewrite_file')))[-1] . "\n"; | ||
36 | 1756 | } | ||
37 | 1744 | 1757 | ||
38 | 1745 | print FILE $options_dump; | 1758 | print FILE $options_dump; |
39 | 1746 | close(FILE); | 1759 | close(FILE); |
40 | 1747 | 1760 | ||
41 | === modified file 'src/xtrabackup.c' | |||
42 | --- src/xtrabackup.c 2012-11-08 23:42:03 +0000 | |||
43 | +++ src/xtrabackup.c 2012-11-15 16:48:23 +0000 | |||
44 | @@ -2970,6 +2970,10 @@ | |||
45 | 2970 | HASH_SEARCH(NAME, TABLE, FOLD, DATA, TEST) | 2970 | HASH_SEARCH(NAME, TABLE, FOLD, DATA, TEST) |
46 | 2971 | #endif | 2971 | #endif |
47 | 2972 | 2972 | ||
48 | 2973 | #ifndef XTRADB_BASED | ||
49 | 2974 | #define trx_sys_sys_space(id) (id == 0) | ||
50 | 2975 | #endif | ||
51 | 2976 | |||
52 | 2973 | /****************************************************************//** | 2977 | /****************************************************************//** |
53 | 2974 | A simple function to open or create a file. | 2978 | A simple function to open or create a file. |
54 | 2975 | @return own: handle to the file, not defined if error, error number | 2979 | @return own: handle to the file, not defined if error, error number |
55 | @@ -3137,11 +3141,7 @@ | |||
56 | 3137 | info.zip_size = 0; | 3141 | info.zip_size = 0; |
57 | 3138 | info.space_id = 0; | 3142 | info.space_id = 0; |
58 | 3139 | 3143 | ||
59 | 3140 | #ifdef XTRADB_BASED | ||
60 | 3141 | if (xtrabackup_tables && (!trx_sys_sys_space(node->space->id))) | 3144 | if (xtrabackup_tables && (!trx_sys_sys_space(node->space->id))) |
61 | 3142 | #else | ||
62 | 3143 | if (xtrabackup_tables && (node->space->id != 0)) | ||
63 | 3144 | #endif | ||
64 | 3145 | { /* must backup id==0 */ | 3145 | { /* must backup id==0 */ |
65 | 3146 | char *p; | 3146 | char *p; |
66 | 3147 | int p_len, regres = REG_NOMATCH; | 3147 | int p_len, regres = REG_NOMATCH; |
67 | @@ -3185,11 +3185,7 @@ | |||
68 | 3185 | } | 3185 | } |
69 | 3186 | } | 3186 | } |
70 | 3187 | 3187 | ||
71 | 3188 | #ifdef XTRADB_BASED | ||
72 | 3189 | if (xtrabackup_tables_file && (!trx_sys_sys_space(node->space->id))) | 3188 | if (xtrabackup_tables_file && (!trx_sys_sys_space(node->space->id))) |
73 | 3190 | #else | ||
74 | 3191 | if (xtrabackup_tables_file && (node->space->id != 0)) | ||
75 | 3192 | #endif | ||
76 | 3193 | { /* must backup id==0 */ | 3189 | { /* must backup id==0 */ |
77 | 3194 | xtrabackup_tables_t* table; | 3190 | xtrabackup_tables_t* table; |
78 | 3195 | char *p; | 3191 | char *p; |
79 | @@ -3231,11 +3227,7 @@ | |||
80 | 3231 | 3227 | ||
81 | 3232 | skip_filter: | 3228 | skip_filter: |
82 | 3233 | 3229 | ||
83 | 3234 | #ifdef XTRADB_BASED | ||
84 | 3235 | if (trx_sys_sys_space(node->space->id)) | 3230 | if (trx_sys_sys_space(node->space->id)) |
85 | 3236 | #else | ||
86 | 3237 | if (node->space->id == 0) | ||
87 | 3238 | #endif | ||
88 | 3239 | { | 3231 | { |
89 | 3240 | char *next, *p; | 3232 | char *next, *p; |
90 | 3241 | /* system datafile "/fullpath/datafilename.ibd" or "./datafilename.ibd" */ | 3233 | /* system datafile "/fullpath/datafilename.ibd" or "./datafilename.ibd" */ |
91 | @@ -3396,11 +3388,7 @@ | |||
92 | 3396 | #endif | 3388 | #endif |
93 | 3397 | { | 3389 | { |
94 | 3398 | if ( | 3390 | if ( |
95 | 3399 | #ifdef XTRADB_BASED | ||
96 | 3400 | trx_sys_sys_space(node->space->id) | 3391 | trx_sys_sys_space(node->space->id) |
97 | 3401 | #else | ||
98 | 3402 | node->space->id == 0 | ||
99 | 3403 | #endif | ||
100 | 3404 | && ((offset + (IB_INT64)chunk_offset) >> page_size_shift) | 3392 | && ((offset + (IB_INT64)chunk_offset) >> page_size_shift) |
101 | 3405 | >= FSP_EXTENT_SIZE | 3393 | >= FSP_EXTENT_SIZE |
102 | 3406 | && ((offset + (IB_INT64)chunk_offset) >> page_size_shift) | 3394 | && ((offset + (IB_INT64)chunk_offset) >> page_size_shift) |
103 | @@ -4060,11 +4048,7 @@ | |||
104 | 4060 | } else { | 4048 | } else { |
105 | 4061 | ptr2 = NULL; | 4049 | ptr2 = NULL; |
106 | 4062 | } | 4050 | } |
107 | 4063 | #ifdef XTRADB_BASED | ||
108 | 4064 | if(!trx_sys_sys_space(space->id) && ptr2) | 4051 | if(!trx_sys_sys_space(space->id) && ptr2) |
109 | 4065 | #else | ||
110 | 4066 | if(space->id && ptr2) | ||
111 | 4067 | #endif | ||
112 | 4068 | { | 4052 | { |
113 | 4069 | /* single table space */ | 4053 | /* single table space */ |
114 | 4070 | *ptr2 = 0; /* temporary (it's my lazy..)*/ | 4054 | *ptr2 = 0; /* temporary (it's my lazy..)*/ |
115 | @@ -5794,7 +5778,9 @@ | |||
116 | 5794 | os_file_t file = 0; | 5778 | os_file_t file = 0; |
117 | 5795 | ulint tablespace_flags; | 5779 | ulint tablespace_flags; |
118 | 5796 | 5780 | ||
120 | 5797 | ut_a(dbname != NULL || space_id == 0 || space_id == ULINT_UNDEFINED); | 5781 | ut_a(dbname != NULL || |
121 | 5782 | trx_sys_sys_space(space_id) || | ||
122 | 5783 | space_id == ULINT_UNDEFINED); | ||
123 | 5798 | 5784 | ||
124 | 5799 | *success = FALSE; | 5785 | *success = FALSE; |
125 | 5800 | 5786 | ||
126 | @@ -5823,6 +5809,10 @@ | |||
127 | 5823 | return file; | 5809 | return file; |
128 | 5824 | } | 5810 | } |
129 | 5825 | 5811 | ||
130 | 5812 | if (trx_sys_sys_space(space_id)) { | ||
131 | 5813 | goto found; | ||
132 | 5814 | } | ||
133 | 5815 | |||
134 | 5826 | mutex_enter(&fil_system->mutex); | 5816 | mutex_enter(&fil_system->mutex); |
135 | 5827 | fil_space = xb_space_get_by_name(dest_space_name); | 5817 | fil_space = xb_space_get_by_name(dest_space_name); |
136 | 5828 | mutex_exit(&fil_system->mutex); | 5818 | mutex_exit(&fil_system->mutex); |
137 | @@ -6552,11 +6542,7 @@ | |||
138 | 6552 | while (space != NULL) { | 6542 | while (space != NULL) { |
139 | 6553 | /* treat file_per_table only */ | 6543 | /* treat file_per_table only */ |
140 | 6554 | if (space->purpose != FIL_TABLESPACE | 6544 | if (space->purpose != FIL_TABLESPACE |
141 | 6555 | #ifdef XTRADB_BASED | ||
142 | 6556 | || trx_sys_sys_space(space->id) | 6545 | || trx_sys_sys_space(space->id) |
143 | 6557 | #else | ||
144 | 6558 | || space->id == 0 | ||
145 | 6559 | #endif | ||
146 | 6560 | ) | 6546 | ) |
147 | 6561 | { | 6547 | { |
148 | 6562 | space = UT_LIST_GET_NEXT(space_list, space); | 6548 | space = UT_LIST_GET_NEXT(space_list, space); |
149 | @@ -7089,6 +7075,9 @@ | |||
150 | 7089 | printf("innodb_fast_checksum = %d\n", innobase_fast_checksum); | 7075 | printf("innodb_fast_checksum = %d\n", innobase_fast_checksum); |
151 | 7090 | printf("innodb_page_size = %ld\n", innobase_page_size); | 7076 | printf("innodb_page_size = %ld\n", innobase_page_size); |
152 | 7091 | printf("innodb_log_block_size = %lu\n", innobase_log_block_size); | 7077 | printf("innodb_log_block_size = %lu\n", innobase_log_block_size); |
153 | 7078 | if (innobase_doublewrite_file != NULL) { | ||
154 | 7079 | printf("innodb_doublewrite_file = %s\n", innobase_doublewrite_file); | ||
155 | 7080 | } | ||
156 | 7092 | #endif | 7081 | #endif |
157 | 7093 | exit(EXIT_SUCCESS); | 7082 | exit(EXIT_SUCCESS); |
158 | 7094 | } | 7083 | } |
159 | 7095 | 7084 | ||
160 | === added file 'test/t/ib_doublewrite.sh' | |||
161 | --- test/t/ib_doublewrite.sh 1970-01-01 00:00:00 +0000 | |||
162 | +++ test/t/ib_doublewrite.sh 2012-11-15 16:48:23 +0000 | |||
163 | @@ -0,0 +1,120 @@ | |||
164 | 1 | ######################################################################## | ||
165 | 2 | # Bug #1066843: Fix for bug #932623 does not take separate doublewrite | ||
166 | 3 | # tablespace into account | ||
167 | 4 | # Bug #1068470: XtraBackup handles separate doublewrite buffer file | ||
168 | 5 | # incorrectly | ||
169 | 6 | # We testing full and incremental backup and restore to check that | ||
170 | 7 | # separate doublewrite buffer file handled correctly | ||
171 | 8 | ######################################################################## | ||
172 | 9 | |||
173 | 10 | . inc/common.sh | ||
174 | 11 | |||
175 | 12 | if [ -z "$XTRADB_VERSION" ]; then | ||
176 | 13 | echo "Requires XtraDB" > $SKIPPED_REASON | ||
177 | 14 | exit $SKIPPED_EXIT_CODE | ||
178 | 15 | fi | ||
179 | 16 | |||
180 | 17 | DBLWR=dblwr.ibd | ||
181 | 18 | start_server --innodb_file_per_table --innodb_doublewrite_file=${DBLWR} | ||
182 | 19 | load_dbase_schema incremental_sample | ||
183 | 20 | |||
184 | 21 | # Workaround for bug #1072695 | ||
185 | 22 | IB_ARGS_NO_DEFAULTS_FILE=`echo $IB_ARGS | sed -e 's/--defaults-file=[^ ]* / /'` | ||
186 | 23 | function innobackupex_no_defaults_file () | ||
187 | 24 | { | ||
188 | 25 | run_cmd $IB_BIN $IB_ARGS_NO_DEFAULTS_FILE $* | ||
189 | 26 | } | ||
190 | 27 | |||
191 | 28 | echo "innodb_doublewrite_file=${DBLWR}" >>$topdir/my.cnf | ||
192 | 29 | |||
193 | 30 | # Adding initial rows | ||
194 | 31 | vlog "Adding initial rows to database..." | ||
195 | 32 | ${MYSQL} ${MYSQL_ARGS} -e "insert into test values (1, 1);" incremental_sample | ||
196 | 33 | |||
197 | 34 | # Full backup | ||
198 | 35 | # backup root directory | ||
199 | 36 | mkdir -p $topdir/backup | ||
200 | 37 | |||
201 | 38 | vlog "Starting backup" | ||
202 | 39 | full_backup_dir=$topdir/backup/full | ||
203 | 40 | innobackupex --no-timestamp $full_backup_dir | ||
204 | 41 | vlog "Full backup done to directory $full_backup_dir" | ||
205 | 42 | cat $full_backup_dir/backup-my.cnf | ||
206 | 43 | |||
207 | 44 | # Changing data | ||
208 | 45 | |||
209 | 46 | vlog "Making changes to database" | ||
210 | 47 | ${MYSQL} ${MYSQL_ARGS} -e "create table t2 (a int(11) default null, number int(11) default null) engine=innodb" incremental_sample | ||
211 | 48 | ${MYSQL} ${MYSQL_ARGS} -e "insert into test values (10, 1);" incremental_sample | ||
212 | 49 | ${MYSQL} ${MYSQL_ARGS} -e "insert into t2 values (10, 1);" incremental_sample | ||
213 | 50 | vlog "Changes done" | ||
214 | 51 | |||
215 | 52 | # Saving the checksum of original table | ||
216 | 53 | checksum_test_a=`checksum_table incremental_sample test` | ||
217 | 54 | checksum_t2_a=`checksum_table incremental_sample t2` | ||
218 | 55 | vlog "Table 'test' checksum is $checksum_test_a" | ||
219 | 56 | vlog "Table 't2' checksum is $checksum_t2_a" | ||
220 | 57 | |||
221 | 58 | vlog "Making incremental backup" | ||
222 | 59 | |||
223 | 60 | vlog "###############" | ||
224 | 61 | vlog "# INCREMENTAL #" | ||
225 | 62 | vlog "###############" | ||
226 | 63 | |||
227 | 64 | # Incremental backup | ||
228 | 65 | inc_backup_dir=$topdir/backup/inc | ||
229 | 66 | innobackupex --no-timestamp --incremental --incremental-basedir=$full_backup_dir \ | ||
230 | 67 | $inc_backup_dir | ||
231 | 68 | vlog "Incremental backup done to directory $inc_backup_dir" | ||
232 | 69 | |||
233 | 70 | vlog "Preparing backup" | ||
234 | 71 | # Prepare backup | ||
235 | 72 | vlog "##############" | ||
236 | 73 | vlog "# PREPARE #1 #" | ||
237 | 74 | vlog "##############" | ||
238 | 75 | innobackupex_no_defaults_file --apply-log --redo-only $full_backup_dir | ||
239 | 76 | vlog "Log applied to full backup" | ||
240 | 77 | vlog "##############" | ||
241 | 78 | vlog "# PREPARE #2 #" | ||
242 | 79 | vlog "##############" | ||
243 | 80 | innobackupex_no_defaults_file --apply-log --redo-only --incremental-dir=$inc_backup_dir \ | ||
244 | 81 | $full_backup_dir | ||
245 | 82 | vlog "Delta applied to full backup" | ||
246 | 83 | vlog "##############" | ||
247 | 84 | vlog "# PREPARE #3 #" | ||
248 | 85 | vlog "##############" | ||
249 | 86 | innobackupex_no_defaults_file --apply-log $full_backup_dir | ||
250 | 87 | vlog "Data prepared for restore" | ||
251 | 88 | |||
252 | 89 | # Destroying mysql data | ||
253 | 90 | stop_server | ||
254 | 91 | rm -rf $mysql_datadir/* | ||
255 | 92 | vlog "Data destroyed" | ||
256 | 93 | |||
257 | 94 | # Restore backup | ||
258 | 95 | vlog "Copying files" | ||
259 | 96 | vlog "###########" | ||
260 | 97 | vlog "# RESTORE #" | ||
261 | 98 | vlog "###########" | ||
262 | 99 | innobackupex --copy-back $full_backup_dir | ||
263 | 100 | vlog "Data restored" | ||
264 | 101 | |||
265 | 102 | start_server --innodb_file_per_table --innodb_doublewrite_file=${DBLWR} | ||
266 | 103 | |||
267 | 104 | vlog "Checking checksums" | ||
268 | 105 | checksum_test_b=`checksum_table incremental_sample test` | ||
269 | 106 | checksum_t2_b=`checksum_table incremental_sample t2` | ||
270 | 107 | |||
271 | 108 | if [ "$checksum_test_a" != "$checksum_test_b" ] | ||
272 | 109 | then | ||
273 | 110 | vlog "Checksums for table 'test' are not equal" | ||
274 | 111 | exit -1 | ||
275 | 112 | fi | ||
276 | 113 | |||
277 | 114 | if [ "$checksum_t2_a" != "$checksum_t2_b" ] | ||
278 | 115 | then | ||
279 | 116 | vlog "Checksums for table 't2' are not equal" | ||
280 | 117 | exit -1 | ||
281 | 118 | fi | ||
282 | 119 | |||
283 | 120 | vlog "Checksums are OK" |
#26901