diff options
Diffstat (limited to 'solr-8.3.1/server/scripts/cloud-scripts')
-rw-r--r-- | solr-8.3.1/server/scripts/cloud-scripts/snapshotscli.sh | 176 | ||||
-rw-r--r-- | solr-8.3.1/server/scripts/cloud-scripts/zkcli.bat | 25 | ||||
-rw-r--r-- | solr-8.3.1/server/scripts/cloud-scripts/zkcli.sh | 26 |
3 files changed, 227 insertions, 0 deletions
diff --git a/solr-8.3.1/server/scripts/cloud-scripts/snapshotscli.sh b/solr-8.3.1/server/scripts/cloud-scripts/snapshotscli.sh new file mode 100644 index 000000000..e5a26d645 --- /dev/null +++ b/solr-8.3.1/server/scripts/cloud-scripts/snapshotscli.sh @@ -0,0 +1,176 @@ +#!/usr/bin/env bash + +set -e + +run_solr_snapshot_tool() { + JVM="java" + scriptDir=$(dirname "$0") + if [ -n "$LOG4J_PROPS" ]; then + log4j_config="file:${LOG4J_PROPS}" + else + log4j_config="file:${scriptDir}/../../resources/log4j2-console.xml" + fi + PATH=${JAVA_HOME}/bin:${PATH} ${JVM} ${ZKCLI_JVM_FLAGS} -Dlog4j.configurationFile=${log4j_config} \ + -classpath "${solrLibPath}" org.apache.solr.core.snapshots.SolrSnapshotsTool "$@" 2> /dev/null +} + +usage() { + run_solr_snapshot_tool --help +} + +distcp_warning() { + echo "SOLR_USE_DISTCP environment variable is not set. \ + Do you want to use hadoop distcp tool for exporting Solr collection snapshot ?" +} + +parse_options() { + OPTIND=3 + while getopts ":c:d:s:z:p:r:i:" o ; do + case "${o}" in + d) + destPath=${OPTARG} + ;; + s) + sourcePath=${OPTARG} + ;; + c) + collectionName=${OPTARG} + ;; + z) + solrZkEnsemble=${OPTARG} + ;; + p) + pathPrefix=${OPTARG} + ;; + r) + backupRepoName=${OPTARG} + ;; + i) + aysncReqId=${OPTARG} + ;; + *) + echo "Unknown option ${OPTARG}" + usage 1>&2 + exit 1 + ;; + esac + done +} + +prepare_snapshot_export() { + #Make sure to cleanup the temporary files. + scratch=$(mktemp -d -t solrsnaps.XXXXXXXXXX) + function finish { + rm -rf "${scratch}" + } + trap finish EXIT + + if hdfs dfs -test -d "${destPath}" ; then + run_solr_snapshot_tool --prepare-snapshot-export "$@" -t "${scratch}" + + hdfs dfs -mkdir -p "${copyListingDirPath}" > /dev/null + find "${scratch}" -type f -printf "%f\n" | while read shardId; do + echo "Copying the copy-listing for $shardId" + hdfs dfs -copyFromLocal "${scratch}/${shardId}" "${copyListingDirPath}" > /dev/null + done + else + echo "Directory ${destPath} does not exist." + exit 1 + fi +} + +copy_snapshot_files() { + copylisting_dir_path="$1" + + if hdfs dfs -test -d "${copylisting_dir_path}" ; then + for shardId in $(hdfs dfs -stat "%n" "${copylisting_dir_path}/*"); do + oPath="${destPath}/${snapshotName}/snapshot.${shardId}" + echo "Copying the index files for ${shardId} to ${oPath}" + ${distCpCmd} -f "${copylisting_dir_path}/${shardId}" "${oPath}" > /dev/null + done + else + echo "Directory ${copylisting_dir_path} does not exist." + exit 1 + fi +} + +collectionName="" +solrZkEnsemble="" +pathPrefix="" +destPath="" +sourcePath="" +cmd="$1" +snapshotName="$2" +copyListingDirPath="" +distCpCmd="${SOLR_DISTCP_CMD:-hadoop distcp}" +scriptDir=$(dirname "$0") +solrLibPath="${SOLR_LIB_PATH:-${scriptDir}/../../solr-webapp/webapp/WEB-INF/lib/*:${scriptDir}/../../lib/ext/*}" + +case "${cmd}" in + --create) + run_solr_snapshot_tool "$@" + ;; + --delete) + run_solr_snapshot_tool "$@" + ;; + --list) + run_solr_snapshot_tool "$@" + ;; + --describe) + run_solr_snapshot_tool "$@" + ;; + --prepare-snapshot-export) + : "${SOLR_USE_DISTCP:? $(distcp_warning)}" + + parse_options "$@" + + : "${destPath:? Please specify destination directory using -d option}" + + copyListingDirPath="${destPath}/copylistings" + prepare_snapshot_export "${@:2}" + echo "Done. GoodBye!" + ;; + --export) + if [ -z "${SOLR_USE_DISTCP}" ]; then + run_solr_snapshot_tool "$@" + echo "Done. GoodBye!" + exit 0 + fi + + parse_options "$@" + + : "${snapshotName:? Please specify the name of the snapshot}" + : "${destPath:? Please specify destination directory using -d option}" + + if [ -n "${collectionName}" ] && [ -n "${sourcePath}" ]; then + echo "The -c and -s options can not be specified together" + exit 1 + fi + + if [ -z "${collectionName}" ] && [ -z "${sourcePath}" ]; then + echo "At least one of options (-c or -s) must be specified" + exit 1 + fi + + if [ -n "${collectionName}" ]; then + copyListingDirPath="${destPath}/${snapshotName}/copylistings" + prepare_snapshot_export "${@:2}" + copy_snapshot_files "${destPath}/${snapshotName}/copylistings" + hdfs dfs -rm -r -f -skipTrash "${destPath}/${snapshotName}/copylistings" > /dev/null + else + copy_snapshot_files "${sourcePath}/copylistings" + echo "Copying the collection meta-data to ${destPath}/${snapshotName}" + ${distCpCmd} "${sourcePath}/${snapshotName}/*" "${destPath}/${snapshotName}/" > /dev/null + fi + + echo "Done. GoodBye!" + ;; + --help) + usage 1>&2 + ;; + *) + echo "Unknown command ${cmd}" + usage 1>&2 + exit 1 +esac + diff --git a/solr-8.3.1/server/scripts/cloud-scripts/zkcli.bat b/solr-8.3.1/server/scripts/cloud-scripts/zkcli.bat new file mode 100644 index 000000000..7005b63a5 --- /dev/null +++ b/solr-8.3.1/server/scripts/cloud-scripts/zkcli.bat @@ -0,0 +1,25 @@ +@echo off +REM You can override pass the following parameters to this script: +REM + +set JVM=java + +REM Find location of this script + +set SDIR=%~dp0 +if "%SDIR:~-1%"=="\" set SDIR=%SDIR:~0,-1% + +if defined LOG4J_PROPS ( + set "LOG4J_CONFIG=file:///%LOG4J_PROPS%" +) else ( + set "LOG4J_CONFIG=file:///%SDIR%\..\..\resources\log4j2-console.xml" +) + +REM Settings for ZK ACL +REM set SOLR_ZK_CREDS_AND_ACLS=-DzkACLProvider=org.apache.solr.common.cloud.VMParamsAllAndReadonlyDigestZkACLProvider ^ +REM -DzkCredentialsProvider=org.apache.solr.common.cloud.VMParamsSingleSetCredentialsDigestZkCredentialsProvider ^ +REM -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD ^ +REM -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD + +"%JVM%" %SOLR_ZK_CREDS_AND_ACLS% %ZKCLI_JVM_FLAGS% -Dlog4j.configurationFile="%LOG4J_CONFIG%" ^ +-classpath "%SDIR%\..\..\solr-webapp\webapp\WEB-INF\lib\*;%SDIR%\..\..\lib\ext\*;%SDIR%\..\..\lib\*" org.apache.solr.cloud.ZkCLI %* diff --git a/solr-8.3.1/server/scripts/cloud-scripts/zkcli.sh b/solr-8.3.1/server/scripts/cloud-scripts/zkcli.sh new file mode 100644 index 000000000..37b1ec9aa --- /dev/null +++ b/solr-8.3.1/server/scripts/cloud-scripts/zkcli.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# You can override pass the following parameters to this script: +# + +JVM="java" + +# Find location of this script + +sdir="`dirname \"$0\"`" + +if [ -n "$LOG4J_PROPS" ]; then + log4j_config="file:$LOG4J_PROPS" +else + log4j_config="file:$sdir/../../resources/log4j2-console.xml" +fi + +# Settings for ZK ACL +#SOLR_ZK_CREDS_AND_ACLS="-DzkACLProvider=org.apache.solr.common.cloud.VMParamsAllAndReadonlyDigestZkACLProvider \ +# -DzkCredentialsProvider=org.apache.solr.common.cloud.VMParamsSingleSetCredentialsDigestZkCredentialsProvider \ +# -DzkDigestUsername=admin-user -DzkDigestPassword=CHANGEME-ADMIN-PASSWORD \ +# -DzkDigestReadonlyUsername=readonly-user -DzkDigestReadonlyPassword=CHANGEME-READONLY-PASSWORD" + +PATH=$JAVA_HOME/bin:$PATH $JVM $SOLR_ZK_CREDS_AND_ACLS $ZKCLI_JVM_FLAGS -Dlog4j.configurationFile=$log4j_config \ +-classpath "$sdir/../../solr-webapp/webapp/WEB-INF/lib/*:$sdir/../../lib/ext/*:$sdir/../../lib/*" org.apache.solr.cloud.ZkCLI ${1+"$@"} + |