Skip to content

Instantly share code, notes, and snippets.

@onigra
Created May 15, 2013 12:23
Show Gist options
  • Save onigra/5583622 to your computer and use it in GitHub Desktop.
Save onigra/5583622 to your computer and use it in GitHub Desktop.
dry run
#!/bin/bash
while getopts "i:h:n" opts
do
case $opts in
i) _MASTER_HOST=$OPTARG ;;
h) _MASTER_HOSTNAME=$OPTARG ;;
n) _DRYRUN="TRUE" ;;
esac
done
# slave設定の取得。取得できなければ中断
_MASTER_USER=""
_MASTER_PASSWORD=""
_MASTER_LOG_FILE=$(mysql -h ${_MASTER_HOST} -u ${_USER} -p${_PASSWD} -e 'show master status\G' | grep -i File | echo `awk -F: '{print $2}';`)
_MASTER_LOG_POS=$(mysql -h ${_MASTER_HOST} -u ${_USER} -p${_PASSWD} -e 'show master status\G' | grep -i Pos | echo `awk -F: '{print $2}';`)
if [ "$_MASTER_LOG_FILE" = "" ]; then
echo "Coudn't get master log file"
exit 1
fi
if [ "$_MASTER_LOG_POS" = "" ]; then
echo "Coudn't get master log position"
exit 1
fi
# SQL作成
sql=`cat << _EOT_
stop slave;
CHANGE MASTER TO
MASTER_HOST='${_MASTER_HOST}',
MASTER_USER='${_MASTER_USER}',
MASTER_PASSWORD='${_MASTER_PASSWORD}',
MASTER_LOG_FILE='${_MASTER_LOG_FILE}',
MASTER_LOG_POS=${_MASTER_LOG_POS}
;
start slave;
show slave status\G
`
# 最終的に実行するfunction
execute() {
_EXEC_USER=""
_EXEC_PASSWD=""
mysql -u ${_EXEC_USER} -p -e"$1"
}
if [ "$_DRYRUN" = "TRUE" ]; then
echo "============dry run============"
echo "${sql}"
echo "============dry run============"
else
echo "============execute============"
echo "${sql}"
echo "============execute============"
execute "${sql}"
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment