]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/cats/make_mysql_tables.sql
kes Add Media.Enabled flag to client backups for dotcmds.c
[bacula/bacula] / bacula / src / win32 / cats / make_mysql_tables.sql
1 USE bacula;\r
2 --\r
3 -- Note, we use BLOB rather than TEXT because in MySQL,\r
4 --  BLOBs are identical to TEXT except that BLOB is case\r
5 --  sensitive in sorts, which is what we want, and TEXT\r
6 --  is case insensitive.\r
7 --\r
8 CREATE TABLE Filename (\r
9   FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
10   Name BLOB NOT NULL,\r
11   PRIMARY KEY(FilenameId),\r
12   INDEX (Name(255))\r
13   );\r
14 \r
15 CREATE TABLE Path (\r
16    PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
17    Path BLOB NOT NULL,\r
18    PRIMARY KEY(PathId),\r
19    INDEX (Path(255))\r
20    );\r
21 \r
22 \r
23 CREATE TABLE File (\r
24    FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
25    FileIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
26    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
27    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,\r
28    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,\r
29    MarkId INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
30    LStat TINYBLOB NOT NULL,\r
31    MD5 TINYBLOB NOT NULL,\r
32    PRIMARY KEY(FileId),\r
33    INDEX (JobId),\r
34    INDEX (JobId, PathId, FilenameId)\r
35    );\r
36 \r
37 #\r
38 # Possibly add one or more of the following indexes\r
39 #  to the above File table if your Verifies are\r
40 #  too slow.\r
41 #\r
42 #  INDEX (PathId),\r
43 #  INDEX (FilenameId),\r
44 #  INDEX (FilenameId, PathId)\r
45 #  INDEX (JobId),\r
46 #\r
47 \r
48 CREATE TABLE MediaType (\r
49    MediaTypeId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
50    MediaType TINYBLOB NOT NULL,\r
51    ReadOnly TINYINT DEFAULT 0,\r
52    PRIMARY KEY(MediaTypeId)\r
53    );\r
54 \r
55 CREATE TABLE Storage (\r
56    StorageId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
57    Name TINYBLOB NOT NULL,\r
58    AutoChanger TINYINT DEFAULT 0,\r
59    PRIMARY KEY(StorageId)\r
60    );\r
61 \r
62 CREATE TABLE Device (\r
63    DeviceId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
64    Name TINYBLOB NOT NULL,\r
65    MediaTypeId INTEGER UNSIGNED NOT NULL REFERENCES MediaType,\r
66    StorageId INTEGER UNSIGNED NOT NULL REFERENCES Storage,\r
67    DevMounts INTEGER UNSIGNED DEFAULT 0,\r
68    DevReadBytes BIGINT UNSIGNED DEFAULT 0,\r
69    DevWriteBytes BIGINT UNSIGNED DEFAULT 0,\r
70    DevReadBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
71    DevWriteBytesSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
72    DevReadTime BIGINT UNSIGNED DEFAULT 0,\r
73    DevWriteTime BIGINT UNSIGNED DEFAULT 0,\r
74    DevReadTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
75    DevWriteTimeSinceCleaning BIGINT UNSIGNED DEFAULT 0,\r
76    CleaningDate DATETIME DEFAULT 0,\r
77    CleaningPeriod BIGINT UNSIGNED DEFAULT 0,\r
78    PRIMARY KEY(DeviceId)\r
79    );\r
80 \r
81 \r
82 CREATE TABLE Job (\r
83    JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
84    Job TINYBLOB NOT NULL,\r
85    Name TINYBLOB NOT NULL,\r
86    Type BINARY(1) NOT NULL,\r
87    Level BINARY(1) NOT NULL,\r
88    ClientId INTEGER NULL REFERENCES Client,\r
89    JobStatus BINARY(1) NOT NULL,\r
90    SchedTime DATETIME NOT NULL,\r
91    StartTime DATETIME NULL,\r
92    EndTime DATETIME NULL,\r
93    JobTDate BIGINT UNSIGNED NOT NULL,\r
94    VolSessionId INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
95    VolSessionTime INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
96    JobFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
97    JobBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
98    JobErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
99    JobMissingFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
100    PoolId INTEGER UNSIGNED NULL REFERENCES Pool,\r
101    FileSetId INTEGER UNSIGNED NULL REFERENCES FileSet,\r
102    PurgedFiles TINYINT NOT NULL DEFAULT 0,\r
103    HasBase TINYINT NOT NULL DEFAULT 0,\r
104    PRIMARY KEY(JobId),\r
105    INDEX (Name(128))\r
106    );\r
107 \r
108 CREATE TABLE MAC (\r
109    JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
110    OriginalJobId INTEGER UNSIGNED NOT NULL,\r
111    JobType BINARY(1) NOT NULL,\r
112    JobLevel BINARY(1) NOT NULL,\r
113    SchedTime DATETIME NOT NULL,\r
114    StartTime DATETIME NOT NULL,\r
115    EndTime DATETIME NOT NULL,\r
116    JobTDate BIGINT UNSIGNED NOT NULL,\r
117    PRIMARY KEY(JobId)\r
118    );\r
119 \r
120 CREATE TABLE Location (\r
121    LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
122    Location TINYBLOB NOT NULL,\r
123    PRIMARY KEY(LocationId)\r
124    );\r
125 \r
126\r
127 CREATE TABLE FileSet (\r
128    FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
129    FileSet TINYBLOB NOT NULL,\r
130    MD5 TINYBLOB NOT NULL,\r
131    CreateTime DATETIME NOT NULL,\r
132    PRIMARY KEY(FileSetId)\r
133    );\r
134 \r
135 CREATE TABLE JobMedia (\r
136    JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
137    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
138    MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,\r
139    FirstIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
140    LastIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
141    StartFile INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
142    EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
143    StartBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
144    EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
145    VolIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
146    Copy INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
147    Stripe INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
148    PRIMARY KEY(JobMediaId),\r
149    INDEX (JobId, MediaId)\r
150    );\r
151 \r
152 \r
153 CREATE TABLE Media (\r
154    MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
155    VolumeName TINYBLOB NOT NULL,\r
156    Slot INTEGER NOT NULL DEFAULT 0,\r
157    PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,\r
158    MediaType TINYBLOB NOT NULL,\r
159    MediaTypeId INTEGER UNSIGNED NOT NULL REFERENCES MediaType,\r
160    LabelType TINYINT NOT NULL DEFAULT 0,\r
161    FirstWritten DATETIME NULL,\r
162    LastWritten DATETIME NULL,\r
163    LabelDate DATETIME NULL,\r
164    VolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
165    VolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
166    VolBlocks INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
167    VolMounts INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
168    VolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
169    VolParts INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
170    VolErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
171    VolWrites INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
172    VolCapacityBytes BIGINT UNSIGNED NOT NULL,\r
173    VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',\r
174     'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,\r
175    Recycle TINYINT NOT NULL DEFAULT 0,\r
176    VolRetention BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
177    VolUseDuration BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
178    MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
179    MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
180    MaxVolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
181    InChanger TINYINT NOT NULL DEFAULT 0,\r
182    StorageId INTEGER UNSIGNED NOT NULL REFERENCES Storage,\r
183    DeviceId INTEGER UNSIGNED NOT NULL REFERENCES Device,\r
184    MediaAddressing TINYINT NOT NULL DEFAULT 0,\r
185    VolReadTime BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
186    VolWriteTime BIGINT UNSIGNED NOT NULL DEFAULT 0,\r
187    EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
188    EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
189    LocationId INTEGER UNSIGNED NOT NULL REFERENCES Location,\r
190    RecycleCount INTEGER UNSIGNED DEFAULT 0,\r
191    InitialWrite DATETIME NULL,\r
192    ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
193    RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
194    PRIMARY KEY(MediaId),\r
195    INDEX (PoolId)\r
196    );\r
197 \r
198 CREATE INDEX inx8 ON Media (PoolId);\r
199 \r
200 \r
201 \r
202 CREATE TABLE Pool (\r
203    PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
204    Name TINYBLOB NOT NULL,\r
205    NumVols INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
206    MaxVols INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
207    UseOnce TINYINT NOT NULL,\r
208    UseCatalog TINYINT NOT NULL,\r
209    AcceptAnyVolume TINYINT DEFAULT 0,\r
210    VolRetention BIGINT UNSIGNED NOT NULL,\r
211    VolUseDuration BIGINT UNSIGNED NOT NULL,\r
212    MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
213    MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,\r
214    MaxVolBytes BIGINT UNSIGNED NOT NULL,\r
215    AutoPrune TINYINT DEFAULT 0,\r
216    Recycle TINYINT DEFAULT 0,\r
217    PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,\r
218    LabelType TINYINT NOT NULL DEFAULT 0,\r
219    LabelFormat TINYBLOB,\r
220    Enabled TINYINT DEFAULT 1,\r
221    ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
222    RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
223    NextPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,\r
224    MigrationHighBytes BIGINT UNSIGNED DEFAULT 0,\r
225    MigrationLowBytes BIGINT UNSIGNED DEFAULT 0,\r
226    MigrationTime BIGINT UNSIGNED DEFAULT 0,\r
227    UNIQUE (Name(128)),\r
228    PRIMARY KEY (PoolId)\r
229    );\r
230 \r
231 \r
232 CREATE TABLE Client (\r
233    ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\r
234    Name TINYBLOB NOT NULL,\r
235    Uname TINYBLOB NOT NULL,       /* full uname -a of client */\r
236    AutoPrune TINYINT DEFAULT 0,\r
237    FileRetention BIGINT UNSIGNED NOT NULL,\r
238    JobRetention  BIGINT UNSIGNED NOT NULL,\r
239    UNIQUE (Name(128)),\r
240    PRIMARY KEY(ClientId)\r
241    );\r
242 \r
243 CREATE TABLE BaseFiles (\r
244    BaseId INTEGER UNSIGNED AUTO_INCREMENT,\r
245    BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
246    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
247    FileId INTEGER UNSIGNED NOT NULL REFERENCES File,\r
248    FileIndex INTEGER UNSIGNED,\r
249    PRIMARY KEY(BaseId)\r
250    );\r
251 \r
252 CREATE TABLE UnsavedFiles (\r
253    UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,\r
254    JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,\r
255    PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,\r
256    FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,\r
257    PRIMARY KEY (UnsavedId)\r
258    );\r
259 \r
260 \r
261 \r
262 CREATE TABLE Counters (\r
263    Counter TINYBLOB NOT NULL,\r
264    MinValue INTEGER,\r
265    MaxValue INTEGER,\r
266    CurrentValue INTEGER,\r
267    WrapCounter TINYBLOB NOT NULL,\r
268    PRIMARY KEY (Counter(128))\r
269    );\r
270 \r
271 CREATE TABLE CDImages (\r
272    MediaId INTEGER UNSIGNED NOT NULL,\r
273    LastBurn DATETIME NOT NULL,\r
274    PRIMARY KEY (MediaId)\r
275    );\r
276 \r
277 CREATE TABLE Status (\r
278    JobStatus CHAR(1) BINARY NOT NULL,\r
279    JobStatusLong BLOB, \r
280    PRIMARY KEY (JobStatus)\r
281    );\r
282 \r
283 INSERT INTO Status (JobStatus,JobStatusLong) VALUES\r
284    ('C', 'Created, not yet running'),\r
285    ('R', 'Running'),\r
286    ('B', 'Blocked'),\r
287    ('T', 'Completed successfully'),\r
288    ('E', 'Terminated with errors'),\r
289    ('e', 'Non-fatal error'),\r
290    ('f', 'Fatal error'),\r
291    ('D', 'Verify found differences'),\r
292    ('A', 'Canceled by user'),\r
293    ('F', 'Waiting for Client'),\r
294    ('S', 'Waiting for Storage daemon'),\r
295    ('m', 'Waiting for new media'),\r
296    ('M', 'Waiting for media mount'),\r
297    ('s', 'Waiting for storage resource'),\r
298    ('j', 'Waiting for job resource'),\r
299    ('c', 'Waiting for client resource'),\r
300    ('d', 'Waiting on maximum jobs'),\r
301    ('t', 'Waiting on start time'),\r
302    ('p', 'Waiting on higher priority jobs');\r
303 \r
304 CREATE TABLE Version (\r
305    VersionId INTEGER UNSIGNED NOT NULL \r
306    );\r
307 \r
308 -- Initialize Version            \r
309 INSERT INTO Version (VersionId) VALUES (9);\r