From e330e9fe3f5992be35a60985deb433d7c631f269 Mon Sep 17 00:00:00 2001 From: mattf Date: Sun, 12 Jun 2016 12:15:22 +0000 Subject: [PATCH] Added options to trim some archived log tables in the ADMIN_archive_log_tables.pl script git-svn-id: svn://192.168.202.10@2549 3d104415-ff17-0410-8863-d5cf3c621b8a --- agc_2-X/trunk/bin/ADMIN_archive_log_tables.pl | 298 +++++++++++++++++- 1 file changed, 295 insertions(+), 3 deletions(-) diff --git a/agc_2-X/trunk/bin/ADMIN_archive_log_tables.pl b/agc_2-X/trunk/bin/ADMIN_archive_log_tables.pl index eb016712..7c0c29da 100644 --- a/agc_2-X/trunk/bin/ADMIN_archive_log_tables.pl +++ b/agc_2-X/trunk/bin/ADMIN_archive_log_tables.pl @@ -20,7 +20,7 @@ # Based on perl scripts in ViciDial from Matt Florell and post: # http://www.vicidial.org/VICIDIALforum/viewtopic.php?p=22506&sid=ca5347cffa6f6382f56ce3db9fb3d068#22506 # -# Copyright (C) 2015 I. Taushanov, Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2016 I. Taushanov, Matt Florell LICENSE: AGPLv2 # # CHANGES # 90615-1701 - First version @@ -42,10 +42,12 @@ # 150712-2208 - Added vicidial_dtmf_log # 151109-1646 - Added --carrier-daily flag, only active if --daily flag is also used # 151124-2252 - Added --vlog-daily flag, only active if --daily flag is also used, Also added system_settings date +# 160612-0703 - Added --only-trim-archive-... options # $CALC_TEST=0; $T=0; $TEST=0; +$only_trim_archive=0; ### begin parsing run-time options ### if (length($ARGV[0])>1) @@ -67,9 +69,16 @@ if (length($ARGV[0])>1) print " [--months=XX] = number of months to archive past, default is 24(2 years) If 'days' used then 'months' ignored\n"; print " [--closer-log] = archive vicidial_closer_log records\n"; print " [--queue-log] = archive QM queue_log records\n"; + print " [--only-trim-archive-level-one] = will not perform normal archive process, instead this will only delete records\n"; + print " that are older than XX months from least important log archive tables:\n"; + print " call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive\n"; + print " [--only-trim-archive-level-two] = same as --only-trim-archive-level-one, except includes tables:\n"; + print " vicidial_carrier_log_archive, vicidial_api_log_archive\n"; + print " [--only-trim-archive-level-three] = same as --only-trim-archive-level-two, except includes tables:\n"; + print " vicidial_log_archive, vicidial_agent_log_archive, vicidial_closer_log_archive"; print " [--quiet] = quiet\n"; print " [--calc-test] = date calculation test only\n"; - print " [-t] = test\n\n"; + print " [--test] = test\n\n"; exit; } else @@ -78,7 +87,7 @@ if (length($ARGV[0])>1) { $q=1; $Q=1; } - if ($args =~ /-t/i) + if ($args =~ /--test/i) { $T=1; $TEST=1; print "\n-----TESTING-----\n\n"; @@ -140,6 +149,24 @@ if (length($ARGV[0])>1) if ($Q < 1) {print "\n----- QUEUE LOG ARCHIVE -----\n\n";} } + if ($args =~ /--only-trim-archive-level-one/i) + { + $only_trim_archive=1; + if ($Q < 1) + {print "\n----- ONLY TRIM LOG ARCHIVES LEVEL 1 -----\n\n";} + } + if ($args =~ /--only-trim-archive-level-two/i) + { + $only_trim_archive=2; + if ($Q < 1) + {print "\n----- ONLY TRIM LOG ARCHIVES LEVEL 2 -----\n\n";} + } + if ($args =~ /--only-trim-archive-level-three/i) + { + $only_trim_archive=3; + if ($Q < 1) + {print "\n----- ONLY TRIM LOG ARCHIVES LEVEL 3 -----\n\n";} + } } } else @@ -246,6 +273,270 @@ $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA if (!$T) { + if ($only_trim_archive > 0) + { + # the "only-trim-archive" process will not perform the normal archive process, + # instead this will only delete records that are older than XX months from + # least important log archive tables. There are three levels: + # LEVEL 1: + # call_log_archive, vicidial_log_extended_archive, vicidial_dial_log_archive + # LEVEL 2: + # vicidial_carrier_log_archive, vicidial_api_log_archive + # LEVEL 3: + # vicidial_log_archive, vicidial_agent_log_archive, vicidial_closer_log_archive + # NOTE: script will exit once trim process has completed + if (!$Q) {print "\nONLY-TRIM-ARCHIVE PROCESS LAUNCHING, GOING TO LEVEL: $only_trim_archive\n";} + + if (!$Q) {print "Starting 'only-trim-archive' process, level: ONE\n";} + + ##### BEGIN call_log_archive trim processing ##### + $stmtA = "SELECT count(*) from call_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $call_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming call_log_archive table... ($call_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM call_log_archive WHERE start_time < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from call_log_archive table \n";} + + $stmtA = "optimize table call_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END call_log_archive trim processing ##### + + ##### BEGIN vicidial_log_extended_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_log_extended_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_log_extended_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_log_extended_archive table... ($vicidial_log_extended_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_log_extended_archive WHERE call_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_log_extended_archive table \n";} + + $stmtA = "optimize table vicidial_log_extended_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_log_extended_archive trim processing ##### + + ##### BEGIN vicidial_dial_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_dial_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_dial_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_dial_log_archive table... ($vicidial_dial_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_dial_log_archive WHERE call_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_dial_log_archive table \n";} + + $stmtA = "optimize table vicidial_dial_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_dial_log_archive trim processing ##### + + + if ($only_trim_archive > 1) + { + if (!$Q) {print "Starting 'only-trim-archive' process, level: TWO\n";} + + ##### BEGIN vicidial_carrier_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_carrier_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_carrier_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_carrier_log_archive table... ($vicidial_carrier_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_carrier_log_archive WHERE call_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_carrier_log_archive table \n";} + + $stmtA = "optimize table vicidial_carrier_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_carrier_log_archive trim processing ##### + + ##### BEGIN vicidial_api_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_api_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_api_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_api_log_archive table... ($vicidial_api_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_api_log_archive WHERE api_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_api_log_archive table \n";} + + $stmtA = "optimize table vicidial_api_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_api_log_archive trim processing ##### + } + + if ($only_trim_archive > 2) + { + if (!$Q) {print "Starting 'only-trim-archive' process, level: THREE\n";} + + ##### BEGIN vicidial_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_log_archive table... ($vicidial_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_log_archive WHERE call_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_log_archive table \n";} + + $stmtA = "optimize table vicidial_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_log_archive trim processing ##### + + ##### BEGIN vicidial_agent_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_agent_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_agent_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_agent_log_archive table... ($vicidial_agent_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_agent_log_archive WHERE event_time < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_agent_log_archive table \n";} + + $stmtA = "optimize table vicidial_agent_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_agent_log_archive trim processing ##### + + ##### BEGIN vicidial_closer_log_archive trim processing ##### + $stmtA = "SELECT count(*) from vicidial_closer_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $vicidial_closer_log_archive_count = $aryA[0]; + } + $sthA->finish(); + + if (!$Q) {print "Trimming vicidial_closer_log_archive table... ($vicidial_closer_log_archive_count)\n";} + + $rv = $sthA->err(); + if (!$rv) + { + $stmtA = "DELETE FROM vicidial_closer_log_archive WHERE call_date < '$del_time';"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows = $sthA->rows; + if (!$Q) {print "$sthArows rows deleted from vicidial_closer_log_archive table \n";} + + $stmtA = "optimize table vicidial_closer_log_archive;"; + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + } + ##### END vicidial_closer_log_archive trim processing ##### + } + + if (!$Q) {print "Trim process complete, exiting...\n";} + + exit; + } + if ($daily > 0) { # The --daily option was added because these tables(call_log, vicidial_dial_log, @@ -254,6 +545,7 @@ if (!$T) # this can lead to system delay issues even if the 1-month archive process is # run every weekend. This --daily option will keep only the last # 24-hours and can improve DB performance greatly + if (!$Q) {print "\nStarting daily arcchive process...\n";} ##### BEGIN call_log DAILY processing ##### $stmtA = "SELECT count(*) from call_log;";