Files
MaxScale/maxscale-system-test/manage_mrm.sh
Markus Mäkelä de800766ef Build the replicaton-manager test
The test wasn't built as it is not a part of the test suite. The
executable should be built but it should not be added to the test suite.

Changed the management script to only add the configuration and added a
call to it at the start of the test.
2017-10-25 14:53:40 +03:00

180 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
function do_ssh() {
ssh -i $maxscale_sshkey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $maxscale_access_user@$maxscale_IP
}
function do_scp() {
scp -i $maxscale_sshkey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet $1 $maxscale_access_user@$maxscale_IP:$2
}
function create_config() {
if [ "$1" == "3" ]
then
nodelist=$node_000_network:3306,$node_001_network:3306,$node_002_network:3306
elif [ "$1" == "2" ]
then
nodelist=$node_000_network:3306,$node_001_network:3306
else
nodelist=$node_000_network:3306,$node_001_network:3306,$node_002_network:3306,$node_003_network:3306
fi
if [ -n "$new_replication_manager" ]
then
default_section="[Default]"
fi
cat <<EOF > config.toml
# config.toml
# Example replication-manager configuration file
$default_section
hosts = "$nodelist"
user = "skysql:skysql"
rpluser = "skysql:skysql"
title = "Cluster01"
connect-timeout = 1
prefmaster = "$node_000_network:3306"
interactive = false
log-level=1
# LOG
# ---
logfile = "/var/log/replication-manager.log"
verbose = true
# TOPOLOGY
# --------
# Automatically rejoin a failed server to the current master
# Slaves will re enter with read-only
readonly = true
failover-event-scheduler = false
failover-event-status = false
# FAILOVER
# --------
# Timeout in seconds between consecutive monitoring
# check type can be tcp or agent
monitoring-ticker = 1
check-type = "tcp"
check-replication-filters = true
check-binlog-filters = true
check-replication-state = true
# Failover after N failures detection
# Reset number of failure if server auto recover after N seconds
failcount = 1
failcount-reset-time = 300
# Cancel failover if already N failover
# Cancel failover if last failover was N seconds before
# Cancel failover in semi-sync when one slave is not in sync
# Cancel failover when replication delay is more than N seconds
failover-limit = 100
failover-time-limit = 1
failover-at-sync = false
switchover-at-sync = false
maxdelay = 30
# SWITCHOVER
# ----------
# In switchover Wait N milliseconds before killing long running transactions
# Cancel switchover if transaction running more than N seconds
# Cancel switchover if write query running more than N seconds
# Cancel switchover if one of the slaves is not synced based on GTID equality
wait-kill = 5000
wait-trx = 10
wait-write-query = 10
gtidcheck = true
EOF
}
function install_mrm() {
# new_replication_manager means that we're using a custom build and it's already installed on the system
if [ -z "$new_replication_manager" ]
then
do_ssh <<EOF
command -v wget > /dev/null || sudo yum -y install wget
wget -q https://github.com/tanji/replication-manager/releases/download/1.0.2/replication-manager-1.0.2_1_g8faf64d-8faf64d.x86_64.rpm
sudo yum -y install ./replication-manager-1.0.2_1_g8faf64d-8faf64d.x86_64.rpm
sudo systemctl daemon-reload
rm ./replication-manager-1.0.2_1_g8faf64d-8faf64d.x86_64.rpm
EOF
fi
create_config $1
do_scp './config.toml' '~/config.toml'
do_ssh <<EOF
sudo mkdir -p /etc/replication-manager/
sudo cp ./config.toml /etc/replication-manager/config.toml
EOF
}
function build_mrm() {
do_ssh <<EOF
command -v wget > /dev/null || sudo yum -y install wget
test -f go1.8.linux-amd64.tar.gz || wget -q https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
sudo su -
cd /home/vagrant/
sudo tar -axf go1.8.linux-amd64.tar.gz -C /usr
sudo echo 'export GOROOT=/usr/go/' > /etc/profile.d/go.sh
sudo echo 'export GOPATH=/usr/' >> /etc/profile.d/go.sh
sudo echo 'export PATH=/$PATH:/usr/go/bin/' >> /etc/profile.d/go.sh
source /etc/profile
go get github.com/tanji/replication-manager
go install github.com/tanji/replication-manager
cp /usr/src/github.com/tanji/replication-manager/service/replication-manager.service /etc/systemd/system/
exit
EOF
}
function remove_mrm() {
do_ssh <<EOF
sudo systemctl stop replication-manager
EOF
if [ -z "$new_replication_manager" ]
then
do_ssh <<EOF
sudo yum -y remove replication-manager
sudo rm /etc/replication-manager/config.toml
sudo rm /var/log/replication-manager.log
EOF
fi
}
case $1 in
install)
echo "`date` Installing replication-manager"
install_mrm $2
;;
configure)
echo "`date` Creating replication-manager configuration"
create_config $2
;;
build)
echo "`date` Building replication-manager from source"
build_mrm
;;
remove)
echo "`date` Removing replication-manager"
remove_mrm
;;
*)
echo "Usage: `basename $0` { install | remove }"
;;
esac