github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/upstream_switch/lib.sh (about) 1 #!/bin/bash 2 3 set -eu 4 5 export TEST_DIR=/tmp/dm_test 6 export TEST_NAME="upstream_switch" 7 8 WORK_DIR=$TEST_DIR/$TEST_NAME 9 rm -rf $WORK_DIR 10 mkdir -p $WORK_DIR 11 12 db="db_pessimistic" 13 tb="tb" 14 host1="172.28.128.2" 15 host2="172.28.128.3" 16 master_57_host="172.28.128.4" 17 slave_57_host="172.28.128.5" 18 master_8_host="172.28.128.6" 19 slave_8_host="172.28.128.7" 20 tidb_host="172.28.128.8" 21 MASTER_PORT=8261 22 WORKER1_PORT=8262 23 WORKER2_PORT=8263 24 25 function exec_sql() { 26 echo $2 | MYSQL_PWD=123456 mysql -uroot -h$1 -P3306 27 } 28 29 function exec_tidb() { 30 echo $2 | mysql -uroot -h$1 -P4000 31 } 32 33 function install_sync_diff() { 34 curl https://download.pingcap.org/tidb-enterprise-tools-nightly-linux-amd64.tar.gz | tar xz 35 mkdir -p bin 36 mv tidb-enterprise-tools-nightly-linux-amd64/bin/sync_diff_inspector bin/ 37 } 38 39 function prepare_more_binlogs() { 40 exec_sql $1 "create database db1 collate latin1_bin;" 41 exec_sql $1 "flush logs;" 42 exec_sql $1 "create table db1.tb1(id int);" 43 exec_sql $1 "flush logs;" 44 exec_sql $1 "insert into db1.tb1 values(1);" 45 exec_sql $1 "insert into db1.tb1 values(2),(3),(4);" 46 } 47 48 function prepare_less_binlogs() { 49 exec_sql $1 "create database db2 collate latin1_bin;" 50 exec_sql $1 "flush logs;" 51 exec_sql $1 "create table db2.tb2(id int);" 52 exec_sql $1 "insert into db2.tb2 values(1);" 53 exec_sql $1 "insert into db2.tb2 values(2),(3);" 54 } 55 56 function get_master_status() { 57 arr=$(echo "show master status;" | MYSQL_PWD=123456 mysql -uroot -h$1 -P3306 | awk 'NR==2') 58 echo $arr 59 } 60 61 function change_master_to_pos() { 62 exec_sql $1 "stop slave;" 63 echo "change master to master_host='$2',master_user='root',master_password='123456',master_log_file='$3',master_log_pos=$4;" 64 exec_sql $1 "change master to master_host='$2',master_user='root',master_password='123456',master_log_file='$3',master_log_pos=$4;" 65 exec_sql $1 "start slave;" 66 } 67 68 function change_master_to_gtid() { 69 exec_sql $1 "stop slave;" 70 exec_sql $1 "change master to master_host='$2',master_user='root',master_password='123456',master_auto_position=1;" 71 exec_sql $1 "start slave;" 72 } 73 74 function wait_mysql() { 75 echo "-------wait_mysql--------" 76 77 i=0 78 while ! mysqladmin -h$1 -P3306 -uroot ping --connect-timeout=1 >/dev/null 2>&1; do 79 echo "wait mysql" 80 i=$((i + 1)) 81 if [ "$i" -gt 20 ]; then 82 echo "wait for mysql $1:3306 timeout" 83 exit 1 84 fi 85 sleep 1 86 done 87 i=0 88 89 server_id=$(echo "show variables like 'server_id';" | MYSQL_PWD=123456 mysql -uroot -h$1 -P3306 | awk 'NR==2' | awk '{print $2}') 90 while [ "$server_id" != $2 ]; do 91 echo "wait server_id" 92 i=$((i + 1)) 93 if [ "$i" -gt 20 ]; then 94 echo "different server_id: $server_id, expect: $2, host: $1" 95 exit 1 96 fi 97 sleep 1 98 server_id=$(echo "show variables like 'server_id';" | MYSQL_PWD=123456 mysql -uroot -h$1 -P3306 | awk 'NR==2' | awk '{print $2}') 99 done 100 }