]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_mysql_tables.in
Second cut ANSI labels
[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 DEFAULT 0,
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 (FilenameId, PathId)
36    );
37
38 #
39 # Possibly add one or more of the following indexes
40 #  to the above File table if your Verifies are
41 #  too slow.
42 #
43 #  INDEX (JobId),
44 #  INDEX (PathId),
45 #  INDEX (FilenameId),
46 #  INDEX (JobId, PathId, FilenameId)
47 #
48
49 CREATE TABLE Job (
50    JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
51    Job TINYBLOB NOT NULL,
52    Name TINYBLOB NOT NULL,
53    Type BINARY(1) NOT NULL,
54    Level BINARY(1) NOT NULL,
55    ClientId INTEGER NOT NULL REFERENCES Client,
56    JobStatus BINARY(1) NOT NULL,
57    SchedTime DATETIME NOT NULL,
58    StartTime DATETIME NOT NULL,
59    EndTime DATETIME NOT NULL,
60    JobTDate BIGINT UNSIGNED NOT NULL,
61    VolSessionId INTEGER UNSIGNED NOT NULL DEFAULT 0,
62    VolSessionTime INTEGER UNSIGNED NOT NULL DEFAULT 0,
63    JobFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
64    JobBytes BIGINT UNSIGNED NOT NULL,
65    JobErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
66    JobMissingFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
67    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
68    FileSetId INTEGER UNSIGNED NOT NULL REFERENCES FileSet,
69    PurgedFiles TINYINT NOT NULL DEFAULT 0,
70    HasBase TINYINT NOT NULL DEFAULT 0,
71    PRIMARY KEY(JobId),
72    INDEX (Name(128))
73    );
74
75
76 CREATE TABLE FileSet (
77    FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
78    FileSet TINYBLOB NOT NULL,
79    MD5 TINYBLOB NOT NULL,
80    CreateTime DATETIME NOT NULL,
81    PRIMARY KEY(FileSetId)
82    );
83
84 CREATE TABLE JobMedia (
85    JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
86    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
87    MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
88    FirstIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
89    LastIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
90    StartFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
91    EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
92    StartBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
93    EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
94    VolIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
95    PRIMARY KEY(JobMediaId),
96    INDEX (JobId, MediaId)
97    );
98
99
100 CREATE TABLE Media (
101    MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
102    VolumeName TINYBLOB NOT NULL,
103    Slot INTEGER NOT NULL DEFAULT 0,
104    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
105    MediaType TINYBLOB NOT NULL,
106    LabelType TINYINT NOT NULL DEFAULT 0,
107    FirstWritten DATETIME NOT NULL,
108    LastWritten DATETIME NOT NULL,
109    LabelDate DATETIME NOT NULL,
110    VolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
111    VolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
112    VolBlocks INTEGER UNSIGNED NOT NULL DEFAULT 0,
113    VolMounts INTEGER UNSIGNED NOT NULL DEFAULT 0,
114    VolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
115    VolParts INTEGER UNSIGNED NOT NULL DEFAULT 0,
116    VolErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
117    VolWrites INTEGER UNSIGNED NOT NULL DEFAULT 0,
118    VolCapacityBytes BIGINT UNSIGNED NOT NULL,
119    VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
120     'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
121    Recycle TINYINT NOT NULL DEFAULT 0,
122    VolRetention BIGINT UNSIGNED NOT NULL DEFAULT 0,
123    VolUseDuration BIGINT UNSIGNED NOT NULL DEFAULT 0,
124    MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
125    MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
126    MaxVolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
127    InChanger TINYINT NOT NULL DEFAULT 0,
128    MediaAddressing TINYINT NOT NULL DEFAULT 0,
129    VolReadTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
130    VolWriteTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
131    EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
132    EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
133    PRIMARY KEY(MediaId),
134    INDEX (PoolId)
135    );
136
137 CREATE INDEX inx8 ON Media (PoolId);
138
139 CREATE TABLE MediaType (
140    MediaTypeId INTERGER UNSIGNED NOT NULL AUTO_INCREMENT,
141    MediaType VARCHAR(128) NOT NULL,
142    ReadOnly TINYINT DEFAULT 0,
143    PRIMARY KEY(MediaTypeId)
144    );
145
146 CREATE TABLE Device (
147    DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
148    Name VARCHAR(128) NOT NULL,
149    MediaTypeId INTEGER UNSIGNED REFERENCES MediaType NOT NULL,
150    StorageId INTEGER UNSIGNED REFERENCES Storage,
151    DevMounts INTEGER UNSIGNED DEFAULT 0,
152    DevReadBytes BIGINT UNSIGNED DEFAULT 0,
153    DevWriteBytes BIGINT UNSIGNED DEFAULT 0,
154    DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
155    DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,
156    DevReadTime BIGINT UNSIGNED DEFAULT 0,
157    DevWriteTime BIGINT UNSIGNED DEFAULT 0,
158    DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
159    DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,
160    CleaningDate DATETIME DEFAULT 0,
161    CleaningPeriod BIGINT UNSIGNED DEFAULT 0,
162    PRIMARY KEY(DeviceId)
163    );
164
165 CREATE TABLE Storage (
166    StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
167    Name VARCHAR(128) NOT NULL,
168    AutoChanger TINYINT DEFAULT 0,
169    PRIMARY KEY(StorageId)
170    );
171
172 CREATE TABLE Pool (
173    PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
174    Name TINYBLOB NOT NULL,
175    NumVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
176    MaxVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
177    UseOnce TINYINT NOT NULL,
178    UseCatalog TINYINT NOT NULL,
179    AcceptAnyVolume TINYINT DEFAULT 0,
180    VolRetention BIGINT UNSIGNED NOT NULL,
181    VolUseDuration BIGINT UNSIGNED NOT NULL,
182    MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
183    MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
184    MaxVolBytes BIGINT UNSIGNED NOT NULL,
185    AutoPrune TINYINT DEFAULT 0,
186    Recycle TINYINT DEFAULT 0,
187    PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
188    LabelType TINYINT NOT NULL DEFAULT 0,
189    LabelFormat TINYBLOB,
190    Enabled TINYINT DEFAULT 1,
191    ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
192    RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
193    UNIQUE (Name(128)),
194    PRIMARY KEY (PoolId)
195    );
196
197
198 CREATE TABLE Client (
199    ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
200    Name TINYBLOB NOT NULL,
201    Uname TINYBLOB NOT NULL,       /* full uname -a of client */
202    AutoPrune TINYINT DEFAULT 0,
203    FileRetention BIGINT UNSIGNED NOT NULL,
204    JobRetention  BIGINT UNSIGNED NOT NULL,
205    UNIQUE (Name(128)),
206    PRIMARY KEY(ClientId)
207    );
208
209 CREATE TABLE BaseFiles (
210    BaseId INTEGER UNSIGNED AUTO_INCREMENT,
211    BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
212    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
213    FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
214    FileIndex INTEGER UNSIGNED,
215    PRIMARY KEY(BaseId)
216    );
217
218 CREATE TABLE UnsavedFiles (
219    UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
220    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
221    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
222    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
223    PRIMARY KEY (UnsavedId)
224    );
225
226
227 CREATE TABLE Version (
228    VersionId INTEGER UNSIGNED NOT NULL 
229    );
230
231 -- Initialize Version            
232 INSERT INTO Version (VersionId) VALUES (8);
233
234 CREATE TABLE Counters (
235    Counter TINYBLOB NOT NULL,
236    MinValue INTEGER,
237    MaxValue INTEGER,
238    CurrentValue INTEGER,
239    WrapCounter TINYBLOB NOT NULL,
240    PRIMARY KEY (Counter(128))
241    );
242
243 CREATE TABLE CDImages (
244    MediaId INTEGER UNSIGNED NOT NULL,
245    LastBurn DATETIME NOT NULL,
246    PRIMARY KEY (MediaId)
247    );
248
249
250 END-OF-DATA
251 then
252    echo "Creation of Bacula MySQL tables succeeded."
253 else
254    echo "Creation of Bacula MySQL tables failed."
255 fi
256 exit 0