~percona-dev/percona-xtrabackup/release-1.5

« back to all changes in this revision

Viewing changes to test/t/xb_incremental.sh

  • Committer: Alexey Kopytov
  • Date: 2010-12-10 18:26:31 UTC
  • mfrom: (202.2.6 xtrabackup)
  • Revision ID: akopytov@gmail.com-20101210182631-9uhh0i1m70h953vt
Added tests for incremental and partial backups (merge from Valentine)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
. inc/common.sh
 
2
 
 
3
init
 
4
run_mysqld
 
5
load_dbase_schema incremental_sample
 
6
 
 
7
# Adding 10k rows
 
8
 
 
9
vlog "Adding initial rows to database..."
 
10
 
 
11
numrow=100
 
12
count=0
 
13
while [ "$numrow" -gt "$count" ]
 
14
do
 
15
        ${MYSQL} ${MYSQL_ARGS} -e "insert into test values ($count, $numrow);" incremental_sample
 
16
        let "count=count+1"
 
17
done
 
18
 
 
19
 
 
20
vlog "Initial rows added"
 
21
 
 
22
# Full backup
 
23
 
 
24
# Full backup folder
 
25
mkdir -p $topdir/data/full
 
26
# Incremental data
 
27
mkdir -p $topdir/data/delta
 
28
 
 
29
vlog "Starting backup"
 
30
 
 
31
xtrabackup --datadir=$mysql_datadir --backup --target-dir=$topdir/data/full
 
32
 
 
33
vlog "Full backup done"
 
34
 
 
35
# Changing data in sakila
 
36
 
 
37
vlog "Making changes to database"
 
38
 
 
39
let "count=numrow+1"
 
40
let "numrow=500"
 
41
while [ "$numrow" -gt "$count" ]
 
42
do
 
43
        ${MYSQL} ${MYSQL_ARGS} -e "insert into test values ($count, $numrow);" incremental_sample
 
44
        let "count=count+1"
 
45
done
 
46
 
 
47
vlog "Changes done"
 
48
 
 
49
# Saving the checksum of original table
 
50
checksum_a=`${MYSQL} ${MYSQL_ARGS} -Ns -e "checksum table test;" incremental_sample | awk '{print $2}'`
 
51
 
 
52
vlog "Table checksum is $checksum_a"
 
53
 
 
54
vlog "Making incremental backup"
 
55
 
 
56
# Incremental backup
 
57
xtrabackup --datadir=$mysql_datadir --backup --target-dir=$topdir/data/delta --incremental-basedir=$topdir/data/full
 
58
 
 
59
vlog "Incremental backup done"
 
60
vlog "Preparing backup"
 
61
 
 
62
# Prepare backup
 
63
xtrabackup --datadir=$mysql_datadir --prepare --apply-log-only --target-dir=$topdir/data/full
 
64
vlog "Log applied to backup"
 
65
xtrabackup --datadir=$mysql_datadir --prepare --apply-log-only --target-dir=$topdir/data/full --incremental-dir=$topdir/data/delta
 
66
vlog "Delta applied to backup"
 
67
xtrabackup --datadir=$mysql_datadir --prepare --target-dir=$topdir/data/full
 
68
vlog "Data prepared for restore"
 
69
 
 
70
# removing rows
 
71
vlog "Table cleared"
 
72
${MYSQL} ${MYSQL_ARGS} -e "delete from test;" incremental_sample
 
73
 
 
74
# Restore backup
 
75
 
 
76
stop_mysqld
 
77
 
 
78
vlog "Copying files"
 
79
 
 
80
cd $topdir/data/full/
 
81
cp -r * $mysql_datadir
 
82
cd $topdir
 
83
 
 
84
vlog "Data restored"
 
85
 
 
86
run_mysqld
 
87
 
 
88
vlog "Cheking checksums"
 
89
checksum_b=`${MYSQL} ${MYSQL_ARGS} -Ns -e "checksum table test;" incremental_sample | awk '{print $2}'`
 
90
 
 
91
if [ $checksum_a -ne $checksum_b  ]
 
92
then 
 
93
        vlog "Checksums are not equal"
 
94
        exit -1
 
95
fi
 
96
 
 
97
vlog "Checksums are OK"
 
98
 
 
99
stop_mysqld
 
100
clean