Subversion Repositories computer_asset_manager_v1

Rev

Rev 50 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 rodolico 1
drop table if exists backups_server;
2
create table backups_server (
3
   backups_server_id int unsigned not null auto_increment,
4
   device_id         int unsigned not null references device (device_id),
5
   backup_space      bigint comment 'size in bytes available for backups',
6
   primary key       (backups_server_id)
7
) comment 'Just a linking table to available backup servers';
8
 
9
drop table if exists backups;
10
create table backups (
11
   backups_id        int unsigned not null auto_increment,
12
   device_id         int unsigned not null references device (device_id),
13
   backups_server_id  int unsigned not null references backup_server (backups_server_id),
14
   allocated_size    bigint default 1073741824 comment 'number of bytes client is paying for',
15
   start_time        time comment 'default start time of backup',
16
   notes             text comment 'any notes we want to keep on this',
70 rodolico 17
   bandwidth_allocated int unsigned comment 'amount of bandwidth in megabits/s',
1 rodolico 18
   responsible_party varchar(64) comment 'email address of who to notify for problems',
70 rodolico 19
   added_date        date,
20
   removed_date      date default null,
1 rodolico 21
   primary key       (backups_id)
22
) comment 'stores information on backup jobs allocated';
23
 
70 rodolico 24
 
25
 
1 rodolico 26
DROP TABLE IF EXISTS backups_run;
27
CREATE TABLE backups_run (
28
  backups_run_id     int unsigned not null auto_increment,
29
  backups_id         int unsigned not null references backups( backups_id ),
30
  report_date        datetime not null comment 'Date on the actual log file as part of its filename',
31
  start_time         datetime NOT NULL default '0000-00-00 00:00:00' comment 'when job started',
32
  version            varchar(10) comment 'Version of rsbackup creating processing this run',
33
  end_time           datetime NOT NULL default '0000-00-00 00:00:00' comment 'when job ended',
34
  files_count        bigint comment 'total number of files to be checked',
35
  files_size         bigint comment 'size of all files to be checked in bytes',
36
  transferred_count  bigint comment 'number of files transferred',
37
  transferred_size   bigint comment 'size of files transferred in bytes',
38
  files_deleted      bigint comment 'number of files which were deleted',
39
  data_sent          bigint comment 'bytes sent to server',
40
  data_received      bigint comment 'bytes received from server',
41
  PRIMARY KEY        (backups_run_id)
42
) comment 'added for each backup that runs';
43
 
44
 
45
DROP TABLE IF EXISTS backups_usage;
46
CREATE TABLE backups_usage (
47
  backups_usage_id   int unsigned not null auto_increment,
48
  report_date        date NOT NULL default '0000-00-00',
49
  backups_id         int unsigned not null references backups (backups_id),
50
  disk_usage         bigint comment 'bytes used on backup server',
51
  num_files          bigint comment 'number of files on backup server',
52
  num_dirs           bigint comment 'number of directories on backup server',
53
  PRIMARY KEY        (backups_usage_id)
54
) comment 'periodic reports from backup server itself on space used';
55
 
56
insert into _system ( group_name,key_name,theValue,added_date) values ( 'Modules', 'Backup', 'modules/backup/', now() );
57
 
58
/* Reports */
59
insert into report ( name, query, parameters ) values ('Active Backups','select device.name Device, 
60
       backupserver.name Server, 
61
       floor(allocated_size/1024/1024/1024) \"Max Size (G)\", 
62
       concat(round(allocated_size / backup_space * 100), \'%\') \"%\",
63
       start_time Starts
64
from backups join backups_server on backups.backups_server_id = backups_server.backups_server_id
65
     join device backupserver on backups_server.device_id = backupserver.device_id
66
     join device on backups.device_id = device.device_id','');
67
 
68
insert into report ( name, query, parameters ) values ('Device Backup History','select device.name Device, 
69
       backups_run.start_time Started,
70
       timediff(backups_run.end_time,backups_run.start_time) Duration,
71
       lpad(floor((data_sent+data_received) / 1024 / 1024), 10, \' \') \"M Xfer\"
72
from backups join backups_run using (backups_id)
73
     join device using (device_id)
74
where device.device_id = <device_id>
75
      and backups_run.start_time >= <start_date>
76
      and backups_run.start_time < <end_date>
77
order by device.name,backups_run.start_time','device_id++Device++select device_id,device.name from device where device_id in (select device_id from backups) order by device.name++select device.name from device where device_id = <value>
78
start_date++Starting Date++++
79
end_date++Ending Date++++');
80
 
81
insert into report ( name, query, parameters ) values ('Backup Stats','select device.name Device,
82
       max( timediff(backups_run.end_time,backups_run.start_time) ) Longest,
83
       min( timediff(backups_run.end_time,backups_run.start_time) ) Shortest,
84
       avg( TIME_TO_SEC(backups_run.end_time)-TIME_TO_SEC(backups_run.start_time) ) AvgTime,
85
       lpad(format( max((data_sent+data_received) / 1024 / 1024), 0 ),10,\' \') Largest,
86
       lpad(format( min((data_sent+data_received) / 1024 / 1024), 0 ),10,\' \') Smallest,
87
       lpad(format(avg( (data_sent+data_received) / 1024 / 1024), 0 ),10,\' \') AvgXFer,
88
       count(*) Num,
89
       stddev((data_sent+data_received)) StdDev,
90
       var_pop((data_sent+data_received)) Var
91
from backups join backups_run using (backups_id)
92
     join device using (device_id)
93
group by device.name','');
94
 
95
insert into report ( name, query, parameters ) values ('Monthly Backup Transfer','select device.name Device, 
96
       concat(year(backups_run.start_time), \'-\', lpad(month(backups_run.start_time),2,\'0\')) Period,
97
       lpad(format(sum(data_sent+data_received)/1024/1024/1024,0),10,\' \') \'Transfer\',
98
       lpad(format((sum(data_sent+data_received)- (allocated_size * 0.01))/1024/1024/1024,0),10,\' \') \'Overage\'
99
from backups join backups_run using (backups_id)
100
     join device using (device_id)
101
where month(backups_run.start_time) = <month> and year(backups_run.start_time) = <year>
102
group by device.name, concat(year(backups_run.start_time), \'-\', month(backups_run.start_time))
103
order by device.name, concat(year(backups_run.start_time), \'-\', month(backups_run.start_time))','month++Report Month (number)++++
104
year++Report Year (4 digit)++++');
105
 
106
 
107
insert into report ( name, query, parameters ) values ('Client Monthly Transfer History','select device.name Device, 
108
       concat(year(backups_run.start_time), \'-\', lpad(month(backups_run.start_time),2,\'0\')) Period,
109
       lpad(format(sum(data_sent+data_received)/1024/1024/1024,0),10,\' \') \'Transfer\',
110
       lpad(format((sum(data_sent+data_received)- (allocated_size * 0.01))/1024/1024/1024,0),10,\' \') \'Overage\'
111
from backups join backups_run using (backups_id)
112
     join device using (device_id)
113
where device.device_id = <device_id>
114
group by device.name, concat(year(backups_run.start_time), \'-\', month(backups_run.start_time))
115
order by device.name, concat(year(backups_run.start_time), \'-\', month(backups_run.start_time))','device_id++Computer++select device_id,device.name from device where device_id in (select device_id from backups) order by device.name++select name from device where device_id = <value>');
38 rodolico 116
 
117
/* last <count> backups recorded */
118
 
50 rodolico 119
insert into report ( name, query, parameters ) values ('Backup History','select
38 rodolico 120
   backups_run.start_time Started,
121
   backups_run.end_time Ended,
122
   backups_run.version Version,
123
   format(backups_run.files_count,0) Files,
124
   format(backups_run.files_size/1024/1024,0) \'Size (M)\',
125
   format(backups_run.transferred_count,0) Transfer,
126
   format(backups_run.skipped,0) Skipped,
127
   format(backups_run.files_deleted,0) Deleted,
128
   format(backups_run.data_sent/1024/1024,2) \'MB Out\',
129
   format(backups_run.data_received/1024/1024,2) \'MB In\',
130
   backups_run.disk_used Disk
131
from
132
   backups_run join backups using (backups_id)
133
where
134
   backups.device_id = <device_id>
135
order by
136
   backups_run.report_date desc
137
limit <count>','device_id++Device ID++++
50 rodolico 138
count++Number of Reports++++');
70 rodolico 139
 
140
/* This has a menu entry, so add it */
141
/* first, make sure we don't have any danglies */
142
/* create three menu options. First one is the main menu option (ie, no parent_id) */
143
insert into menu( url, caption, parent_id) values ('/modules/backup/', 'Backups', null);