]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/cats/make_mysql_tables.in
Vacation work -- see tech log
[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    LabelFormat TINYBLOB,
189    Enabled TINYINT DEFAULT 1,
190    ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
191    RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
192    UNIQUE (Name(128)),
193    PRIMARY KEY (PoolId)
194    );
195
196
197 CREATE TABLE Client (
198    ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
199    Name TINYBLOB NOT NULL,
200    Uname TINYBLOB NOT NULL,       /* full uname -a of client */
201    AutoPrune TINYINT DEFAULT 0,
202    FileRetention BIGINT UNSIGNED NOT NULL,
203    JobRetention  BIGINT UNSIGNED NOT NULL,
204    UNIQUE (Name(128)),
205    PRIMARY KEY(ClientId)
206    );
207
208 CREATE TABLE BaseFiles (
209    BaseId INTEGER UNSIGNED AUTO_INCREMENT,
210    BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
211    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
212    FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
213    FileIndex INTEGER UNSIGNED,
214    PRIMARY KEY(BaseId)
215    );
216
217 CREATE TABLE UnsavedFiles (
218    UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
219    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
220    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
221    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
222    PRIMARY KEY (UnsavedId)
223    );
224
225
226 CREATE TABLE Version (
227    VersionId INTEGER UNSIGNED NOT NULL 
228    );
229
230 -- Initialize Version            
231 INSERT INTO Version (VersionId) VALUES (8);
232
233 CREATE TABLE Counters (
234    Counter TINYBLOB NOT NULL,
235    MinValue INTEGER,
236    MaxValue INTEGER,
237    CurrentValue INTEGER,
238    WrapCounter TINYBLOB NOT NULL,
239    PRIMARY KEY (Counter(128))
240    );
241
242 CREATE TABLE CDImages (
243    MediaId INTEGER UNSIGNED NOT NULL,
244    LastBurn DATETIME NOT NULL,
245    PRIMARY KEY (MediaId)
246    );
247
248
249 END-OF-DATA
250 then
251    echo "Creation of Bacula MySQL tables succeeded."
252 else
253    echo "Creation of Bacula MySQL tables failed."
254 fi
255 exit 0