@@ -22,9 +22,15 @@ CUR=$(cd `dirname $0`; pwd)
22
22
PREFIX=" pitr_backup" # NOTICE: don't start with 'br' because `restart services` would remove file/directory br*.
23
23
res_file=" $TEST_DIR /sql_res.$TEST_NAME .txt"
24
24
25
+ restart_services_allowing_huge_index () {
26
+ echo " restarting services with huge indices enabled..."
27
+ stop_services
28
+ start_services --tidb-cfg " $CUR /config/tidb-max-index-length.toml"
29
+ echo " restart services done..."
30
+ }
31
+
25
32
# start a new cluster
26
- echo " restart a services"
27
- restart_services
33
+ restart_services_allowing_huge_index
28
34
29
35
# prepare the data
30
36
echo " prepare the data"
91
97
# ...
92
98
93
99
# start a new cluster
100
+ <<< <<< < HEAD
94
101
echo " restart a services"
95
102
restart_services
103
+ =======
104
+ restart_services_allowing_huge_index
105
+ >>>>>>> 384f858a6c8 (br/stream: allow pitr to create oversized indices (# 58433))
96
106
97
107
# PITR restore
98
108
echo " run pitr"
109
+ <<< <<< < HEAD
99
110
run_br --pd $PD_ADDR restore point -s " local://$TEST_DIR /$PREFIX /log" --full-backup-storage " local://$TEST_DIR /$PREFIX /full" > $res_file 2>&1
100
111
101
112
# check something in downstream cluster
@@ -109,3 +120,85 @@ run_sql "select * from mysql.gc_delete_range_done"
109
120
run_sql " select count(*) DELETE_RANGE_CNT from (select * from mysql.gc_delete_range union all select * from mysql.gc_delete_range_done) del_range group by ts order by DELETE_RANGE_CNT desc limit 1;"
110
121
expect_delete_range=$(( $incremental_delete_range_count - $prepare_delete_range_count ))
111
122
check_contains " DELETE_RANGE_CNT: $expect_delete_range "
123
+ =======
124
+ run_sql " DROP DATABASE __TiDB_BR_Temporary_Log_Restore_Checkpoint;"
125
+ run_sql " DROP DATABASE __TiDB_BR_Temporary_Custom_SST_Restore_Checkpoint;"
126
+ run_br --pd $PD_ADDR restore point -s " local://$TEST_DIR /$PREFIX /log" --full-backup-storage " local://$TEST_DIR /$PREFIX /full" > $res_file 2>&1 || ( cat $res_file && exit 1 )
127
+
128
+ check_result
129
+
130
+ # start a new cluster for incremental + log
131
+ restart_services_allowing_huge_index
132
+
133
+ echo " run snapshot restore#2"
134
+ run_br --pd $PD_ADDR restore full -s " local://$TEST_DIR /$PREFIX /full"
135
+
136
+ echo " run incremental restore + log restore"
137
+ run_br --pd $PD_ADDR restore point -s " local://$TEST_DIR /$PREFIX /log" --full-backup-storage " local://$TEST_DIR /$PREFIX /inc" > $res_file 2>&1
138
+
139
+ check_result
140
+
141
+ # start a new cluster for incremental + log
142
+ echo " restart services"
143
+ restart_services_allowing_huge_index
144
+
145
+ echo " run snapshot restore#3"
146
+ run_br --pd $PD_ADDR restore full -s " local://$TEST_DIR /$PREFIX /full"
147
+
148
+ echo " run incremental restore but failed"
149
+ restore_fail=0
150
+ run_br --pd $PD_ADDR restore full -s " local://$TEST_DIR /$PREFIX /inc_fail" || restore_fail=1
151
+ if [ $restore_fail -ne 1 ]; then
152
+ echo ' pitr success on incremental restore'
153
+ exit 1
154
+ fi
155
+
156
+ # start a new cluster for corruption
157
+ restart_services_allowing_huge_index
158
+
159
+ file_corruption () {
160
+ echo " corrupt the whole log files"
161
+ for filename in $( find $TEST_DIR /$PREFIX /log -regex " .*\.log" | grep -v " schema-meta" ) ; do
162
+ echo " corrupt the log file $filename "
163
+ filename_temp=$filename " _temp"
164
+ echo " corruption" > $filename_temp
165
+ cat $filename >> $filename_temp
166
+ mv $filename_temp $filename
167
+ truncate -s -11 $filename
168
+ done
169
+ }
170
+
171
+ # file corruption
172
+ file_corruption
173
+ export GO_FAILPOINTS=" github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)"
174
+ restore_fail=0
175
+ run_br --pd $PD_ADDR restore point -s " local://$TEST_DIR /$PREFIX /log" --full-backup-storage " local://$TEST_DIR /$PREFIX /full" || restore_fail=1
176
+ export GO_FAILPOINTS=" "
177
+ if [ $restore_fail -ne 1 ]; then
178
+ echo ' pitr success on file corruption'
179
+ exit 1
180
+ fi
181
+
182
+ # start a new cluster for corruption
183
+ restart_services_allowing_huge_index
184
+
185
+ file_lost () {
186
+ echo " lost the whole log files"
187
+ for filename in $( find $TEST_DIR /$PREFIX /log -regex " .*\.log" | grep -v " schema-meta" ) ; do
188
+ echo " lost the log file $filename "
189
+ filename_temp=$filename " _temp"
190
+ mv $filename $filename_temp
191
+ done
192
+ }
193
+
194
+ # file lost
195
+ file_lost
196
+ export GO_FAILPOINTS=" github.com/pingcap/tidb/br/pkg/utils/set-remaining-attempts-to-one=return(true)"
197
+ restore_fail=0
198
+ run_br --pd $PD_ADDR restore point -s " local://$TEST_DIR /$PREFIX /log" --full-backup-storage " local://$TEST_DIR /$PREFIX /full" || restore_fail=1
199
+ export GO_FAILPOINTS=" "
200
+ if [ $restore_fail -ne 1 ]; then
201
+ echo ' pitr success on file lost'
202
+ exit 1
203
+ fi
204
+ >>>>>>> 384f858a6c8 (br/stream: allow pitr to create oversized indices (# 58433))
0 commit comments