github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/incompatible_ddl_changes/run.sh (about) 1 #!/bin/bash 2 3 set -eu 4 5 cur=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 6 source $cur/../_utils/test_prepare 7 WORK_DIR=$TEST_DIR/$TEST_NAME 8 API_VERSION="v1alpha1" 9 10 function incompatible_ddl() { 11 cleanup_data incompatible_ddl_changes 12 13 run_dm_master $WORK_DIR/master $MASTER_PORT1 $cur/conf/dm-master.toml 14 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT1 15 16 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml 17 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT 18 dmctl_operate_source create $cur/conf/source1.yaml $SOURCE_ID1 19 20 run_sql_file $cur/data/db1.prepare.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1 21 22 dmctl_start_task_standalone $cur/conf/$1 23 24 run_sql_file $cur/data/db1.increment.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1 25 26 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 27 "query-status test" \ 28 "\"result\": true" 2 \ 29 "\"synced\": true" 1 30 31 # value range decrease 32 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_mediumint smallint(6);" 33 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 34 "query-status test" \ 35 "event value range decrease" 1 36 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 37 "binlog skip test" \ 38 "\"result\": true" 2 39 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_mediumint mediumint(7);" 40 41 # precision decrease 42 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_decimal decimal(7,1);" 43 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 44 "query-status test" \ 45 "event precision decrease" 1 46 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 47 "binlog skip test" \ 48 "\"result\": true" 2 49 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_decimal decimal(7,2);" 50 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 51 "query-status test" \ 52 "event precision decrease" 1 53 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 54 "binlog skip test" \ 55 "\"result\": true" 2 56 57 # modify column 58 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_mediumint varchar(10);" 59 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 60 "query-status test" \ 61 "event modify column" 1 62 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 63 "binlog skip test" \ 64 "\"result\": true" 2 65 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify column c_mediumint mediumint(7);" 66 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 67 "query-status test" \ 68 "event modify column" 1 69 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 70 "binlog skip test" \ 71 "\"result\": true" 2 72 73 # rename column 74 run_sql_source1 "alter table incompatible_ddl_changes.t1 change c_mediumint c_mediumint_new mediumint(7);" 75 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 76 "query-status test" \ 77 "event rename column" 1 78 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 79 "binlog skip test" \ 80 "\"result\": true" 2 81 run_sql_source1 "alter table incompatible_ddl_changes.t1 change c_mediumint_new c_mediumint mediumint(7);" 82 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 83 "query-status test" \ 84 "event rename column" 1 85 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 86 "binlog skip test" \ 87 "\"result\": true" 2 88 89 # drop column 90 run_sql_source1 "alter table incompatible_ddl_changes.t1 drop column c_json;" 91 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 92 "query-status test" \ 93 "event drop column" 1 94 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 95 "binlog skip test" \ 96 "\"result\": true" 2 97 run_sql_source1 "alter table incompatible_ddl_changes.t1 add column c_json json;" 98 99 # remove auto increment 100 run_sql_source1 "alter table incompatible_ddl_changes.t1 change id id int(11)" 101 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 102 "query-status test" \ 103 "event remove auto increment" 1 104 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 105 "binlog skip test" \ 106 "\"result\": true" 2 107 108 # drop pk 109 run_sql_source1 "alter table incompatible_ddl_changes.t1 drop primary key" 110 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 111 "query-status test" \ 112 "event drop primary key" 1 113 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 114 "binlog skip test" \ 115 "\"result\": true" 2 116 117 # modify default value 118 run_sql_source1 "alter table incompatible_ddl_changes.t1 change c_int c_int int default 1" 119 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 120 "query-status test" \ 121 "event modify default value" 1 122 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 123 "binlog skip test" \ 124 "\"result\": true" 2 125 126 # modify constraint 127 run_sql_source1 "alter table incompatible_ddl_changes.t1 add constraint c_int_unique unique(c_int)" 128 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 129 "query-status test" \ 130 "event modify constraint" 1 131 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 132 "binlog skip test" \ 133 "\"result\": true" 2 134 135 # drop uk 136 run_sql_source1 "alter table incompatible_ddl_changes.t1 change c_int c_int int" 137 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 138 "query-status test" \ 139 "drop unique key" 1 140 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 141 "binlog skip test" \ 142 "\"result\": true" 2 143 # drop index 144 run_sql_source1 "alter table incompatible_ddl_changes.t1 drop index c_int_unique" 145 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 146 "query-status test" \ 147 "event drop index" 1 148 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 149 "binlog skip test" \ 150 "\"result\": true" 2 151 152 # modify column order 153 run_sql_source1 "alter table incompatible_ddl_changes.t1 change c_smallint c_smallint smallint(6) after c_json" 154 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 155 "query-status test" \ 156 "event modify columns order" 1 157 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 158 "binlog skip test" \ 159 "\"result\": true" 2 160 161 # modify charset 162 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify c_char char(4) CHARACTER SET latin1;" 163 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 164 "query-status test" \ 165 "event modify charset" 1 166 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 167 "binlog skip test" \ 168 "\"result\": true" 2 169 170 # modify collation 171 run_sql_source1 "alter table incompatible_ddl_changes.t1 modify c_text text COLLATE utf8mb4_unicode_ci;" 172 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 173 "query-status test" \ 174 "event modify collation" 1 175 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 176 "binlog skip test" \ 177 "\"result\": true" 2 178 179 # modify storage engine 180 run_sql_source1 "alter table incompatible_ddl_changes.t1 engine = MyISAM;" 181 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 182 "query-status test" \ 183 "event modify storage engine" 1 184 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 185 "binlog skip test" \ 186 "\"result\": true" 2 187 188 # reorganize partition 189 run_sql_source1 "alter table incompatible_ddl_changes.t1 partition by range(id) (partition p0 values less than (100000))" 190 run_sql_source1 "alter table incompatible_ddl_changes.t1 reorganize partition p0 into ( partition n0 values less than (5), partition n1 values less than (100000));" 191 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 192 "query-status test" \ 193 "event reorganize table partition" 1 194 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 195 "binlog skip test" \ 196 "\"result\": true" 2 197 198 # truncate partition 199 run_sql_source1 "alter table incompatible_ddl_changes.t1 truncate partition n0" 200 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 201 "query-status test" \ 202 "event truncate table partition" 1 203 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 204 "binlog skip test" \ 205 "\"result\": true" 2 206 207 # rebuild partition 208 run_sql_source1 "alter table incompatible_ddl_changes.t1 rebuild partition n0,n1;" 209 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 210 "query-status test" \ 211 "event rebuild table partition" 1 212 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 213 "binlog skip test" \ 214 "\"result\": true" 2 215 216 # exchange partition 217 run_sql_source1 "create table incompatible_ddl_changes.tb1(id int) partition by range(id)(partition p0 values less than (100000), partition p1 values less than(1000000));" 218 run_sql_source1 "create table incompatible_ddl_changes.tb2(id int);" 219 run_sql_source1 "alter table incompatible_ddl_changes.tb1 exchange partition p0 with table incompatible_ddl_changes.tb2" 220 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 221 "query-status test" \ 222 "event exchange table partition" 1 223 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 224 "binlog skip test" \ 225 "\"result\": true" 2 226 227 # coalesce partition 228 run_sql_source1 "create table incompatible_ddl_changes.tb3(id int) partition by hash(id) partitions 6;" 229 run_sql_source1 "alter table incompatible_ddl_changes.tb3 coalesce partition 2;" 230 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 231 "query-status test" \ 232 "event coalesce table partition" 1 233 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 234 "binlog skip test" \ 235 "\"result\": true" 2 236 237 # rename index 238 run_sql_source1 "alter table incompatible_ddl_changes.tb3 add index idx(id);" 239 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 240 "query-status test" \ 241 "event modify constraint" 1 242 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 243 "binlog skip test" \ 244 "\"result\": true" 2 245 run_sql_source1 "alter table incompatible_ddl_changes.tb3 rename index idx to idx1;" 246 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 247 "query-status test" \ 248 "event rename index" 1 249 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 250 "binlog skip test" \ 251 "\"result\": true" 2 252 253 # drop partition 254 run_sql_source1 "alter table incompatible_ddl_changes.tb1 drop partition p0;" 255 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 256 "query-status test" \ 257 "event drop table partition" 1 258 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 259 "binlog skip test" \ 260 "\"result\": true" 2 261 262 # rename table 263 run_sql_source1 "rename table incompatible_ddl_changes.tb3 to incompatible_ddl_changes.tb4;" 264 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 265 "query-status test" \ 266 "event rename table" 1 267 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 268 "binlog skip test" \ 269 "\"result\": true" 2 270 271 # truncate table 272 run_sql_source1 "truncate table incompatible_ddl_changes.tb4;" 273 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 274 "query-status test" \ 275 "event truncate table" 1 276 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 277 "binlog skip test" \ 278 "\"result\": true" 2 279 280 # drop table 281 run_sql_source1 "drop table incompatible_ddl_changes.tb4;" 282 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 283 "query-status test" \ 284 "event drop table" 1 285 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 286 "binlog skip test" \ 287 "\"result\": true" 2 288 289 # drop database 290 run_sql_source1 "drop database incompatible_ddl_changes;" 291 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 292 "query-status test" \ 293 "event drop database" 1 294 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 295 "binlog skip test" \ 296 "\"result\": true" 2 297 298 run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 299 "stop-task test" 300 301 cleanup_process $* 302 cleanup_data incompatible_ddl_changes 303 } 304 305 function run() { 306 incompatible_ddl dm-task.yaml 307 incompatible_ddl dm-task1.yaml 308 } 309 310 cleanup_data incompatible_ddl_changes 311 # also cleanup dm processes in case of last run failed 312 cleanup_process $* 313 run $* 314 cleanup_process $* 315 316 echo "[$(date)] <<<<<< test case $TEST_NAME success! >>>>>>"