Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- # Script to archive/restore track_page and track_visit database stats for zest.
- # or to archive other tables.
- usage()
- {
- cat <<EOF
- Use this script to archive/restore track_page and track_visit database stats for zest.
- Options:
- --mode | -m ) REQUIRED 0=archive ; 1=restoreArchive
- --catalog | -c ) REQUIRED database name
- --dbserver | -S) REQUIRED database server
- --user | -u ) OPTIONAL databse user; (default=zeald)
- --nmonth | -n ) OPTIONAL Remove data more than nth month; (default=2)
- --table | -t ) OPTIONAL table name; (default= track_page and track_visit)
- --field | -f ) OPTIONAL table field/column name; (default=time)
- Examples:
- (default, deleting track_page and track_visit...)
- $ bash archive_restore_db_table_stats.sh -m 0 -c cherryardillos-demo -S managedmysql-nzw-pod-a-b
- (default, deleting from specific table)
- $ bash archive_restore_db_table_stats.sh -m 0 -c cherryardillos-demo -u zeald -n 4 -S managedmysql-nzw-pod-a-b -t track_page -f date
- EOF
- }
- # For checking/debugging..
- info(){
- cat <<EOF
- ----- INFORMATION --------
- MODE = $MODE
- CATALOG = $CATALOG
- DATABASE = $DATABASE
- USER = $USER
- MONTH = $MONTH
- SERVER = $SERVER
- TABLE = $TABLE
- FileName = $file_name
- BACKUP_DIR = $BACKUP_DIR
- remove data older than =$datem
- --------------------------
- EOF
- }
- while [ ! $# -eq 0 ]
- do
- case "$1" in
- --help | -h | '')
- usage
- #exit
- ;;
- --mode | -m )
- MODE=$2;
- shift
- ;;
- --catalog | -c )
- CATALOG=$2;
- shift
- ;;
- --user | -u )
- USER=$2
- shift
- ;;
- --password | -p )
- PASSWORD=$2
- shift
- ;;
- --nmonth | -n )
- MONTH=$2
- shift
- ;;
- --dbserver | -S)
- SERVER=$2
- shift
- ;;
- --table | -t )
- TABLE=$2;
- shift
- ;;
- --field | -f )
- FIELD=$2
- shift
- ;;
- esac
- shift
- done
- # Check if important arguments are added
- for arg in MODE CATALOG SERVER
- do
- eval value=\$$arg
- if [[ -z $value ]]
- then
- info
- usage
- fi
- done
- # If other arguments are null, then assign data.
- if [[ -z $MONTH ]]; then MONTH=2; fi
- if [[ -z $USER ]]; then USER=zeald; fi
- if [[ -z $PASSWORD ]]; then PASSWORD=*******; fi
- #datem=$(date +'%F %T' --date="$MONTH months ago")
- datem=$(date +'%F' --date="$MONTH months ago")
- # File name would be the last date of the data deleted
- file_name=$(date +'%F' --date="$MONTH months ago")
- # Directory where sql will be stored.
- BACKUP_DIR="/opt/site_database/"$CATALOG"/"
- DATABASE="shop_"$CATALOG
- info
- if [ $MODE -eq 0 ];
- then
- info
- #Create directory if does not exist
- mkdir -p $BACKUP_DIR
- echo "Now archiving data from table $TABLE older than date $datem..."
- # If default...
- # | table | field |
- # -----------------------------
- # | track_page | date |
- # | track_visit | visit_start |
- if [[-z $TABLE ] || [ -z $FIELD ]]
- then
- echo "COMMAND:"
- echo " mysqldump -u $USER -p $PASSWORD -h $SERVER --skip-add-drop-table --no-create-info $DATABASE track_page --where="date > $datem", track_visit --where="visit_start > $datem" > "$BACKUP_DIR$file_name.sql.gz""
- # Command to export data with regards to condition.
- mysqldump -u $USER -p $PASSWORD -h $SERVER --skip-add-drop-table --no-create-info $DATABASE track_page --where="date > $datem", track_visit --where="visit_start > $datem" > "$BACKUP_DIR$file_name.sql.gz"
- # Delete exported data on database.
- mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from track_page where date > $datem"
- mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from track_visit where visit_start > $datem"
- # If customed table and column...
- else
- if [[ -z $TABLE ]]; then TABLE=employees; fi
- if [[ -z $FIELD ]]; then FIELD=track_page; fi
- echo "COMMAND:"
- echo " mysqldump -u $USER -p $PASSWORD -h $SERVER --skip-add-drop-table --no-create-info $DATABASE $TABLE --where=$FIELD > $datem > $BACKUP_DIR$file_name.sql.gz"
- # Command to export data with regards to condition.
- mysqldump -u $USER -p $PASSWORD -h $SERVER --skip-add-drop-table --no-create-info $DATABASE $TABLE --where="$FIELD > $datem" > "$BACKUP_DIR$file_name.sql.gz"
- # Delete exported data on database.
- mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from $TABLE where $FIELD > $datem"
- fi #END if custom or default.
- elif [ $MODE -eq 1 ] ;
- then
- info
- echo "Now restoring data from backup $BACKUP_DIR$file_name.sql.gz..."
- # Restore/append backed up data on the database.
- mysql -u $USER -p $PASSWORD -h $SERVER -D $DATABASE -t < "$BACKUP_DIR$file_name.sql.gz"
- echo "Finished restoring $file_name.sql.gz..."
- else
- echo "Please choose appropriate mode; 0=ARCHIVE, 1=RESTORE"
- usage
- exit
- fi
Add Comment
Please, Sign In to add comment