102 lines
3.1 KiB
Bash
Executable File
102 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
# print usage
|
|
usage() {
|
|
echo "
|
|
Description:
|
|
This script is used to restore the tablets from trash. It supports single mode
|
|
and batch mode.
|
|
In single mode, it will restore just one tablet.
|
|
In batch mode, it will restore all the tablets specified in file. The content
|
|
of the file is comma-split tablet id and schema hash, like the following:
|
|
12345,11111
|
|
12346,11111
|
|
12347,11111
|
|
|
|
Usage: $0 <options>
|
|
Optional options:
|
|
-h | --help print help info
|
|
-b | --backend backend http service, default: http://127.0.0.1/8040
|
|
-t | --tablet_id tablet id to restore
|
|
-s | --schema_hash tablet related schema hash
|
|
-f | --file file with lines containing comma-split tablet id and schema hash
|
|
|
|
Examples:
|
|
batch mode:
|
|
sh restore_tablet_tool.sh -b "http://127.0.0.1:8040" -f tablets.txt
|
|
sh restore_tablet_tool.sh --backend "http://127.0.0.1:8040" --file tablets.txt
|
|
|
|
single mode:
|
|
sh restore_tablet_tool.sh -b "http://127.0.0.1:8040" -t 12345 -s 11111
|
|
sh restore_tablet_tool.sh --backend "http://127.0.0.1:8040" --tablet_id 12345 --schema_hash 11111
|
|
"
|
|
exit 1
|
|
}
|
|
|
|
OPTS=$(getopt \
|
|
-n $0 \
|
|
-o 'b:t:s:f:' \
|
|
-l 'server:,tablet_id:,schema_hash:,file:,help' \
|
|
-- "$@")
|
|
|
|
if [ $? != 0 ] ; then
|
|
usage
|
|
fi
|
|
|
|
eval set -- "$OPTS"
|
|
|
|
SERVER="http://127.0.0.1/8040"
|
|
TABLET_ID=
|
|
SCHEMA_HASH=
|
|
FILENAME=
|
|
BATCH_MODE=false
|
|
|
|
while true; do
|
|
case "$1" in
|
|
-b|--backend) SERVER=$2 ; shift 2 ;;
|
|
-f|--file) FILENAME=$2 ; BATCH_MODE=true ; shift 2 ;;
|
|
-t|--tablet_id) TABLET_ID=$2 ; shift 2 ;;
|
|
-s|--schema_hash) SCHEMA_HASH=$2 ; shift 2 ;;
|
|
-h|--help) usage ; shift ;;
|
|
--) shift ; break ;;
|
|
*) echo "Internal error!" ; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
restore_tablet() {
|
|
echo "start to restore tablet id:"$2", schema hash:"$3
|
|
curl -X POST "$1/api/restore_tablet?tablet_id=$2&schema_hash=$3"
|
|
echo -e "\n"
|
|
}
|
|
|
|
if [ $BATCH_MODE = true ] ; then
|
|
lines=`cat $FILENAME`
|
|
for line in $lines
|
|
do
|
|
# split the comma-split line
|
|
# format: tablet_id,schema_hash
|
|
fields=(${line/,/ })
|
|
TABLET_ID=${fields[0]}
|
|
SCHEMA_HASH=${fields[1]}
|
|
restore_tablet $SERVER $TABLET_ID $SCHEMA_HASH
|
|
done
|
|
else
|
|
restore_tablet $SERVER $TABLET_ID $SCHEMA_HASH
|
|
fi
|