github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/_utils/run_downstream_cluster (about)

     1  #!/bin/bash
     2  # tools to run a TiDB cluster
     3  # parameter 1: work directory
     4  set -eu
     5  WORK_DIR=$1
     6  
     7  export PD_PEER_ADDR="127.0.0.1:2380"
     8  export PD_ADDR="127.0.0.1:2379"
     9  
    10  export TIDB_IP="127.0.0.1"
    11  export TIDB_PORT="4000"
    12  export TIDB_ADDR="127.0.0.1:4000"
    13  
    14  export TIDB_STATUS_ADDR="127.0.0.1:10080"
    15  export TIKV_ADDR="127.0.0.1:2016"
    16  export TIKV_STATUS_ADDR="127.0.0.1:2018"
    17  
    18  start_pd() {
    19  	echo "Starting PD..."
    20  
    21  	cat >"$WORK_DIR/pd.toml" <<EOF
    22  [replication]
    23  # The number of replicas for each region.
    24  max-replicas = 1
    25  EOF
    26  
    27  	pd-server --version
    28  	mkdir -p "$WORK_DIR/pd"
    29  	bin/pd-server \
    30  		--client-urls "http://$PD_ADDR" \
    31  		--peer-urls "http://$PD_PEER_ADDR" \
    32  		--log-file "$WORK_DIR/pd.log" \
    33  		--config "$WORK_DIR/pd.toml" \
    34  		--data-dir "$WORK_DIR/pd" &
    35  	# wait until PD is online...
    36  	i=0
    37  	while ! curl "http://$PD_ADDR/pd/api/v1/version"; do
    38  		i=$((i + 1))
    39  		if [ "$i" -gt 20 ]; then
    40  			echo 'Failed to start PD'
    41  			return 1
    42  		fi
    43  		sleep 3
    44  	done
    45  }
    46  
    47  start_tikv() {
    48  	echo "Starting TiKV..."
    49  	mkdir -p "$WORK_DIR/tikv"
    50  	bin/tikv-server \
    51  		--pd "$PD_ADDR" \
    52  		-A "$TIKV_ADDR" \
    53  		--status-addr "$TIKV_STATUS_ADDR" \
    54  		--log-file "$WORK_DIR/tikv.log" \
    55  		--log-level info \
    56  		-s "$WORK_DIR/tikv" &
    57  	while ! curl "http://$PD_ADDR/pd/api/v1/cluster/status" | tee /dev/stderr | grep '"is_initialized": true'; do
    58  		i=$((i + 1))
    59  		if [ "$i" -gt 20 ]; then
    60  			echo 'Failed to initialize TiKV cluster'
    61  			return 1
    62  		fi
    63  		sleep 5
    64  	done
    65  }
    66  
    67  start_tidb() {
    68  	echo "Starting TiDB..."
    69  	bin/tidb-server \
    70  		-P 4000 \
    71  		--status 10080 \
    72  		--advertise-address="127.0.0.1" \
    73  		--store tikv \
    74  		--path "$PD_ADDR" \
    75  		--log-file "$WORK_DIR/tidb.log" &
    76  
    77  	i=0
    78  	while ! curl "http://$TIDB_IP:10080/status"; do
    79  		i=$((i + 1))
    80  		if [ "$i" -gt 50 ]; then
    81  			echo 'Failed to start TiDB'
    82  			return 1
    83  		fi
    84  		sleep 3
    85  	done
    86  }
    87  
    88  start_pd
    89  start_tikv
    90  start_tidb
    91  
    92  mysql -uroot -h127.0.0.1 -P4000 --default-character-set utf8 -e "CREATE USER 'test'@'%' IDENTIFIED BY '123456';" || true
    93  mysql -uroot -h127.0.0.1 -P4000 --default-character-set utf8 -e "GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;" || true