]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_mysql_tables.in
This commit was manufactured by cvs2svn to create tag
[bacula/bacula] / bacula / src / cats / make_mysql_tables.in
1 #!/bin/sh
2 #
3 # shell script to create Bacula MySQL tables
4 #
5 bindir=@SQL_BINDIR@
6
7 if $bindir/mysql $* -f <<END-OF-DATA
8 USE bacula;
9 CREATE TABLE Filename (
10   FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
11   Name BLOB NOT NULL,
12   PRIMARY KEY(FilenameId),
13   INDEX (Name(30))
14   );
15
16 CREATE TABLE Path (
17    PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
18    Path BLOB NOT NULL,
19    PRIMARY KEY(PathId),
20    INDEX (Path(50))
21    );
22
23
24 # ****FIXME**** make FileId BIGINT someday when MySQL works *****
25 CREATE TABLE File (
26    FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
27    FileIndex INTEGER UNSIGNED NOT NULL,
28    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
29    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
30    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
31    MarkId INTEGER UNSIGNED NOT NULL DEFAULT 0,
32    LStat TINYBLOB NOT NULL,
33    MD5 TINYBLOB NOT NULL,
34    PRIMARY KEY(FileId),
35    INDEX (JobId),
36    INDEX (PathId),
37    INDEX (FilenameId)
38    );
39
40
41 CREATE TABLE Job (
42    JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
43    Job TINYBLOB NOT NULL,
44    Name TINYBLOB NOT NULL,
45    Type BINARY(1) NOT NULL,
46    Level BINARY(1) NOT NULL,
47    ClientId INTEGER NOT NULL REFERENCES Client,
48    JobStatus BINARY(1) NOT NULL,
49    SchedTime DATETIME NOT NULL,
50    StartTime DATETIME NOT NULL,
51    EndTime DATETIME NOT NULL,
52    JobTDate BIGINT UNSIGNED NOT NULL,
53    VolSessionId INTEGER UNSIGNED NOT NULL,
54    VolSessionTime INTEGER UNSIGNED NOT NULL,
55    JobFiles INTEGER UNSIGNED NOT NULL,
56    JobBytes BIGINT UNSIGNED NOT NULL,
57    JobErrors INTEGER UNSIGNED NOT NULL,
58    JobMissingFiles INTEGER UNSIGNED NOT NULL,
59    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
60    FileSetId INTEGER UNSIGNED NOT NULL REFERENCES FileSet,
61    PurgedFiles TINYINT NOT NULL DEFAULT 0,
62    HasBase TINYINT NOT NULL DEFAULT 0,
63    PRIMARY KEY(JobId),
64    INDEX (Name(128))
65    );
66
67
68 CREATE TABLE FileSet (
69    FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
70    FileSet TINYBLOB NOT NULL,
71    MD5 TINYBLOB NOT NULL,
72    CreateTime DATETIME NOT NULL,
73    PRIMARY KEY(FileSetId)
74    );
75
76 CREATE TABLE JobMedia (
77    JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
78    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
79    MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
80    FirstIndex INTEGER UNSIGNED NOT NULL,
81    LastIndex INTEGER UNSIGNED NOT NULL,
82    StartFile INTEGER UNSIGNED NOT NULL,
83    EndFile INTEGER UNSIGNED NOT NULL,
84    StartBlock INTEGER UNSIGNED NOT NULL,
85    EndBlock INTEGER UNSIGNED NOT NULL,
86    VolIndex INTEGER UNSIGNED NOT NULL,
87    PRIMARY KEY(JobMediaId),
88    INDEX (JobId, MediaId)
89    );
90
91
92 CREATE TABLE Media (
93    MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
94    VolumeName TINYBLOB NOT NULL,
95    Slot INTEGER NOT NULL DEFAULT 0,
96    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
97    MediaType TINYBLOB NOT NULL,
98    FirstWritten DATETIME NOT NULL,
99    LastWritten DATETIME NOT NULL,
100    LabelDate DATETIME NOT NULL,
101    VolJobs INTEGER UNSIGNED NOT NULL,
102    VolFiles INTEGER UNSIGNED NOT NULL,
103    VolBlocks INTEGER UNSIGNED NOT NULL,
104    VolMounts INTEGER UNSIGNED NOT NULL,
105    VolBytes BIGINT UNSIGNED NOT NULL,
106    VolErrors INTEGER UNSIGNED NOT NULL,
107    VolWrites INTEGER UNSIGNED NOT NULL,
108    VolCapacityBytes BIGINT UNSIGNED NOT NULL,
109    VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
110     'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
111    Recycle TINYINT NOT NULL,
112    VolRetention BIGINT UNSIGNED NOT NULL,
113    VolUseDuration BIGINT UNSIGNED NOT NULL,
114    MaxVolJobs INTEGER UNSIGNED NOT NULL,
115    MaxVolFiles INTEGER UNSIGNED NOT NULL,
116    MaxVolBytes BIGINT UNSIGNED NOT NULL,
117    PRIMARY KEY(MediaId),
118    INDEX (PoolId)
119    );
120
121 CREATE TABLE Pool (
122    PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
123    Name TINYBLOB NOT NULL,
124    NumVols INTEGER UNSIGNED NOT NULL,
125    MaxVols INTEGER UNSIGNED NOT NULL,
126    UseOnce TINYINT NOT NULL,
127    UseCatalog TINYINT NOT NULL,
128    AcceptAnyVolume TINYINT DEFAULT 0,
129    VolRetention BIGINT UNSIGNED NOT NULL,
130    VolUseDuration BIGINT UNSIGNED NOT NULL,
131    MaxVolJobs INTEGER UNSIGNED NOT NULL,
132    MaxVolFiles INTEGER UNSIGNED NOT NULL,
133    MaxVolBytes BIGINT UNSIGNED NOT NULL,
134    AutoPrune TINYINT DEFAULT 0,
135    Recycle TINYINT DEFAULT 0,
136    PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration') NOT NULL,
137    LabelFormat TINYBLOB,
138    UNIQUE (Name(128)),
139    PRIMARY KEY (PoolId)
140    );
141
142
143 CREATE TABLE Client (
144    ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
145    Name TINYBLOB NOT NULL,
146    Uname TINYBLOB NOT NULL,       /* full uname -a of client */
147    AutoPrune TINYINT DEFAULT 0,
148    FileRetention BIGINT UNSIGNED NOT NULL,
149    JobRetention  BIGINT UNSIGNED NOT NULL,
150    UNIQUE (Name(128)),
151    PRIMARY KEY(ClientId)
152    );
153
154 CREATE TABLE BaseFiles (
155    BaseId INTEGER UNSIGNED AUTO_INCREMENT,
156    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
157    FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
158    FileIndex INTEGER UNSIGNED,
159    PRIMARY KEY(BaseId)
160    );
161
162 CREATE TABLE UnsavedFiles (
163    UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
164    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
165    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
166    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
167    PRIMARY KEY (UnsavedId)
168    );
169
170
171 CREATE TABLE Version (
172    VersionId INTEGER UNSIGNED NOT NULL 
173    );
174
175 -- Initialize Version            
176 INSERT INTO Version (VersionId) VALUES (6);
177
178 CREATE TABLE Counters (
179    Counter TINYBLOB NOT NULL,
180    MinValue INTEGER,
181    MaxValue INTEGER,
182    CurrentValue INTEGER,
183    WrapCounter TINYBLOB NOT NULL,
184    PRIMARY KEY (Counter(128))
185    );
186
187
188 END-OF-DATA
189 then
190    echo "Creation of Bacula MySQL tables succeeded."
191 else
192    echo "Creation of Bacula MySQL tables failed."
193 fi
194 exit 0