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  }