initial commit

This commit is contained in:
2021-08-06 14:49:29 -04:00
commit b50fc37373
10 changed files with 195 additions and 0 deletions

34
setenv.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
if [[ ! -z "$SOLR_HOST" ]]; then
echo "A SOLR_HOST environment variable is required"
exit 1
fi
if [[ ! -z "$SOLR_PORT" ]]; then
SOLR_PORT=8983
fi
if [[ ! -z "$SOLR_PROTOCOL" ]]; then
SOLR_PROTOCOL=http
fi
if [[ ! -z "$SOLR_BASEPATH" ]]; then
SOLR_BASEPATH=/solr
fi
if [[ ! -z "$SOLR_BASEURL" ]]; then
SOLR_BASEURL=${SOLR_PROTOCOL}://${SOLR_HOST}:${SOLR_PORT}/$SOLR_BASEPATH
fi
if [[ ! -z "$SOLR_CORE" ]]; then
SOLR_CORE=alfresco
fi
if [[ ! -z "$SOLR_LOCALPATH" ]]; then
SOLR_LOCALPATH=/tmp
fi
if [[ ! -z "$SOLR_TEMPLATE" ]]; then
SOLR_TEMPLATE=rerank
fi

10
solr-backup.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
. ./setenv.sh
ARG_SOLR_SHARD_ID=$1
if [[ ! -z "$ARG_SOLR_SHARD_ID" ]]; then
SOLR_CORE=${SOLR_CORE}-${ARG_SOLR_SHARD_ID}
fi
curl -SsL ${SOLR_BASEURL}/${SOLR_CORE}/replication?command=backup\&location=${SOLR_LOCALPATH}\&numberToKeep=1

25
solr-create.sh Normal file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
. ./setenv.sh
ARG_SOLR_SHARD_IDS=$1
ARG_SOLR_SHARDS=$2
ARG_SOLR_NODE_ID=$3
ARG_SOLR_NODES=$4
if [[ ! -z "$ARG_SOLR_SHARD_IDS" ]]; then
if [[ ! -z "$ARG_SOLR_SHARDS" ]]; then
echo "The expected number of shards is required"
exit 1
fi
if [[ ! -z "$ARG_SOLR_NODE_ID" ]]; then
ARG_SOLR_NODE_ID=1
fi
if [[ ! -z "$ARG_SOLR_NODES" ]]; then
ARG_SOLR_NODES=1
fi
curl -SsL ${SOLR_BASEURL}/admin/cores?action=newCore\\&core=${SOLR_CORE}\\&storeRef=workspace://SpacesStore\\&numShards=${ARG_SOLR_SHARDS}\\&nodeInstance=${ARG_SOLR_NODE_ID}\\&numNodes=${ARG_SOLR_NODES}\\&template=${SOLR_TEMPLATE}\\&shardIds=${ARG_SOLR_SHARD_IDS}
else
curl -SsL ${SOLR_BASEURL}/admin/cores?action=newCore\\&core=${SOLR_CORE}\\&storeRef=workspace://SpacesStore\\&template=${SOLR_TEMPLATE}
fi

32
solr-docker-copy.sh Normal file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
. ./setenv.sh
if [[ ! -z "$SOLR_LOCALPATH" ]]; then
SOLR_LOCALPATH=/tmp
fi
ARG_DOCKER_SOURCE=$1
ARG_DOCKER_TARGET=$2
ARG_BACKUP_TIMESTAMP=$3
if [[ ! -z "$ARG_BACKUP_TIMESTAMP" ]]; then
echo "A timestamp of the backup to copy is required"
exit 1;
fi
if [[ ! -z "$ARG_DOCKER_SOURCE" ]]; then
echo "A source Docker container name or ID is required"
exit 1
fi
if [[ ! -z "$ARG_DOCKER_TARGET" ]]; then
echo "A target Docker container name or ID is required"
exit 1
fi
# copy from one node to the other
docker container cp ${ARG_DOCKER_SOURCE}:${SOLR_LOCALPATH}/snapshot.${ARG_BACKUP_TIMESTAMP} /tmp
docker container cp /tmp/snapshot.${ARG_BACKUP_TIMESTAMP} ${ARG_DOCKER_TARGET}:${SOLR_LOCALPATH}
docker container exec --privileged -u root ${ARG_DOCKER_TARGET} chmod -R go+r ${SOLR_LOCALPATH}/snapshot.${ARG_BACKUP_TIMESTAMP}
rm -rf /tmp/snapshot.${ARG_BACKUP_TIMESTAMP}

12
solr-migrate-shard.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
# backup shardS on nodeA
# copy backup of shardS from nodeA to nodeB
# if non existent, create shardS on nodeB
# pause indexing of shardS on nodeB
# restore shardS on nodeB
# resume indexing of shardS on nodeB
# optionally remove shardS on nodeA; probably best done well after the fact

10
solr-pause.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
. ./setenv.sh
ARG_SOLR_SHARD_ID=$1
if [[ ! -z "$ARG_SOLR_SHARD_ID" ]]; then
SOLR_CORE=${SOLR_CORE}-${ARG_SOLR_SHARD_ID}
fi
curl -SsL ${SOLR_BASEURL}/admin/cores?action=disable-indexing\&core=${SOLR_CORE}

10
solr-remove.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
. ./setenv.sh
ARG_SOLR_SHARD_ID=$1
if [[ ! -z "$ARG_SOLR_SHARD_ID" ]]; then
SOLR_CORE=${SOLR_CORE}-${ARG_SOLR_SHARD_ID}
fi
curl -SsL ${SOLR_BASEURL}/admin/cores?action=UNLOAD\&core=${SOLR_CORE}\&deleteIndex=true\&deleteDataDir=true\&deleteInstanceDir=true

21
solr-restore.sh Normal file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
. ./setenv.sh
if [[ ! -z "$SOLR_LOCALPATH" ]]; then
SOLR_LOCALPATH=/tmp
fi
ARG_BACKUP_TIMESTAMP=$1
ARG_SOLR_SHARD_ID=$2
if [[ ! -z "$ARG_BACKUP_TIMESTAMP" ]]; then
echo "A timestamp of the backup to restore is required"
exit 1;
fi
if [[ ! -z "$ARG_SOLR_SHARD_ID" ]]; then
SOLR_CORE=${SOLR_CORE}-${ARG_SOLR_SHARD_ID}
fi
curl -SsL ${SOLR_BASEURL}/${SOLR_CORE}/replication?command=restore\&location=${SOLR_LOCALPATH}\&name=${ARG_BACKUP_TIMESTAMP}

10
solr-resume.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
. ./setenv.sh
ARG_SOLR_SHARD_ID=$1
if [[ ! -z "$ARG_SOLR_SHARD_ID" ]]; then
SOLR_CORE=${SOLR_CORE}-${ARG_SOLR_SHARD_ID}
fi
curl -SsL ${SOLR_BASEURL}/admin/cores?action=enable-indexing\&core=${SOLR_CORE}

31
solr-ssh-copy.sh Normal file
View File

@@ -0,0 +1,31 @@
#!/bin/bash
. ./setenv.sh
if [[ ! -z "$SOLR_LOCALPATH" ]]; then
SOLR_LOCALPATH=/tmp
fi
ARG_SSH_SOURCE=$1
ARG_SSH_TARGET=$2
ARG_BACKUP_TIMESTAMP=$3
if [[ ! -z "$ARG_BACKUP_TIMESTAMP" ]]; then
echo "A timestamp of the backup to copy is required"
exit 1;
fi
if [[ ! -z "$ARG_SSH_SOURCE" ]]; then
echo "A source SSH host is required"
exit 1
fi
if [[ ! -z "$ARG_SSH_TARGET" ]]; then
echo "A target SSH host is required"
exit 1
fi
# copy from one node to the other
scp -r ${ARG_SSH_SOURCE}:${SOLR_LOCALPATH}/snapshot.${ARG_BACKUP_TIMESTAMP} /tmp
scp -r /tmp/snapshot.${ARG_BACKUP_TIMESTAMP} ${ARG_SSH_TARGET}:${SOLR_LOCALPATH}
rm -rf /tmp/snapshot.${ARG_BACKUP_TIMESTAMP}