Files
replication-helper/start-replication.sh

67 lines
1.7 KiB
Bash
Raw Normal View History

2020-04-29 01:29:07 +03:00
#!/bin/bash
export DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
2020-10-17 00:19:28 +03:00
CONFIG_FILE=$DIR/config.sh
2020-04-29 01:29:07 +03:00
[[ ! -r "${CONFIG_FILE}" ]] && { echo "Could not read ${CONFIG_FILE}!"; exit 1; }
set -a
. "${CONFIG_FILE}"
set +a
echo "Stop local slave" > $log_file
mysql --defaults-extra-file=./.my.cnf -e "STOP SLAVE;"
#Started line on execute remote sql on remote server
echo "Start execution all commands on remote server" >> $log_file
REMOTE_SQL=
2020-04-29 01:29:07 +03:00
for i in ${databases[@]}
do
REMOTE_SQL=$REMOTE_SQL' USE '$i'; FLUSH TABLES WITH READ LOCK;'
done
REMOTE_SQL=$REMOTE_SQL' system ./_activate-slave.sh;'
2020-04-29 01:29:07 +03:00
REMOTE_SQL=$REMOTE_SQL' system ./_dump.sh;'
2020-04-29 01:29:07 +03:00
for i in ${databases[@]}
do
REMOTE_SQL=$REMOTE_SQL' USE '$i'; UNLOCK TABLES;'
done
mysql --defaults-extra-file=./.remote.my.cnf -e "$REMOTE_SQL"
echo "Start local slave" >> $log_file
2020-04-29 01:29:07 +03:00
mysql --defaults-extra-file=./.my.cnf -e "START SLAVE;"
if [[ "$1" = "master-to-master" ]]; then
echo "Started activation of master-to-master replication" >> $log_file
echo "Stop remote slave" >> $log_file
mysql --defaults-extra-file=./.remote.my.cnf -e "STOP SLAVE;"
echo "Execute command on local server with push local binlog position to remote server" >> $log_file
LOCAL_SQL=
for i in ${databases[@]}
do
LOCAL_SQL=LOCAL_SQL' USE '$i'; FLUSH TABLES WITH READ LOCK;'
done
LOCAL_SQL=LOCAL_SQL' system ./_activate-master-to-master.sh;'
for i in ${databases[@]}
do
LOCAL_SQL=LOCAL_SQL' USE '$i'; UNLOCK TABLES;'
done
mysql --defaults-extra-file=./.my.cnf -e "$REMOTE_SQL"
echo "Start remote slave" >> $log_file
mysql --defaults-extra-file=./.remote.my.cnf -e "START SLAVE;"
fi