daily_backup.sh #11

  • //
  • guest/
  • perforce_software/
  • sdp/
  • main/
  • Server/
  • Unix/
  • p4/
  • common/
  • bin/
  • daily_backup.sh
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/bin/bash
#------------------------------------------------------------------------------
# Copyright (c) Perforce Software, Inc., 2007-2015. All rights reserved
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1  Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2.  Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE
# SOFTWARE, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
#------------------------------------------------------------------------------

# This script must be called using the p4master_run script in order to properly set
# the environment variables for the script to reference. The p4master_run scripts
# source /p4/common/bin/p4_vars to set the environment variables that this script
# depends on.
#
# This script expects the most recent valid checkpoint to be available in
# $CHECKPOINTS in order for this script to work.
#
# This script is using the following external variables:
#
# SDP_INSTANCE - The instance of Perforce that is being backed up. Always an
# integer value.
#
# P4HOME - Server's home directory.
# P4BIN - Command line client name for the instance being backed up.
# P4DBIN - Server executable name for the instance being backed up.
# P4ROOT - Server's root directory. p4/root, p4_N/root
# P4PORT - TCP/IP port for the server instance being backed up.
# P4JOURNAL - Location of the Journal for the server instance being backed up.
#
#
export SDP_INSTANCE=${SDP_INSTANCE:-Undefined} 
export SDP_INSTANCE=${1:-$SDP_INSTANCE} 
if [[ $SDP_INSTANCE == Undefined ]]; then 
   echo "Instance parameter not supplied." 
   echo "You must supply the Perforce instance as a parameter to this script." 
   exit 1 
fi 
. /p4/common/bin/p4_vars $SDP_INSTANCE
. /p4/common/bin/backup_functions.sh

######### Start of Script ##########

check_vars
set_vars
check_uid
check_dirs
ckp_running
/p4/common/bin/p4login
get_journalnum
rotate_last_run_logs
log "Start $P4SERVER Checkpoint"
get_offline_journal_num
replay_journals_to_offline_db
truncate_journal
replay_journal_to_offline_db
ROOTDIR=$OFFLINE_DB
dump_checkpoint
recreate_offline_db_files
remove_old_checkpoints_and_journals
if [[ -d ${P4HOME}/checkpoints.rep ]]; then
	export CHECKPOINTS=${P4HOME}/checkpoints.rep
	remove_old_checkpoints_and_journals
fi
check_disk_space
remove_old_logs
log "End $P4SERVER Checkpoint"
mail_log_file "$HOSTNAME $P4SERVER Daily maintenance log."
set_counter
ckp_complete

# Change User Description Committed
#17 19414 C. Thomas Tyler Released SDP/MultiArch/2016.1/19410 (2016/05/17).
#16 18619 Russell C. Jackson (Rusty) Updating main with current changes.
#15 18530 Russell C. Jackson (Rusty) Update main from dev.
#14 15856 C. Thomas Tyler Replaced the big license comment block with a shortened
form referencing the LICENSE file included with the SDP
package, and also by the URL for the license file in
The Workshop.
#13 15777 C. Thomas Tyler No functional changes.

Style Policing only on bash scripts only.

Normalized indentation and line breaks, removed offending tabs, and general whitespace
usage.
#12 15691 Russell C. Jackson (Rusty) Changed to always create a checkpoints.rep directory on the logs volume so that moving
the pre-rotated journal back to be the live journal will be a move operation when doing
a failover.

Added a SHAREDDATA setting to p4_vars so that I could check for that in sync_replica and
weekly_sync replica. That allowed me to delete weekly_sync_shared_replica and sync_shared_replica.

Added cleanup of checkpoints.rep to sync_replica and weekly_sync_replica since that is
where the replica journals should always be located now.

Removed cleanup of checkpoints.rep from daily and weekly backup scripts since those
should not be handling replica file clean up.

The SDP is now designed to be used with the journalcopy and p4 pull -L commands rather
than the old style replication using just pull. Failover requires that you move the
pre-rotated journal that is in the checkpoints.rep directory back to
/p4/${SDP_INSTANCE}/logs/journal now along with updating the server.id file.
#11 15609 C. Thomas Tyler Pushing SDP 2015.1.15607 (2015/09/02).
#10 15373 Russell C. Jackson (Rusty) Corrected order of ckp_running check.
#9 15190 Russell C. Jackson (Rusty) Added a semaphore file to prevent the checkpoint process from running if another one
 hasn't finished.

 Added a check to make sure the journal number is numeric.
#8 13928 dsp Set lastSDPCounter after a successfull SDP checkpoint

       p4 admin checkpoint sets lastCheckpointAction, which is useful for monitoring, in particular
       when checkpoint age should be observed from the outside through p4. However the SDP is using
       p4d directly to create checkpoints and will not set checkpoints. In order to distinguish human
       actions from the SDP cronjobs, set a new counter lastSDPCounter in a similar format.
#7 13908 C. Thomas Tyler Pushing SDP 2015.1.13906.
#6 12171 Russell C. Jackson (Rusty) Merge in changes to remove the need for p4master_run.
#5 11857 Russell C. Jackson (Rusty) Added a setting to control if checkpoints.rep gets created or not, and then
 a check to see if that directory exists. If it does, we reset CHECKPOINTS and
 run it a second time in the daily and weekly in order to keep the checkpoints.rep
 directory cleaned up when using a shared depotdata volume.
#4 11707 Robert Cowham Refactored sending of mail to a common function.
Make the setting of "MAILFROM" work for Ubuntu (GNU Mailutils) as well as CentOS
#3 11570 Russell C. Jackson (Rusty) Brought in changes from Mark Foundry to add -S $MAILFROM to mail commands.

 Changed sync_replica.sh and weekly_sync_replica.sh to use $LOGFILE for consistency.

 Added mail command to both files as well.
#2 11524 Russell C. Jackson (Rusty) Released updated version of the SDP from Dev.
#1 10148 C. Thomas Tyler Promoted the Perforce Server Deployment Package to The Workshop.