From ee392a04022857f1668cf66330f8e532037a27bc Mon Sep 17 00:00:00 2001 From: lucvic Date: Thu, 15 Oct 2015 17:46:47 +0200 Subject: [PATCH] Added db-transfer --- cluster-manager.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+), 0 deletions(-) diff --git a/cluster-manager.sh b/cluster-manager.sh index 8e2727f..cf9e6c6 100755 --- a/cluster-manager.sh +++ b/cluster-manager.sh @@ -204,6 +204,32 @@ case "$ACTION" in done ;; + db-transfer) + ARG_TABLES=$2 + ARG_HOST_FROM=$3 + IFS=',' read -a ARG_HOST_TO <<< "$4" + + if [ -z ARG_TABLES ] || [ -z $ARG_HOST_FROM ]; then + echo "ERROR: Please specify at least the table(s) and the source host." + echo "Examples" + echo " $0 $ACTION table sourcehost" + echo " $0 $ACTION table1,table2 sourcehost destinationhost" + echo " $0 $ACTION table sourcehost destinationhost1,destinationhost2,destinationhost3" + exit 1 + fi + + TABLES=$(echo "$ARG_TABLES" | tr , " ") + ARG_BACKUP_NAME="TEMP-$(date +%Y%m%d-%H%M%S).sql" + host_exec_cmd ${ARG_HOST_FROM} "mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} --add-drop-table ${MYSQL_DB} ${TABLES} > ${ARG_BACKUP_NAME}" + host_recv_file ${ARG_HOST_FROM} ${ARG_BACKUP_NAME} LOCAL-${ARG_BACKUP_NAME} + host_exec_cmd ${ARG_HOST_FROM} "rm ${ARG_BACKUP_NAME}" + for HOST_TO in ${ARG_HOST_TO[@]}; do + host_send_file ${HOST_TO} LOCAL-${ARG_BACKUP_NAME} ${HOST_TO}-${ARG_BACKUP_NAME} + host_exec_cmd ${HOST_TO} "mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} < ${HOST_TO}-${ARG_BACKUP_NAME}; rm ${HOST_TO}-${ARG_BACKUP_NAME}" + done + rm LOCAL-${ARG_BACKUP_NAME} + ;; + script) ARG_SCRIPT_NAME=$2 if [ -z $ARG_SCRIPT_NAME ]; then @@ -237,6 +263,8 @@ case "$ACTION" in echo " cmd : Execute on hosts" echo " db-backup [filename] : Perform a database backup" echo " db-restore : Restore a database backup" + echo " db-transfer table1,table2 srchost dsthost1,dsthost2" + echo " : Copy table(s) from srchost to desthost(s)" echo " db-sql : Copy to hosts and run with mysql client" echo " script : Copy to hosts and execute it" echo " update : Update code using git pull" -- libgit2 0.21.4