Guest User

Untitled

a guest
Aug 31st, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. # Script to archive/restore track_page and track_visit database stats for zest.
  3. # or to archive other tables.
  4.  
  5. usage()
  6. {
  7. cat <<EOF
  8. Use this script to archive/restore track_page and track_visit database stats for zest.
  9. Options:
  10. --mode | -m ) REQUIRED 0=archive ; 1=restoreArchive
  11.  
  12. --catalog | -c ) REQUIRED database name
  13.  
  14. --dbserver | -S) REQUIRED database server
  15.  
  16. --user | -u ) OPTIONAL databse user; (default=zeald)
  17.  
  18. --nmonth | -n ) OPTIONAL Remove data more than nth month; (default=2)
  19.  
  20. --table | -t ) OPTIONAL table name; (default= track_page and track_visit)
  21.  
  22. --field | -f ) OPTIONAL table field/column name; (default=time)
  23.  
  24. Examples:
  25. (default, deleting track_page and track_visit...)
  26. $ bash archive_restore_db_table_stats.sh -m 0 -c cherryardillos-demo -S managedmysql-nzw-pod-a-b
  27. (default, deleting from specific table)
  28. $ 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
  29.  
  30. EOF
  31. }
  32.  
  33. # For checking/debugging..
  34. info(){
  35. cat <<EOF
  36.  
  37. ----- INFORMATION --------
  38. MODE = $MODE
  39. CATALOG = $CATALOG
  40. DATABASE = $DATABASE
  41. USER = $USER
  42. MONTH = $MONTH
  43. SERVER = $SERVER
  44. TABLE = $TABLE
  45. FileName = $file_name
  46. BACKUP_DIR = $BACKUP_DIR
  47. remove data older than =$datem
  48. --------------------------
  49.  
  50. EOF
  51. }
  52.  
  53. while [ ! $# -eq 0 ]
  54. do
  55. case "$1" in
  56. --help | -h | '')
  57. usage
  58. #exit
  59. ;;
  60.  
  61. --mode | -m )
  62. MODE=$2;
  63. shift
  64. ;;
  65.  
  66. --catalog | -c )
  67. CATALOG=$2;
  68. shift
  69. ;;
  70.  
  71. --user | -u )
  72. USER=$2
  73. shift
  74. ;;
  75.  
  76. --password | -p )
  77. PASSWORD=$2
  78. shift
  79. ;;
  80.  
  81. --nmonth | -n )
  82. MONTH=$2
  83. shift
  84. ;;
  85.  
  86. --dbserver | -S)
  87. SERVER=$2
  88. shift
  89. ;;
  90.  
  91. --table | -t )
  92. TABLE=$2;
  93. shift
  94. ;;
  95.  
  96. --field | -f )
  97. FIELD=$2
  98. shift
  99. ;;
  100.  
  101. esac
  102. shift
  103. done
  104.  
  105. # Check if important arguments are added
  106. for arg in MODE CATALOG SERVER
  107. do
  108. eval value=\$$arg
  109. if [[ -z $value ]]
  110. then
  111. info
  112. usage
  113. fi
  114. done
  115.  
  116. # If other arguments are null, then assign data.
  117. if [[ -z $MONTH ]]; then MONTH=2; fi
  118. if [[ -z $USER ]]; then USER=zeald; fi
  119. if [[ -z $PASSWORD ]]; then PASSWORD=*******; fi
  120.  
  121. #datem=$(date +'%F %T' --date="$MONTH months ago")
  122. datem=$(date +'%F' --date="$MONTH months ago")
  123. # File name would be the last date of the data deleted
  124. file_name=$(date +'%F' --date="$MONTH months ago")
  125. # Directory where sql will be stored.
  126. BACKUP_DIR="/opt/site_database/"$CATALOG"/"
  127. DATABASE="shop_"$CATALOG
  128.  
  129. info
  130.  
  131.  
  132. if [ $MODE -eq 0 ];
  133. then
  134. info
  135. #Create directory if does not exist
  136. mkdir -p $BACKUP_DIR
  137.  
  138. echo "Now archiving data from table $TABLE older than date $datem..."
  139.  
  140. # If default...
  141. # | table | field |
  142. # -----------------------------
  143. # | track_page | date |
  144. # | track_visit | visit_start |
  145. if [[-z $TABLE ] || [ -z $FIELD ]]
  146. then
  147. echo "COMMAND:"
  148. 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""
  149. # Command to export data with regards to condition.
  150. 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"
  151.  
  152. # Delete exported data on database.
  153. mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from track_page where date > $datem"
  154. mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from track_visit where visit_start > $datem"
  155.  
  156. # If customed table and column...
  157. else
  158. if [[ -z $TABLE ]]; then TABLE=employees; fi
  159. if [[ -z $FIELD ]]; then FIELD=track_page; fi
  160.  
  161. echo "COMMAND:"
  162. 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"
  163.  
  164. # Command to export data with regards to condition.
  165. 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"
  166. # Delete exported data on database.
  167. mysql -u $USER -p $PASSWORD -h $SERVER $DATABASE -e "delete from $TABLE where $FIELD > $datem"
  168. fi #END if custom or default.
  169.  
  170. elif [ $MODE -eq 1 ] ;
  171. then
  172. info
  173.  
  174. echo "Now restoring data from backup $BACKUP_DIR$file_name.sql.gz..."
  175. # Restore/append backed up data on the database.
  176. mysql -u $USER -p $PASSWORD -h $SERVER -D $DATABASE -t < "$BACKUP_DIR$file_name.sql.gz"
  177. echo "Finished restoring $file_name.sql.gz..."
  178. else
  179. echo "Please choose appropriate mode; 0=ARCHIVE, 1=RESTORE"
  180.  
  181. usage
  182. exit
  183. fi
Add Comment
Please, Sign In to add comment