start_backupnode.in 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/bin/bash
  2. ################################################################################
  3. # HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
  4. #
  5. # Licensed under the Apache License, Version 2.0 (the "License");
  6. # you may not use this file except in compliance with the License.
  7. # You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing, software
  12. # distributed under the License is distributed on an "AS IS" BASIS,
  13. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. # See the License for the specific language governing permissions and
  15. # limitations under the License.
  16. ################################################################################
  17. ###<REPLACE>###
  18. source ${INSTALL_DIR}/etc/init.d/hpcc_common
  19. which_pidof
  20. set_environmentvars
  21. if [ $# -lt 1 ]; then
  22. echo usage: $0 thorinstance
  23. exit 1
  24. fi
  25. PATH_PRE=`type -path hpcc_setenv`
  26. if [ -z "$PATH_PRE" ]; then
  27. # assume default conf location
  28. PATH_PRE=`cat ${CONFIG_DIR}/environment.conf | sed -n "/\[DEFAULT\]/,/\[/p" | grep "^path=" | sed -e 's/^path=//'`/sbin/hpcc_setenv
  29. fi
  30. source ${PATH_PRE} ""
  31. is_user ${user}
  32. DEPLOY_DIR=${INSTALL_DIR}/bin
  33. ENVPATH=${CONFIG_DIR}/${ENV_XML_FILE}
  34. RUN_DIR=`cat ${HPCC_CONFIG} | sed -n "/\[DEFAULT\]/,/\[/p" | grep "^runtime=" | sed -e 's/^runtime=//'`
  35. INSTANCE_DIR=$RUN_DIR/$1
  36. LOGPATH=`updtdalienv $ENVPATH -d log backupnode backupnode`
  37. export logpthtail="`date +%Y_%m_%d_%H_%M_%S`"
  38. export logfile="$LOGPATH/backupnode_${logpthtail}.log"
  39. mkdir -p `dirname $logfile`
  40. pid=`${PIDOF} backupnode`
  41. if [ -n "$pid" ]; then
  42. log "stopping previous backupnode processes $pid"
  43. killall backupnode
  44. fi
  45. log "------------------------------"
  46. log "starting backupnode ..."
  47. if [ ! -e $INSTANCE_DIR ] ; then
  48. # perhaps they gave a full path?
  49. if [ ! -e $1 ] ; then
  50. echo "Usage: $0 thor_cluster_name"
  51. exit 1
  52. fi
  53. INSTANCE_DIR=$1
  54. fi
  55. cd $INSTANCE_DIR
  56. PID_NAME="$PID/`basename $INSTANCE_DIR`.pid"
  57. BACKUPNODE_DATA=`updtdalienv $ENVPATH -d data backupnode backupnode`
  58. if [ -z "$BACKUPNODE_DATA" ]; then
  59. echo "cannot determine backupnode directory"
  60. exit 1
  61. fi
  62. . $INSTANCE_DIR/setvars
  63. if [ ! -z ${THORPRIMARY} ]; then
  64. groupName=${THORPRIMARY}
  65. else
  66. groupName=${THORNAME}
  67. fi
  68. daliadmin server=$DALISERVER dfsgroup ${groupName} $INSTANCE_DIR/backupnode.slaves
  69. errcode=$?
  70. if [ 0 != ${errcode} ]; then
  71. echo "failed to lookup dali group for $groupName"
  72. exit 1
  73. fi
  74. BACKUPNODE_DATA=$BACKUPNODE_DATA/last_backup
  75. if [ "$localthor" == "true" ]; then
  76. BACKUPNODE_REMOTEDATA=$BACKUPNODE_DATA
  77. else
  78. BACKUPNODE_REMOTEDATA=//$THORMASTER$BACKUPNODE_DATA
  79. fi
  80. mkdir -p $BACKUPNODE_DATA
  81. rm -f $BACKUPNODE_DATA/*.ERR
  82. rm -f $BACKUPNODE_DATA/*.DAT
  83. log "Using backupnode directory $BACKUPNODE_DATA"
  84. log "Reading slaves file $INSTANCE_DIR/backupnode.slaves"
  85. log "Scanning files from dali ..."
  86. NODEGROUP=$THORPRIMARY
  87. if [ -z "$THORPRIMARY" ]; then
  88. NODEGROUP=$THORNAME
  89. fi
  90. $DEPLOY_DIR/backupnode -O $DALISERVER $NODEGROUP $BACKUPNODE_DATA >> $logfile 2>&1
  91. if [ $? -ne 0 ]; then
  92. echo Backupnode failed - see $logfile
  93. exit 1
  94. fi
  95. # maximum number of threads frunssh will be permitted to use (capped by # slaves)
  96. MAXTHREADS=1000
  97. frunssh $INSTANCE_DIR/backupnode.slaves "killall backupnode" -i:$SSHidentityfile -u:$SSHusername -pe:$SSHpassword -t:$SSHtimeout -a:$SSHretries -n:$MAXTHREADS -b >> $logfile 2>&1
  98. log "frunssh $INSTANCE_DIR/backupnode.slaves \"/bin/sh -c 'mkdir -p $LOGPATH; mkdir -p $INSTANCE_DIR; $DEPLOY_DIR/backupnode -T -X $BACKUPNODE_REMOTEDATA %n %c %a %x $2 > $LOGPATH/backup_node%n.log 2>&1'\" -i:$SSHidentityfile -u:$SSHusername -pe:$SSHpassword -t:$SSHtimeout -a:$SSHretries -n:$MAXTHREADS -b >> $logfile 2>&1"
  99. frunssh $INSTANCE_DIR/backupnode.slaves "/bin/sh -c 'mkdir -p $LOGPATH; mkdir -p $INSTANCE_DIR; $DEPLOY_DIR/backupnode -T -X $BACKUPNODE_REMOTEDATA %n %c %a %x $2 > $LOGPATH/backup_node%n.log 2>&1'" -i:$SSHidentityfile -u:$SSHusername -pe:$SSHpassword -t:$SSHtimeout -a:$SSHretries -n:$MAXTHREADS -b >> $logfile 2>&1
  100. log "------------------------------"
  101. log "Waiting for backup to complete"
  102. nohup backupnode -W $INSTANCE_DIR/backupnode.slaves $BACKUPNODE_DATA >> $logfile 2>&1 &
  103. pid=`${PIDOF} backupnode`
  104. trap "echo start_backupnode exiting, backupnode process $pid still continuing; exit 0" 2
  105. sleep 5
  106. if [ -n "$pid" ]; then
  107. tail --pid $pid -f $logfile 2>/dev/null
  108. fi