SlideShare a Scribd company logo
MYSQL
CRASH
RECOVERY
Dinko Korunić @ CARNet
(Grupa za izradu paketa)
OMG! MySQL je super!!!!!11ž
Dinko Korunić @ CARNet: MySQL Crash Recovery
Reality check
 backup:
◦ potpunost backup procedure i sadržaja?
◦ redovno testiranje restore procedure?
◦ brzina restorea u slučaju katastrofičnog
incidenta?
 master-slave replikacija
◦ postoji li nadzor? - postoje desetine
Nagios/ZenOSS pluginova za lag check!
◦ usporedba master-slave tablica:
mk-table-checksum
Dinko Korunić @ CARNet: MySQL Crash Recovery
Uobičajene metode backupa (1)
 redovni mysqldump:
◦ dnevni/satni/itd, selektivni ili cjelokupni
◦ flush tables with read lock
◦ MyISAM: --read-locks
◦ InnoDB: --single-transaction
◦ spor proces - moguće inkrementalno
kroz binlog:
--single-transaction --flush-
logs --master-data=2 --all-
databases
Dinko Korunić @ CARNet: MySQL Crash Recovery
Uobičajene metode backupa (2)
 druge backup metode:
◦ Bacula: Client Run Before Job
◦ AutoMySQLBackup
 replikacija:
◦ multi-master, master-slave kombinacije (ili
nešto treće) + mysqldump slavea
 Percona XtraBackup / InnoBackupEx:
◦ opis: hot backup / binlog-based backup
◦ streaming, komprimirani backupovi
◦ paralelni backupovi, inkrementali
Dinko Korunić @ CARNet: MySQL Crash Recovery
Uobičajene metode backupa (3)
 Percona XtraBackup / InnoBackupEx:
◦ innobackupex --stream=tar ./ |
ssh user@desthost “cat - >
/data/backups/backup.tar”
◦ backup InnoDB kroz binlog, MyISAM
standardno
◦ restore: kompletno (from the scratch) ili
parcijalno kroz binlog (Point In Time)
◦ gasi slave thread prije i aktivira poslije
◦ preporučena zamjena za mysqldump!
Dinko Korunić @ CARNet: MySQL Crash Recovery
Moguća oštećenja
 MyISAM corruption:
◦ --myisam-recover=backup,force
◦ REPAIR TABLE … USE FRM;
 InnoDB corruption:
◦ u praksi prevencija SEGV...
◦ innodb_force_recovery=4
◦ moguće opcije: 1, 2, 3, 4, ... 5, 6
 binlog corruption
 FRM corruption
Dinko Korunić @ CARNet: MySQL Crash Recovery
Alati za oporavak
 myisamchk: offline
◦ myisamchk -e *.MYI
◦ myisamchk --safe-recover *.MYI
 mysqlcheck (mysqlrepair): online!
◦ CHECK TABLE, REPAIR TABLE,
ANALYZE TABLE, OPTIMIZE TABLE
◦ mysqlcheck -A -r
 alternative:
◦ ako je server stabilan: dump and reload
◦ trikovi: ALTER TABLE ENGINE=…;
Dinko Korunić @ CARNet: MySQL Crash Recovery
Alati za ekstrakciju podataka
 innoinfo
◦ zaostao i neupotrebljiv
 percona-innodb-recovery-tool:
◦ bzr branch lp:percona-innodb-
recovery-tool
◦ sjajan offline alat za InnoDB (korupcija,
neželjeni drop, itd.)
◦ priprema: osnove C, format redaka
(COMPACT ili REDUNDANT), ibdata1 ili
*.idb, definicija tablica, raspon fizičkih
stranica željenog primarnog ključaDinko Korunić @ CARNet: MySQL Crash Recovery
Priprema laboratorija
 mysql server u recovery načinu:
◦ “laboratorij”: kompilirati posljednju inačicu,
pripremiti da radi samo u tekućem/radnom
direktoriju
◦ oporavak tipično iz primarnih ključeva
◦ praktičan problem:
 ikakav select/update/merge uzrokuje SEGV
 undo log purge – uzrokuje finalno brisanje
◦ innodb_force_recovery=4
◦ mysqld_safe --skip-grant-tables
&
Dinko Korunić @ CARNet: MySQL Crash Recovery
Ekstrakcija stranica (1)
 format / tip fizičkih redaka
◦ COMPACT: default MySQL >= 5.0.3
◦ REDUNDANT: starije inačice
◦ identifikacija: SHOW TABLE STATUS
◦ opcionalno: constraints_parser
 page_parser - ekstrakcija svih
stranica iz grupnog ibdata1:
◦ page_parser -5 –f ibdata1
◦ spremi sve stranice (i ID) po individualnim
direktorijima za svaku tablicu
Dinko Korunić @ CARNet: MySQL Crash Recovery
Ekstrakcija stranica (2)
 koji nam raspon stranica treba?
◦ CREATE TABLE innodb_table_monitor (id
int) ENGINE=InnoDB;
◦ MySQL error.log ili konzola
◦ INDEX: name PRIMARY, id 0 286, fields
1/11, type 3
◦ bitan je PK: tražimo 0-286 direktorij
◦ u slučaju *.ibd datoteka, najčešće ne treba
raditi split:
 innodb_file_per_table=1
Dinko Korunić @ CARNet: MySQL Crash Recovery
Spajanje stranica
 spajanje u jednu datoteku:
◦ uspješno pročitane stranice potrebno
spojiti kao pripremu za provjeru
konzistencije i ekstrakciju ispravnih
redaka:
◦ find pages-1246363747/0-286/ -
type f -name '*.page' | sort –n
| xargs cat >
tablica_pages_concat
Dinko Korunić @ CARNet: MySQL Crash Recovery
Definicije / ograničenja (1)
 create_defs.pl - definicije tablica:
◦ korak nakon ekstrakcije stranica, za
identifikaciju ispravnih redaka
◦ potreban aktivan (laboratorij) MySQL
servis
◦ ./create_defs.pl --
host=localhost --user=root --
password=lozinka --db=baza –
table=tablica >
include/table_defs.h
Dinko Korunić @ CARNet: MySQL Crash Recovery
Definicije / ograničenja (2)
 tipični primjer SQL definicije tablice:
◦ CREATE TABLE `t1` ( `ID` int(11), `NAME`
varchar(120), `N_FIELDS` int(10),
PRIMARY KEY (`ID`), KEY `NAME`
(`NAME`)) ENGINE=InnoDB DEFAULT
CHARSET=latin1
 PK:
◦ ID, DB_TRX_ID, DB_ROLL_PTR, NAME,
N_FIELDS
 SK:
◦ NAME, ID (PK!) Dinko Korunić @ CARNet: MySQL Crash Recovery
Definicije / ograničenja (3)
{ /* int(11) unsigned */
name: "ID",
type: FT_UINT,
fixed_length: 4,
has_limits: TRUE,
limits: {
can_be_null: FALSE,
uint_min_val: 0,
uint_max_val:
4294967295ULL
},
can_be_null: FALSE
},
{ /* varchar(120) */
name: "NAME",
type: FT_CHAR,
min_length: 0,
max_length: 120,
has_limits: TRUE,
limits: {
can_be_null: TRUE,
char_min_len: 0,
char_max_len: 120,
char_ascii_only: TRUE
},
can_be_null: TRUE
},
Dinko Korunić @ CARNet: MySQL Crash
Recovery
Definicije / ograničenja (4)
 interni zapisi (nije potrebno mijenjati):
◦ D_TRX_ID – ID zadnje transakcije koja je
uzrokovala taj zapis
◦ DB_ROLL_PTR – pokazivač na undo
record gdje je prethodna verzija retka
◦ DB_ROW_ID – prvo polje u tablicama bez
primarnog ključa
Dinko Korunić @ CARNet: MySQL Crash Recovery
Dohvat ispravnih redaka
 što preciznije definirati ograničenja:
◦ type, fixed_length, can_be_null
◦ has_limits:
 uint_min_val, uint_max_val
 char_min_len, char_max_len, char_ascii_only
 koristi se za constraints_parser
◦ definicije se statički kompiliraju u alat
◦ kod promjene potrebno rekompilirati alat!
◦ ./constraints_parser -5 -f
tablica_pages_concat
◦ izlaz: ime tablice i retciDinko Korunić @ CARNet: MySQL Crash Recovery
Kratki repetitorij
 safe_mysqld, innnodb_recovery=4
 format: REDUNDANT ili COMPACT
 raspon ID-jeva stranica same tablice
 kompiliranje
 ekstrakcija: page_parser
 spajanje u jednu datoteku: find + cat
 priprema definicija: create_defs.pl
 rekompiliranje
 constraints_parser
Dinko Korunić @ CARNet: MySQL Crash Recovery
EOF
 hvala na pažnji
 kompleksno područje, malo vremena,
previše materijala
 pitanja, diskusija
 vidimo se iduće godine!
Dinko Korunić @ CARNet: MySQL Crash Recovery

More Related Content

Viewers also liked

Estrutura atômica II
Estrutura atômica IIEstrutura atômica II
Estrutura atômica II
Hebertty Dantas
 
Gabarito. L1. quí 3. aulas 01-04
Gabarito. L1. quí 3. aulas 01-04Gabarito. L1. quí 3. aulas 01-04
Gabarito. L1. quí 3. aulas 01-04
Hebertty Dantas
 
Estrutura atômica I
Estrutura atômica IEstrutura atômica I
Estrutura atômica I
Hebertty Dantas
 
Substâncias, Misturas e Sistemas
Substâncias, Misturas e SistemasSubstâncias, Misturas e Sistemas
Substâncias, Misturas e Sistemas
Hebertty Dantas
 
Gabartito-SAS-L1-Q1-A1-3
Gabartito-SAS-L1-Q1-A1-3Gabartito-SAS-L1-Q1-A1-3
Gabartito-SAS-L1-Q1-A1-3
Hebertty Dantas
 
Black Tea and Rosewater Perfume
Black Tea and Rosewater PerfumeBlack Tea and Rosewater Perfume
Black Tea and Rosewater Perfume
Elise (Eijadi) Cole
 
Tempo de amolar o machado
Tempo de amolar o machadoTempo de amolar o machado
Tempo de amolar o machado
Helio Cruz
 
Reforestation
ReforestationReforestation
Reforestation
Néstor De La Torre
 
закон всемирного тяготения
закон всемирного тяготениязакон всемирного тяготения
закон всемирного тяготения
Kate Gulyaeva
 
μπρεγκασι αντελα
μπρεγκασι αντελαμπρεγκασι αντελα
μπρεγκασι αντελα
Daisy Anastasia Leonardou
 
ντουλιας θεοφανης
ντουλιας θεοφανηςντουλιας θεοφανης
ντουλιας θεοφανης
Daisy Anastasia Leonardou
 
ψαρρας γιωργος
ψαρρας γιωργοςψαρρας γιωργος
ψαρρας γιωργος
Daisy Anastasia Leonardou
 
παπαδοπουλου μελινα
παπαδοπουλου μελιναπαπαδοπουλου μελινα
παπαδοπουλου μελινα
Daisy Anastasia Leonardou
 
ψαρακη χρυσα
ψαρακη χρυσαψαρακη χρυσα
ψαρακη χρυσα
Daisy Anastasia Leonardou
 
πιτερου σωτηρια
πιτερου σωτηριαπιτερου σωτηρια
πιτερου σωτηρια
Daisy Anastasia Leonardou
 
μπραγκασι αρελντο
μπραγκασι αρελντομπραγκασι αρελντο
μπραγκασι αρελντο
Daisy Anastasia Leonardou
 

Viewers also liked (20)

T-Mobile-DNS
T-Mobile-DNST-Mobile-DNS
T-Mobile-DNS
 
DORS2010-Dinko
DORS2010-DinkoDORS2010-Dinko
DORS2010-Dinko
 
Estrutura atômica II
Estrutura atômica IIEstrutura atômica II
Estrutura atômica II
 
Gabarito. L1. quí 3. aulas 01-04
Gabarito. L1. quí 3. aulas 01-04Gabarito. L1. quí 3. aulas 01-04
Gabarito. L1. quí 3. aulas 01-04
 
Estrutura atômica I
Estrutura atômica IEstrutura atômica I
Estrutura atômica I
 
Substâncias, Misturas e Sistemas
Substâncias, Misturas e SistemasSubstâncias, Misturas e Sistemas
Substâncias, Misturas e Sistemas
 
Gabartito-SAS-L1-Q1-A1-3
Gabartito-SAS-L1-Q1-A1-3Gabartito-SAS-L1-Q1-A1-3
Gabartito-SAS-L1-Q1-A1-3
 
Black Tea and Rosewater Perfume
Black Tea and Rosewater PerfumeBlack Tea and Rosewater Perfume
Black Tea and Rosewater Perfume
 
Tempo de amolar o machado
Tempo de amolar o machadoTempo de amolar o machado
Tempo de amolar o machado
 
DNS-prirucnik
DNS-prirucnikDNS-prirucnik
DNS-prirucnik
 
ITshowoff-Dinko
ITshowoff-DinkoITshowoff-Dinko
ITshowoff-Dinko
 
Reforestation
ReforestationReforestation
Reforestation
 
закон всемирного тяготения
закон всемирного тяготениязакон всемирного тяготения
закон всемирного тяготения
 
μπρεγκασι αντελα
μπρεγκασι αντελαμπρεγκασι αντελα
μπρεγκασι αντελα
 
ντουλιας θεοφανης
ντουλιας θεοφανηςντουλιας θεοφανης
ντουλιας θεοφανης
 
ψαρρας γιωργος
ψαρρας γιωργοςψαρρας γιωργος
ψαρρας γιωργος
 
παπαδοπουλου μελινα
παπαδοπουλου μελιναπαπαδοπουλου μελινα
παπαδοπουλου μελινα
 
ψαρακη χρυσα
ψαρακη χρυσαψαρακη χρυσα
ψαρακη χρυσα
 
πιτερου σωτηρια
πιτερου σωτηριαπιτερου σωτηρια
πιτερου σωτηρια
 
μπραγκασι αρελντο
μπραγκασι αρελντομπραγκασι αρελντο
μπραγκασι αρελντο
 

Similar to CUC2011-Dinko

[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
Stipe Predanic
 
CUC2010: Linux datotecni sustavi
CUC2010: Linux datotecni sustaviCUC2010: Linux datotecni sustavi
CUC2010: Linux datotecni sustavi
Dinko Korunic
 
Replikacija u bazama podataka
Replikacija u bazama podatakaReplikacija u bazama podataka
Replikacija u bazama podataka
Vatroslav Mileusnić
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Clone
guest9c64c8c
 

Similar to CUC2011-Dinko (6)

DORS2011-Dinko
DORS2011-DinkoDORS2011-Dinko
DORS2011-Dinko
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
CUC2010-Dinko
CUC2010-DinkoCUC2010-Dinko
CUC2010-Dinko
 
CUC2010: Linux datotecni sustavi
CUC2010: Linux datotecni sustaviCUC2010: Linux datotecni sustavi
CUC2010: Linux datotecni sustavi
 
Replikacija u bazama podataka
Replikacija u bazama podatakaReplikacija u bazama podataka
Replikacija u bazama podataka
 
R11 Vadas One Click Clone
R11 Vadas One Click CloneR11 Vadas One Click Clone
R11 Vadas One Click Clone
 

More from Dinko Korunic

VSS2014-kriminalitet
VSS2014-kriminalitetVSS2014-kriminalitet
VSS2014-kriminalitetDinko Korunic
 
VSS predavanje: Oblici racunalnog kriminaliteta
VSS predavanje: Oblici racunalnog kriminalitetaVSS predavanje: Oblici racunalnog kriminaliteta
VSS predavanje: Oblici racunalnog kriminaliteta
Dinko Korunic
 
FSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacijaFSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacija
Dinko Korunic
 

More from Dinko Korunic (6)

Tru64-Mreza
Tru64-MrezaTru64-Mreza
Tru64-Mreza
 
FSEC2011-Dinko
FSEC2011-DinkoFSEC2011-Dinko
FSEC2011-Dinko
 
VSS2014-kriminalitet
VSS2014-kriminalitetVSS2014-kriminalitet
VSS2014-kriminalitet
 
MTA-testiranje
MTA-testiranjeMTA-testiranje
MTA-testiranje
 
VSS predavanje: Oblici racunalnog kriminaliteta
VSS predavanje: Oblici racunalnog kriminalitetaVSS predavanje: Oblici racunalnog kriminaliteta
VSS predavanje: Oblici racunalnog kriminaliteta
 
FSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacijaFSEC2011: Reverzni inzenjering Android aplikacija
FSEC2011: Reverzni inzenjering Android aplikacija
 

CUC2011-Dinko

  • 1. MYSQL CRASH RECOVERY Dinko Korunić @ CARNet (Grupa za izradu paketa)
  • 2. OMG! MySQL je super!!!!!11ž Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 3. Reality check  backup: ◦ potpunost backup procedure i sadržaja? ◦ redovno testiranje restore procedure? ◦ brzina restorea u slučaju katastrofičnog incidenta?  master-slave replikacija ◦ postoji li nadzor? - postoje desetine Nagios/ZenOSS pluginova za lag check! ◦ usporedba master-slave tablica: mk-table-checksum Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 4. Uobičajene metode backupa (1)  redovni mysqldump: ◦ dnevni/satni/itd, selektivni ili cjelokupni ◦ flush tables with read lock ◦ MyISAM: --read-locks ◦ InnoDB: --single-transaction ◦ spor proces - moguće inkrementalno kroz binlog: --single-transaction --flush- logs --master-data=2 --all- databases Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 5. Uobičajene metode backupa (2)  druge backup metode: ◦ Bacula: Client Run Before Job ◦ AutoMySQLBackup  replikacija: ◦ multi-master, master-slave kombinacije (ili nešto treće) + mysqldump slavea  Percona XtraBackup / InnoBackupEx: ◦ opis: hot backup / binlog-based backup ◦ streaming, komprimirani backupovi ◦ paralelni backupovi, inkrementali Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 6. Uobičajene metode backupa (3)  Percona XtraBackup / InnoBackupEx: ◦ innobackupex --stream=tar ./ | ssh user@desthost “cat - > /data/backups/backup.tar” ◦ backup InnoDB kroz binlog, MyISAM standardno ◦ restore: kompletno (from the scratch) ili parcijalno kroz binlog (Point In Time) ◦ gasi slave thread prije i aktivira poslije ◦ preporučena zamjena za mysqldump! Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 7. Moguća oštećenja  MyISAM corruption: ◦ --myisam-recover=backup,force ◦ REPAIR TABLE … USE FRM;  InnoDB corruption: ◦ u praksi prevencija SEGV... ◦ innodb_force_recovery=4 ◦ moguće opcije: 1, 2, 3, 4, ... 5, 6  binlog corruption  FRM corruption Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 8. Alati za oporavak  myisamchk: offline ◦ myisamchk -e *.MYI ◦ myisamchk --safe-recover *.MYI  mysqlcheck (mysqlrepair): online! ◦ CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE ◦ mysqlcheck -A -r  alternative: ◦ ako je server stabilan: dump and reload ◦ trikovi: ALTER TABLE ENGINE=…; Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 9. Alati za ekstrakciju podataka  innoinfo ◦ zaostao i neupotrebljiv  percona-innodb-recovery-tool: ◦ bzr branch lp:percona-innodb- recovery-tool ◦ sjajan offline alat za InnoDB (korupcija, neželjeni drop, itd.) ◦ priprema: osnove C, format redaka (COMPACT ili REDUNDANT), ibdata1 ili *.idb, definicija tablica, raspon fizičkih stranica željenog primarnog ključaDinko Korunić @ CARNet: MySQL Crash Recovery
  • 10. Priprema laboratorija  mysql server u recovery načinu: ◦ “laboratorij”: kompilirati posljednju inačicu, pripremiti da radi samo u tekućem/radnom direktoriju ◦ oporavak tipično iz primarnih ključeva ◦ praktičan problem:  ikakav select/update/merge uzrokuje SEGV  undo log purge – uzrokuje finalno brisanje ◦ innodb_force_recovery=4 ◦ mysqld_safe --skip-grant-tables & Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 11. Ekstrakcija stranica (1)  format / tip fizičkih redaka ◦ COMPACT: default MySQL >= 5.0.3 ◦ REDUNDANT: starije inačice ◦ identifikacija: SHOW TABLE STATUS ◦ opcionalno: constraints_parser  page_parser - ekstrakcija svih stranica iz grupnog ibdata1: ◦ page_parser -5 –f ibdata1 ◦ spremi sve stranice (i ID) po individualnim direktorijima za svaku tablicu Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 12. Ekstrakcija stranica (2)  koji nam raspon stranica treba? ◦ CREATE TABLE innodb_table_monitor (id int) ENGINE=InnoDB; ◦ MySQL error.log ili konzola ◦ INDEX: name PRIMARY, id 0 286, fields 1/11, type 3 ◦ bitan je PK: tražimo 0-286 direktorij ◦ u slučaju *.ibd datoteka, najčešće ne treba raditi split:  innodb_file_per_table=1 Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 13. Spajanje stranica  spajanje u jednu datoteku: ◦ uspješno pročitane stranice potrebno spojiti kao pripremu za provjeru konzistencije i ekstrakciju ispravnih redaka: ◦ find pages-1246363747/0-286/ - type f -name '*.page' | sort –n | xargs cat > tablica_pages_concat Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 14. Definicije / ograničenja (1)  create_defs.pl - definicije tablica: ◦ korak nakon ekstrakcije stranica, za identifikaciju ispravnih redaka ◦ potreban aktivan (laboratorij) MySQL servis ◦ ./create_defs.pl -- host=localhost --user=root -- password=lozinka --db=baza – table=tablica > include/table_defs.h Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 15. Definicije / ograničenja (2)  tipični primjer SQL definicije tablice: ◦ CREATE TABLE `t1` ( `ID` int(11), `NAME` varchar(120), `N_FIELDS` int(10), PRIMARY KEY (`ID`), KEY `NAME` (`NAME`)) ENGINE=InnoDB DEFAULT CHARSET=latin1  PK: ◦ ID, DB_TRX_ID, DB_ROLL_PTR, NAME, N_FIELDS  SK: ◦ NAME, ID (PK!) Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 16. Definicije / ograničenja (3) { /* int(11) unsigned */ name: "ID", type: FT_UINT, fixed_length: 4, has_limits: TRUE, limits: { can_be_null: FALSE, uint_min_val: 0, uint_max_val: 4294967295ULL }, can_be_null: FALSE }, { /* varchar(120) */ name: "NAME", type: FT_CHAR, min_length: 0, max_length: 120, has_limits: TRUE, limits: { can_be_null: TRUE, char_min_len: 0, char_max_len: 120, char_ascii_only: TRUE }, can_be_null: TRUE }, Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 17. Definicije / ograničenja (4)  interni zapisi (nije potrebno mijenjati): ◦ D_TRX_ID – ID zadnje transakcije koja je uzrokovala taj zapis ◦ DB_ROLL_PTR – pokazivač na undo record gdje je prethodna verzija retka ◦ DB_ROW_ID – prvo polje u tablicama bez primarnog ključa Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 18. Dohvat ispravnih redaka  što preciznije definirati ograničenja: ◦ type, fixed_length, can_be_null ◦ has_limits:  uint_min_val, uint_max_val  char_min_len, char_max_len, char_ascii_only  koristi se za constraints_parser ◦ definicije se statički kompiliraju u alat ◦ kod promjene potrebno rekompilirati alat! ◦ ./constraints_parser -5 -f tablica_pages_concat ◦ izlaz: ime tablice i retciDinko Korunić @ CARNet: MySQL Crash Recovery
  • 19. Kratki repetitorij  safe_mysqld, innnodb_recovery=4  format: REDUNDANT ili COMPACT  raspon ID-jeva stranica same tablice  kompiliranje  ekstrakcija: page_parser  spajanje u jednu datoteku: find + cat  priprema definicija: create_defs.pl  rekompiliranje  constraints_parser Dinko Korunić @ CARNet: MySQL Crash Recovery
  • 20. EOF  hvala na pažnji  kompleksno područje, malo vremena, previše materijala  pitanja, diskusija  vidimo se iduće godine! Dinko Korunić @ CARNet: MySQL Crash Recovery