source: trunk/www/backup.php@ 38

Last change on this file since 38 was 38, checked in by george, 16 years ago
  • Opraveno: Odemčení serveru při dokončení zálohování.
  • Upraveno: Uchovávej v databázi standardní výstup a chybový výstup prováděných úloh.
  • Přidáno: Rozpracovaná třída pro záznam informací pro potřeby grafů.
File size: 4.2 KB
Line 
1<?php
2
3class Backup extends Module
4{
5 var $Id;
6 var $Tash;
7
8 function __construct($Database, $Id)
9 {
10 $this->Database = $Database;
11 $this->Task = new Task($Database);
12 $this->Id = $Id;
13 $DbResult = $this->Database->query('SELECT * FROM `Backup` WHERE `Id`='.$Id);
14 if($DbResult->num_rows > 0) $this->Backup = $DbResult->fetch_assoc();
15 else $this->Backup = array();
16 }
17
18 function Restore()
19 {
20 $ServerId = $this->Backup['Server'];
21 $this->Task->Add('Obnovení databáze', array(
22 'php www/shell.php ServerLock '.$ServerId,
23 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_mangos -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_mangos',
24 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_characters -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_characters',
25 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_realmd -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_realmd',
26 'mysql --silent --skip-column-names -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_scriptdev2 -e "show tables" | gawk \'{print "drop table " $1 ";"}\' | mysql -u server'.$ServerId.' -pserver'.$ServerId.' server'.$ServerId.'_scriptdev2',
27 'mkdir temp/wowhosting',
28 'tar -xjf backup/wowhosting-'.$this->Id.'.tar.bz2 -C temp',
29 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_characters < temp/wowhosting/characters.sql',
30 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_realmd < temp/wowhosting/realmd.sql',
31 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_mangos < temp/wowhosting/mangos.sql',
32 'mysql --user=server'.$ServerId.' --password=server'.$ServerId.' server'.$ServerId.'_scriptdev2 < temp/wowhosting/scriptdev2.sql',
33 'rm -rf temp/wowhosting',
34 'php www/shell.php ServerDatabaseChange '.$ServerId.' '.$this->Backup['Database'],
35 'php www/shell.php ServerUnLock '.$ServerId,
36 ));
37 return('Úloha obnovení databáze ze zálohy zařazena do fronty.');
38 }
39
40 function Create($ServerId)
41 {
42 $Server = new Server($this->Database, $ServerId);
43 $Description = 'MaNGOS r'.$Server->Server['Database']['Emulator']['Revision'].', UDB r'.$Server->Server['Database']['Revision'].', SD2 r'.$Server->Server['Database']['ScriptDev2Revision'].', Client '.$Server->Server['Database']['Emulator']['Client']['Version'];
44 $this->Database->insert('Backup', array('Server' => $ServerId, 'Time' => 'NOW()', 'Description' => $Description, 'Lock' => 1, 'Database' => $Server->Server['Database']['Id']));
45 $this->Id = $this->Database->insert_id;
46 $this->Task->Add('Záloha databáze serveru', array(
47 'php www/shell.php ServerLock '.$ServerId,
48 'mkdir temp/wowhosting',
49 'mysqldump --user=server'.$ServerId.' --password=server'.$ServerId.' --opt server'.$ServerId.'_characters > temp/wowhosting/characters.sql',
50 'mysqldump --user=server'.$ServerId.' --password=server'.$ServerId.' --opt server'.$ServerId.'_realmd > temp/wowhosting/realmd.sql',
51 'mysqldump --user=server'.$ServerId.' --password=server'.$ServerId.' --opt server'.$ServerId.'_mangos > temp/wowhosting/mangos.sql',
52 'mysqldump --user=server'.$ServerId.' --password=server'.$ServerId.' --opt server'.$ServerId.'_scriptdev2 > temp/wowhosting/scriptdev2.sql',
53 'cd temp',
54 'tar -c -j wowhosting > ../backup/wowhosting-'.$this->Id.'.tar.bz2',
55 'rm -rf wowhosting',
56 'cd ..',
57 'php www/shell.php BackupUnLock '.$this->Id,
58 'php www/shell.php ServerUnLock '.$ServerId,
59 ));
60 return('Úloha zálohování byla zařazena do fronty.');
61 }
62
63 function Lock()
64 {
65 $this->Database->update('Backup', 'Id='.$this->Id, array('Lock' => 1));
66 }
67
68 function UnLock()
69 {
70 $this->Database->update('Backup', 'Id='.$this->Id, array('Lock' => 0));
71 }
72}
73
74?>
Note: See TracBrowser for help on using the repository browser.