blob: 507d173874d224899e6d7bf8e2560b819e682731 [file]
#!/bin/bash
set -e
REPLICA_SET_NAME=${REPLICA_SET_NAME:=rs0}
USERNAME=${USERNAME:=dev}
PASSWORD=${PASSWORD:=dev}
function waitForMongo {
port=$1
n=0
until [ $n -ge 20 ]
do
mongosh admin --quiet --port $port --eval "db" && break
n=$[$n+1]
sleep 2
done
}
if [ ! "$(ls -A /data/db1)" ]; then
mkdir /data/db1
mkdir /data/db2
mkdir /data/db3
fi
echo "STARTING CLUSTER"
mongod --port 27003 --dbpath /data/db3 --replSet $REPLICA_SET_NAME --bind_ip=::,0.0.0.0 &
DB3_PID=$!
mongod --port 27002 --dbpath /data/db2 --replSet $REPLICA_SET_NAME --bind_ip=::,0.0.0.0 &
DB2_PID=$!
mongod --port 27001 --dbpath /data/db1 --replSet $REPLICA_SET_NAME --bind_ip=::,0.0.0.0 &
DB1_PID=$!
waitForMongo 27001
waitForMongo 27002
waitForMongo 27003
echo "CONFIGURING REPLICA SET"
CONFIG="{ _id: '$REPLICA_SET_NAME', members: [{_id: 0, host: 'localhost:27001', priority: 2 }, { _id: 1, host: 'localhost:27002' }, { _id: 2, host: 'localhost:27003' } ]}"
mongosh admin --port 27001 --eval "db.runCommand({ replSetInitiate: $CONFIG })"
waitForMongo 27002
waitForMongo 27003
mongosh admin --port 27001 --eval "db.runCommand({ setParameter: 1, quiet: 1 })"
mongosh admin --port 27002 --eval "db.runCommand({ setParameter: 1, quiet: 1 })"
mongosh admin --port 27003 --eval "db.runCommand({ setParameter: 1, quiet: 1 })"
mongosh admin --port 27001 --eval "db.adminCommand({ setParameter: 1, maxTransactionLockRequestTimeoutMillis: 5000 })"
mongosh admin --port 27002 --eval "db.adminCommand({ setParameter: 1, maxTransactionLockRequestTimeoutMillis: 5000 })"
mongosh admin --port 27003 --eval "db.adminCommand({ setParameter: 1, maxTransactionLockRequestTimeoutMillis: 5000 })"
echo "REPLICA SET ONLINE"
trap 'echo "KILLING"; kill $DB1_PID $DB2_PID $DB3_PID; wait $DB1_PID; wait $DB2_PID; wait $DB3_PID' SIGINT SIGTERM EXIT
wait $DB1_PID
wait $DB2_PID
wait $DB3_PID