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