1CREATE TABLE Path 2( 3 PathId SERIAL NOT NULL, 4 Path TEXT NOT NULL, 5 PRIMARY KEY (PathId) 6); 7 8ALTER TABLE Path ALTER COLUMN Path SET STATISTICS 1000; 9CREATE UNIQUE INDEX path_name_idx ON Path (Path); 10 11-- We strongly recommend to avoid the temptation to add new indexes. 12-- In general, these will cause very significant performance 13-- problems in other areas. A better approach is to carefully check 14-- that all your memory configuration parameters are 15-- suitable for the size of your installation. If you backup 16-- millions of files, you need to adapt the database memory 17-- configuration parameters concerning sorting, joining and global 18-- memory. By default, sort and join parameters are very small 19-- (sometimes 8Kb), and having sufficient memory specified by those 20-- parameters is extremely important to run fast. 21 22-- In File table 23-- FileIndex is 0 for FT_DELETED files 24-- Name is '' for directories 25CREATE TABLE File ( 26 FileId BIGSERIAL NOT NULL, 27 FileIndex INTEGER NOT NULL DEFAULT 0, 28 JobId INTEGER NOT NULL, 29 PathId INTEGER NOT NULL, 30 DeltaSeq SMALLINT NOT NULL DEFAULT 0, 31 MarkId INTEGER NOT NULL DEFAULT 0, 32 Fhinfo NUMERIC(20) NOT NULL DEFAULT 0, 33 Fhnode NUMERIC(20) NOT NULL DEFAULT 0, 34 LStat TEXT NOT NULL, 35 Md5 TEXT NOT NULL, 36 Name TEXT NOT NULL, 37 PRIMARY KEY (FileId) 38); 39CREATE INDEX file_jpfid_idx ON File (JobId, PathId, Name); 40-- This index is important for bvfs performance, especially 41-- for .bvfs_lsdirs which is used by bareos-webui. 42-- As it's a partial index, it will only contain data from 43-- from accurate jobs with delete directories, so that the 44-- impact on backups will be low. Nevertheless, it will 45-- improve the performance, even when not using accurate. 46CREATE INDEX file_pjidpart_idx ON File(PathId,JobId) WHERE FileIndex = 0 AND Name = ''; 47 48-- 49-- Add this if you have a good number of job 50-- that run at the same time 51-- ALTER SEQUENCE file_fileid_seq CACHE 1000; 52 53-- 54-- Possibly add one or more of the following indexes 55-- to the above File table if your Verifies are 56-- too slow, but they can slow down backups. 57-- 58-- CREATE INDEX file_pathid_idx ON file(pathid); 59 60CREATE TABLE RestoreObject ( 61 RestoreObjectId SERIAL NOT NULL, 62 ObjectName TEXT NOT NULL, 63 RestoreObject BYTEA NOT NULL, 64 PluginName TEXT NOT NULL, 65 ObjectLength INTEGER DEFAULT 0, 66 ObjectFullLength INTEGER DEFAULT 0, 67 ObjectIndex INTEGER DEFAULT 0, 68 ObjectType INTEGER DEFAULT 0, 69 FileIndex INTEGER DEFAULT 0, 70 JobId INTEGER, 71 ObjectCompression INTEGER DEFAULT 0, 72 PRIMARY KEY(RestoreObjectId) 73); 74CREATE INDEX restore_jobid_idx ON RestoreObject(JobId); 75 76CREATE TABLE Job 77( 78 JobId SERIAL NOT NULL, 79 Job TEXT NOT NULL, 80 Name TEXT NOT NULL, 81 Type CHAR(1) NOT NULL, 82 Level CHAR(1) NOT NULL, 83 ClientId INTEGER DEFAULT 0, 84 JobStatus CHAR(1) NOT NULL, 85 SchedTime TIMESTAMP WITHOUT TIME ZONE, 86 StartTime TIMESTAMP WITHOUT TIME ZONE, 87 EndTime TIMESTAMP WITHOUT TIME ZONE, 88 RealEndTime TIMESTAMP WITHOUT TIME ZONE, 89 JobTDate BIGINT DEFAULT 0, 90 VolSessionId INTEGER DEFAULT 0, 91 volSessionTime INTEGER DEFAULT 0, 92 JobFiles INTEGER DEFAULT 0, 93 JobBytes BIGINT DEFAULT 0, 94 ReadBytes BIGINT DEFAULT 0, 95 JobErrors INTEGER DEFAULT 0, 96 JobMissingFiles INTEGER DEFAULT 0, 97 PoolId INTEGER DEFAULT 0, 98 FilesetId INTEGER DEFAULT 0, 99 PriorJobid INTEGER DEFAULT 0, 100 PurgedFiles SMALLINT DEFAULT 0, 101 HasBase SMALLINT DEFAULT 0, 102 HasCache SMALLINT DEFAULT 0, 103 Reviewed SMALLINT DEFAULT 0, 104 Comment TEXT, 105 PRIMARY KEY (JobId) 106); 107 108CREATE INDEX job_name_idx ON job (Name); 109 110-- Create a table like Job for long term statistics 111CREATE TABLE JobHisto (LIKE Job); 112CREATE INDEX jobhisto_idx ON JobHisto (StartTime); 113 114CREATE TABLE Location ( 115 LocationId SERIAL NOT NULL, 116 Location TEXT NOT NULL, 117 Cost INTEGER DEFAULT 0, 118 Enabled SMALLINT, 119 PRIMARY KEY (LocationId) 120); 121 122CREATE TABLE Fileset 123( 124 FileSetId SERIAL NOT NULL, 125 Fileset TEXT NOT NULL, 126 FileSetText TEXT DEFAULT '', 127 Md5 TEXT NOT NULL, 128 CreateTime TIMESTAMP WITHOUT TIME ZONE NOT NULL, 129 PRIMARY KEY (filesetid) 130); 131 132CREATE INDEX fileset_name_idx ON fileset (fileset); 133 134CREATE TABLE JobMedia 135( 136 JobMediaId SERIAL NOT NULL, 137 JobId INTEGER NOT NULL, 138 MediaId INTEGER NOT NULL, 139 FirstIndex INTEGER DEFAULT 0, 140 LastIndex INTEGER DEFAULT 0, 141 StartFile INTEGER DEFAULT 0, 142 EndFile INTEGER DEFAULT 0, 143 StartBlock BIGINT DEFAULT 0, 144 EndBlock BIGINT DEFAULT 0, 145 JobBytes NUMERIC(20) DEFAULT 0, 146 VolIndex INTEGER DEFAULT 0, 147 PRIMARY KEY (jobmediaid) 148); 149 150CREATE INDEX job_media_job_id_media_id_idx ON jobmedia (JobId, MediaId); 151 152CREATE TABLE Media 153( 154 MediaId SERIAL NOT NULL, 155 VolumeName TEXT NOT NULL, 156 Slot INTEGER DEFAULT 0, 157 PoolId INTEGER DEFAULT 0, 158 MediaType TEXT NOT NULL, 159 MediaTypeId INTEGER DEFAULT 0, 160 LabelType INTEGER DEFAULT 0, 161 FirstWritten TIMESTAMP WITHOUT TIME ZONE, 162 LastWritten TIMESTAMP WITHOUT TIME ZONE, 163 LabelDate TIMESTAMP WITHOUT TIME ZONE, 164 VolJobs INTEGER DEFAULT 0, 165 VolFiles INTEGER DEFAULT 0, 166 VolBlocks INTEGER DEFAULT 0, 167 VolMounts INTEGER DEFAULT 0, 168 VolBytes BIGINT DEFAULT 0, 169 VolErrors INTEGER DEFAULT 0, 170 VolWrites INTEGER DEFAULT 0, 171 VolCapacityBytes BIGINT DEFAULT 0, 172 VolStatus TEXT NOT NULL 173 CHECK (VolStatus IN ('Full', 'Archive', 'Append', 174 'Recycle', 'Purged', 'Read-Only', 'Disabled', 175 'Error', 'Busy', 'Used', 'Cleaning', 'Scratch')), 176 Enabled SMALLINT DEFAULT 1, 177 Recycle SMALLINT DEFAULT 0, 178 ActionOnPurge SMALLINT DEFAULT 0, 179 VolRetention BIGINT DEFAULT 0, 180 VolUseDuration BIGINT DEFAULT 0, 181 MaxVolJobs INTEGER DEFAULT 0, 182 MaxVolFiles INTEGER DEFAULT 0, 183 MaxVolBytes BIGINT DEFAULT 0, 184 InChanger SMALLINT DEFAULT 0, 185 StorageId INTEGER DEFAULT 0, 186 DeviceId INTEGER DEFAULT 0, 187 MediaAddressing SMALLINT DEFAULT 0, 188 VolReadTime BIGINT DEFAULT 0, 189 VolWriteTime BIGINT DEFAULT 0, 190 EndFile INTEGER DEFAULT 0, 191 EndBlock BIGINT DEFAULT 0, 192 LocationId INTEGER DEFAULT 0, 193 RecycleCount INTEGER DEFAULT 0, 194 MinBlockSize INTEGER DEFAULT 0, 195 MaxBlockSize INTEGER DEFAULT 0, 196 InitialWrite TIMESTAMP WITHOUT TIME ZONE, 197 ScratchPoolId INTEGER DEFAULT 0, 198 RecyclePoolId INTEGER DEFAULT 0, 199 EncryptionKey TEXT, 200 Comment TEXT, 201 PRIMARY KEY (MediaId) 202); 203 204CREATE UNIQUE INDEX media_volumename_id ON Media (VolumeName); 205CREATE INDEX media_poolid_idx ON Media (PoolId); 206 207CREATE TABLE MediaType ( 208 MediaTypeId SERIAL, 209 MediaType TEXT NOT NULL, 210 ReadOnly INTEGER DEFAULT 0, 211 PRIMARY KEY(MediaTypeId) 212); 213 214CREATE TABLE Storage ( 215 StorageId SERIAL, 216 Name TEXT NOT NULL, 217 AutoChanger INTEGER DEFAULT 0, 218 PRIMARY KEY(StorageId) 219); 220 221CREATE TABLE Device ( 222 DeviceId SERIAL, 223 Name TEXT NOT NULL, 224 MediaTypeId INTEGER NOT NULL, 225 StorageId INTEGER NOT NULL, 226 DevMounts INTEGER NOT NULL DEFAULT 0, 227 DevReadBytes BIGINT NOT NULL DEFAULT 0, 228 DevWriteBytes BIGINT NOT NULL DEFAULT 0, 229 DevReadBytesSinceCleaning BIGINT NOT NULL DEFAULT 0, 230 DevWriteBytesSinceCleaning BIGINT NOT NULL DEFAULT 0, 231 DevReadTime BIGINT NOT NULL DEFAULT 0, 232 DevWriteTime BIGINT NOT NULL DEFAULT 0, 233 DevReadTimeSinceCleaning BIGINT NOT NULL DEFAULT 0, 234 DevWriteTimeSinceCleaning BIGINT NOT NULL DEFAULT 0, 235 CleaningDate TIMESTAMP WITHOUT TIME ZONE, 236 CleaningPeriod BIGINT NOT NULL DEFAULT 0, 237 PRIMARY KEY(DeviceId) 238); 239 240CREATE TABLE Pool 241( 242 PoolId SERIAL NOT NULL, 243 Name TEXT NOT NULL, 244 NumVols INTEGER DEFAULT 0, 245 MaxVols INTEGER DEFAULT 0, 246 UseOnce SMALLINT DEFAULT 0, 247 UseCatalog SMALLINT DEFAULT 0, 248 AcceptAnyVolume SMALLINT DEFAULT 0, 249 VolRetention BIGINT DEFAULT 0, 250 VolUseDuration BIGINT DEFAULT 0, 251 MaxVolJobs INTEGER DEFAULT 0, 252 MaxVolFiles INTEGER DEFAULT 0, 253 MaxVolBytes BIGINT DEFAULT 0, 254 AutoPrune SMALLINT DEFAULT 0, 255 Recycle SMALLINT DEFAULT 0, 256 ActionOnPurge SMALLINT DEFAULT 0, 257 PoolType TEXT 258 CHECK (PoolType IN ('Backup', 'Copy', 'Cloned', 'Archive', 259 'Migration', 'Scratch')), 260 LabelType INTEGER DEFAULT 0, 261 LabelFormat TEXT NOT NULL, 262 Enabled SMALLINT DEFAULT 1, 263 ScratchPoolId INTEGER DEFAULT 0, 264 RecyclePoolId INTEGER DEFAULT 0, 265 NextPoolId INTEGER DEFAULT 0, 266 MinBlockSize INTEGER DEFAULT 0, 267 MaxBlockSize INTEGER DEFAULT 0, 268 MigrationHighBytes BIGINT DEFAULT 0, 269 MigrationLowBytes BIGINT DEFAULT 0, 270 MigrationTime BIGINT DEFAULT 0, 271 PRIMARY KEY (PoolId) 272); 273 274CREATE INDEX pool_name_idx ON Pool (Name); 275 276CREATE TABLE Client 277( 278 ClientId SERIAL NOT NULL, 279 Name TEXT NOT NULL, 280 UName TEXT NOT NULL, 281 AutoPrune SMALLINT DEFAULT 0, 282 FileRetention BIGINT DEFAULT 0, 283 JobRetention BIGINT DEFAULT 0, 284 PRIMARY KEY (ClientId) 285); 286 287CREATE UNIQUE INDEX client_name_idx ON Client (Name); 288 289CREATE TABLE Log 290( 291 LogId SERIAL NOT NULL, 292 JobId INTEGER NOT NULL, 293 Time TIMESTAMP WITHOUT TIME ZONE, 294 LogText TEXT NOT NULL, 295 PRIMARY KEY (LogId) 296); 297CREATE INDEX log_name_idx ON Log (JobId); 298 299CREATE TABLE LocationLog ( 300 LocLogId SERIAL NOT NULL, 301 Date TIMESTAMP WITHOUT TIME ZONE, 302 Comment TEXT NOT NULL, 303 MediaId INTEGER DEFAULT 0, 304 LocationId INTEGER DEFAULT 0, 305 NewVolStatus TEXT NOT NULL 306 CHECK (NewVolStatus IN ('Full', 'Archive', 'Append', 307 'Recycle', 'Purged', 'Read-Only', 'Disabled', 308 'Error', 'Busy', 'Used', 'Cleaning', 'Scratch')), 309 newenabled SMALLINT, 310 PRIMARY KEY(LocLogId) 311); 312 313CREATE TABLE counters 314( 315 Counter TEXT NOT NULL, 316 MinValue INTEGER DEFAULT 0, 317 MaxValue INTEGER DEFAULT 0, 318 CurrentValue INTEGER DEFAULT 0, 319 wrapcounter TEXT NOT NULL, 320 PRIMARY KEY (Counter) 321); 322 323CREATE TABLE basefiles 324( 325 BaseId BIGSERIAL NOT NULL, 326 JobId INTEGER NOT NULL, 327 FileId BIGINT NOT NULL, 328 FileIndex INTEGER, 329 BaseJobId INTEGER, 330 PRIMARY KEY (BaseId) 331); 332 333CREATE INDEX basefiles_jobid_idx ON BaseFiles (JobId); 334 335-- This table seems to be obsolete 336-- CREATE TABLE UnsavedFiles 337-- ( 338-- UnsavedId INTEGER NOT NULL, 339-- JobId INTEGER NOT NULL, 340-- PathId INTEGER NOT NULL, 341-- FilenameId INTEGER NOT NULL, 342-- PRIMARY KEY (UnsavedId) 343-- ); 344 345CREATE TABLE PathHierarchy 346( 347 PathId INTEGER NOT NULL, 348 PPathId INTEGER NOT NULL, 349 CONSTRAINT pathhierarchy_pkey PRIMARY KEY (PathId) 350); 351 352CREATE INDEX pathhierarchy_ppathid 353 ON PathHierarchy (PPathId); 354 355CREATE TABLE PathVisibility 356( 357 PathId INTEGER NOT NULL, 358 JobId INTEGER NOT NULL, 359 Size BIGINT DEFAULT 0, 360 Files INTEGER DEFAULT 0, 361 CONSTRAINT pathvisibility_pkey PRIMARY KEY (JobId, PathId) 362); 363 364CREATE TABLE version 365( 366 VersionId INTEGER NOT NULL 367); 368 369CREATE TABLE Status ( 370 JobStatus CHAR(1) NOT NULL, 371 JobStatusLong TEXT, 372 Severity INTEGER, 373 PRIMARY KEY (JobStatus) 374); 375 376CREATE TABLE Quota ( 377 ClientId INTEGER NOT NULL, 378 GraceTime BIGINT DEFAULT 0, 379 QuotaLimit BIGINT DEFAULT 0, 380 PRIMARY KEY (ClientId) 381); 382 383CREATE TABLE NDMPLevelMap ( 384 ClientId INTEGER NOT NULL, 385 FilesetId INTEGER DEFAULT 0, 386 FileSystem TEXT NOT NULL, 387 DumpLevel INTEGER NOT NULL, 388 CONSTRAINT NDMPLevelMap_pkey PRIMARY KEY (ClientId, FilesetId, FileSystem) 389); 390 391CREATE TABLE NDMPJobEnvironment ( 392 JobId INTEGER NOT NULL, 393 FileIndex INTEGER NOT NULL, 394 EnvName TEXT NOT NULL, 395 EnvValue TEXT NOT NULL, 396 CONSTRAINT NDMPJobEnvironment_pkey PRIMARY KEY (JobId, FileIndex, EnvName) 397); 398 399CREATE TABLE DeviceStats ( 400 DeviceId INTEGER DEFAULT 0, 401 SampleTime TIMESTAMP WITHOUT TIME ZONE NOT NULL, 402 ReadTime BIGINT NOT NULL DEFAULT 0, 403 WriteTime BIGINT NOT NULL DEFAULT 0, 404 ReadBytes BIGINT DEFAULT 0, 405 WriteBytes BIGINT DEFAULT 0, 406 SpoolSize BIGINT DEFAULT 0, 407 NumWaiting SMALLINT DEFAULT 0, 408 NumWriters SMALLINT DEFAULT 0, 409 MediaId INTEGER NOT NULL, 410 VolCatBytes BIGINT DEFAULT 0, 411 VolCatFiles BIGINT DEFAULT 0, 412 VolCatBlocks BIGINT DEFAULT 0 413); 414 415CREATE TABLE JobStats ( 416 DeviceId INTEGER DEFAULT 0, 417 SampleTime TIMESTAMP WITHOUT TIME ZONE NOT NULL, 418 JobId INTEGER NOT NULL, 419 JobFiles INTEGER DEFAULT 0, 420 JobBytes BIGINT DEFAULT 0 421); 422 423CREATE TABLE TapeAlerts ( 424 DeviceId INTEGER DEFAULT 0, 425 SampleTime TIMESTAMP WITHOUT TIME ZONE NOT NULL, 426 AlertFlags BIGINT DEFAULT 0 427); 428 429INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 430 ('C', 'Created, not yet running',15); 431INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 432 ('R', 'Running',15); 433INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 434 ('B', 'Blocked',15); 435INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 436 ('T', 'Completed successfully', 10); 437INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 438 ('E', 'Terminated with errors', 25); 439INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 440 ('e', 'Non-fatal error',20); 441INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 442 ('f', 'Fatal error',100); 443INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 444 ('D', 'Verify found differences',15); 445INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 446 ('A', 'Canceled by user',90); 447INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 448 ('I', 'Incomplete job', 15); 449INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 450 ('L', 'Committing data', 15); 451INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 452 ('W', 'Terminated with warnings', 20); 453INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 454 ('l', 'Doing data despooling', 15); 455INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 456 ('q', 'Queued waiting for device', 15); 457INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 458 ('F', 'Waiting for Client',15); 459INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 460 ('S', 'Waiting for Storage daemon',15); 461INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 462 ('m', 'Waiting for new media',15); 463INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 464 ('M', 'Waiting for media mount',15); 465INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 466 ('s', 'Waiting for storage resource',15); 467INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 468 ('j', 'Waiting for job resource',15); 469INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 470 ('c', 'Waiting for client resource',15); 471INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 472 ('d', 'Waiting on maximum jobs',15); 473INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 474 ('t', 'Waiting on start time',15); 475INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 476 ('p', 'Waiting on higher priority jobs',15); 477INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 478 ('a', 'SD despooling attributes',15); 479INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES 480 ('i', 'Doing batch insert file records',15); 481 482-- Initialize Version 483-- DELETE should not be required, 484-- but prevents errors if create script is called multiple times 485DELETE FROM Version WHERE VersionId<=2192; 486INSERT INTO Version (VersionId) VALUES (2192); 487 488-- Make sure we have appropriate permissions 489