www.fromdual.com
1 / 52
Der Datenbank-Backup ist gemacht -
was nun ?
DOAG-Konferenz 2015, Nürnberg
Jörg Brühe
Senior Suppo...
www.fromdual.com
2 / 52
FromDual GmbH
Support
remote-DBA
Schulung
Beratung
www.fromdual.com
3 / 52
Zur Person
● Entwicklung verteiltes SQL-DBMS:
Unix-Portierung,
Anschluss Archivierungs-Tools (ADSM...
www.fromdual.com
4 / 52
Inhalt
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständ...
www.fromdual.com
5 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nutz...
www.fromdual.com
6 / 52
Zweck des DB-Backup
Gilt für beliebige Datenbanksysteme:
● Firma / Mensch ist auf Daten angewiesen...
www.fromdual.com
7 / 52
Schadensursachen z.B. ...
● Hardware-Defekte
Laufwerk, Controller, Netzteil, ...
● Software-Defekt...
www.fromdual.com
8 / 52
Risiko-Annahmen
Berücksichtigte Ereignisse
● Individuelle Entscheidung
● Abhängig vom Geschäftszwe...
www.fromdual.com
9 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nutz...
www.fromdual.com
10 / 52
Weitere Einfluss-Faktoren
Individuelle Prüfung nötig:
● Wie sind die Abläufe?
(z.B. Papier, Telef...
www.fromdual.com
11 / 52
Backup-Strategie
Ergibt sich aus technischen Möglichkeiten,
Risiko-Annahmen, anderen Einfluss-Fak...
www.fromdual.com
12 / 52
Zweck des DB-Backup
Datenverlust verhindern
● ... durch Restore (Recovery)
● ... gemäß Anforderun...
www.fromdual.com
13 / 52
Schrödingers Backup
„Der Zustand jedes Backup
ist solange unbestimmt,
bis er bei einem Restore
ei...
www.fromdual.com
14 / 52
Risiken für Recovery z.B. ...
● Backup nicht für Recovery tauglich
● Defekter Backup erzeugt
(HW,...
www.fromdual.com
15 / 52
Verifikation – wie?
● Nur erfolgreiche Recovery beweist
grundsätzliche Tauglichkeit der Techniken...
www.fromdual.com
16 / 52
Verifikation – wo?
● Produktiv-Backup enthält sensible Daten
● Produktive DB darf nicht betroffen...
www.fromdual.com
17 / 52
Separate Recovery-Instanz
Backup
Recovery-
Instanz
Produktions-
Instanz
Restore
www.fromdual.com
18 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nut...
www.fromdual.com
19 / 52
Zustand nach Recovery-Test
● Produktiv-DB
● mit Echt-Daten (aktuell)
● im laufenden Betrieb (Zugr...
www.fromdual.com
20 / 52
Kopie der Echt-Daten
● ... unterliegt dem Datenschutz
● ... taugt für Statistik, Abrechnung, ...
...
www.fromdual.com
21 / 52
Nutzungs-Beispiele (1)
● Abrechnung der letzten Periode
(Woche, Monat, ...)
● Statistik / Report,...
www.fromdual.com
22 / 52
Nutzungs-Beispiele (2)
● Export in anderem Format, z.B.
● CSV für Spreadsheet
● Mysqldump (Klarte...
www.fromdual.com
23 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nut...
www.fromdual.com
24 / 52
Stichworte zum Datenschutz
● Personenbezogene Daten
z.B. Name, Adresse, Telefon, E-Mail, Konto
● ...
www.fromdual.com
25 / 52
Anonymisieren
Restore-Instanz hat SQL verfügbar:
● UPDATE kunde
SET name = 'Mustermann',
    vorn...
www.fromdual.com
26 / 52
Eigeninitiative
● Pessimistische Annahme:
Die anderen vergessen den Datzenschutz!
● Ausländische ...
www.fromdual.com
27 / 52
Hoffentlich überflüssig
● Langfristiges (Firmen-) Interesse
● vgl. aktuelle Skandale und Bußgelde...
www.fromdual.com
28 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nut...
www.fromdual.com
29 / 52
Entwickler-Wünsche
● Analyse der Feature-Nutzung
● Test mit Echt-Daten
Volumen, Werte-Verteilung
...
www.fromdual.com
30 / 52
Probleme / Konflikte
● Datenschutz-Recht:
● Gesetzliche Verpflichtung
● Zweckbindung
● Löschung
●...
www.fromdual.com
31 / 52
Ausweg / Lösung
● In Recovery-Instanz
● löschen
● anonymisieren
● nur selektiv exportieren
● Expo...
www.fromdual.com
32 / 52
Export zur Entwicklung
Backup
Produktions-
Instanz
Restore
Entwicklungs-
Instanz
update;
delete;
...
www.fromdual.com
33 / 52
Datenbank-Backup – welcher Zweck?
Tauglichkeit des Backup, Verifikation
Echtdaten vollständig nut...
www.fromdual.com
34 / 52
Vorbemerkung
● Beispiele / Code für MySQL,
bitte selbst an Firmen-Regeln anpassen
und für anderes...
www.fromdual.com
35 / 52
Automatisierung: Prinzipien
● Keine manuelle Ausführung von Routine-
Aufgaben
● Erfolgs-Kontrolle...
www.fromdual.com
36 / 52
Automatisierung: Teile
● Backup (lokale MySQL-Instanz)
● Purge Log
● Restore (Sicherung vorgegebe...
www.fromdual.com
37 / 52
Skript: Backup (1)
● Sichert DB-Instanz gemäß Backup-Strategie
● Generiert Namen mit Datum/Uhrzei...
www.fromdual.com
38 / 52
Skript: Backup (2)
● Hilfreich: Tabelle „backup_history“
mit Timestamp und Exit-Code
● „MySQL Ent...
www.fromdual.com
39 / 52
Skript: Purge Log (1)
Bis zum vorletzten erfolgreichen Backup löschen:
TIMESTAMP=`echo
  "select ...
www.fromdual.com
40 / 52
Skript: Purge Log (2)
Ohne Tabelle – fest 26 Stunden zurück:
TIMESTAMP=`echo
  "select subtime( n...
www.fromdual.com
41 / 52
Skript: Restore
● Name der Sicherung wird als Parameter
übergeben
● Rückfrage, falls nicht auf Re...
www.fromdual.com
42 / 52
Skript: Restore-Wrapper (1)
● Sorgt dafür, dass die Sicherungen aller DB-
Instanzen der Test-Reco...
www.fromdual.com
43 / 52
Skript: Restore-Wrapper (2)
HOSTLIST=( `ls ­d ... |
     grep ­iv ...` ) 
NUMHOSTS=${#HOSTLIST[@]...
www.fromdual.com
44 / 52
Code: Welche DB/Schema?
DBLIST=`cd /DISK ; find * ­type d`
for DB in $DBLIST
do
    if [ "$DB" = ...
www.fromdual.com
45 / 52
Code: User/Passwort zu DB
Annahme: Benutzer existiert schon in der DB und hat
die nötigen Privile...
www.fromdual.com
46 / 52
Code: DB behandeln?
DB ohne Anonymisierungs-Nutzer wird nicht behandelt
mysql ­u $DB_USR ­p$DB_PW...
www.fromdual.com
47 / 52
Code: Skript suchen
for ACTION in pruef anonym export ; do
   BASE=/pfad/zu/script­${ACTION}­${DB...
www.fromdual.com
48 / 52
Skript: Anonymisieren (1)
Überflüssige Tabellen leeren:
echo "use information_schema ;
  select T...
www.fromdual.com
49 / 52
Skript: Anonymisieren (2)
Personenbezogene Daten:
mysql $CONNECT $DB <<'eof'
UPDATE t1 SET
  paym...
www.fromdual.com
50 / 52
Code: „select count(*)“
# Get a list of all tables, feed it into a loop
# that generates "select ...
www.fromdual.com
51 / 52
Code: „show create table“
# Get a list of all tables, feed it into a loop
# that generates "show ...
www.fromdual.com
52 / 52
Q & A
Fragen ?
Diskussion?
Wir haben Zeit für ein persönliches Gespräch ...
● FromDual bietet neu...
Nächste SlideShare
Wird geladen in …5
×

Der Datenbank-Backup ist gemacht - was nun?

334 Aufrufe

Veröffentlicht am

* Datenbank-Backup – welcher Zweck?
* Tauglichkeit des Backup, Verifikation
* Echtdaten vollständig nutzen
* Dem Datenschutz genügen
* Material für die Entwicklung
* Automatisierung

Veröffentlicht in: Präsentationen & Vorträge
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
334
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Der Datenbank-Backup ist gemacht - was nun?

  1. 1. www.fromdual.com 1 / 52 Der Datenbank-Backup ist gemacht - was nun ? DOAG-Konferenz 2015, Nürnberg Jörg Brühe Senior Support Engineer, FromDual GmbH joerg.bruehe@fromdual.com
  2. 2. www.fromdual.com 2 / 52 FromDual GmbH Support remote-DBA Schulung Beratung
  3. 3. www.fromdual.com 3 / 52 Zur Person ● Entwicklung verteiltes SQL-DBMS: Unix-Portierung, Anschluss Archivierungs-Tools (ADSM, NetWorker) ● MySQL Build Team: Release-Builds inkl. Tests, Paketierung, Skripte, ... ● DBA: MySQL für eine Web-Plattform (Master-Master-Replikation) ● Support-Ingenieur (FromDual): Support + Remote-DBA für MySQL / MariaDB / Percona mit oder ohne Galera Cluster
  4. 4. www.fromdual.com 4 / 52 Inhalt Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  5. 5. www.fromdual.com 5 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  6. 6. www.fromdual.com 6 / 52 Zweck des DB-Backup Gilt für beliebige Datenbanksysteme: ● Firma / Mensch ist auf Daten angewiesen (finanziell, juristisch oder emotional) ● Datenverlust kann Betrieb verhindern ● „Wenn die Daten nicht gesichert wurden, dann sind sie auch nicht wichtig“
  7. 7. www.fromdual.com 7 / 52 Schadensursachen z.B. ... ● Hardware-Defekte Laufwerk, Controller, Netzteil, ... ● Software-Defekte DBMS, Betriebssystem, Anwendung, ... ● Fehlbedienung / Sabotage delete from T; commit;  / rm ­fr / ● Katastrophe Brand, Hochwasser, Unfall, ...
  8. 8. www.fromdual.com 8 / 52 Risiko-Annahmen Berücksichtigte Ereignisse ● Individuelle Entscheidung ● Abhängig vom Geschäftszweck ● Abhängig von Technik und Lage Setzen Anforderungen an Backup z.B. Offsite-Speicherung nötig ja/nein?
  9. 9. www.fromdual.com 9 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  10. 10. www.fromdual.com 10 / 52 Weitere Einfluss-Faktoren Individuelle Prüfung nötig: ● Wie sind die Abläufe? (z.B. Papier, Telefon oder Online-Änderungen?) ● Welche technischen, kommerziellen und juristischen Randbedingungen? (z.B. Replikation von Daten und Log?) Setzen Anforderungen an Backup (z.B. Point-in-Time-Recovery gefordert ja/nein? Dafür separate Log-Sicherung nötig ja/nein?)
  11. 11. www.fromdual.com 11 / 52 Backup-Strategie Ergibt sich aus technischen Möglichkeiten, Risiko-Annahmen, anderen Einfluss-Faktoren und Kosten: ● Art, Umfang, Häufigkeit (physisch vs logisch; mit/ohne Log; ...) ● Benutztes Tool ● Ablage / Speicherung ● Aufbewahrungs-Dauer
  12. 12. www.fromdual.com 12 / 52 Zweck des DB-Backup Datenverlust verhindern ● ... durch Restore (Recovery) ● ... gemäß Anforderungen ● ... bei allen (betrachteten) Risiken Backup hat nur dann seinen Zweck erfüllt, wenn Restore (Recovery) erfolgreich ist => Prüfkriterium des Backup
  13. 13. www.fromdual.com 13 / 52 Schrödingers Backup „Der Zustand jedes Backup ist solange unbestimmt, bis er bei einem Restore eingesetzt wird.“ (u.a. Karoly Nagy, Vortrag auf „Percona Live Europe 2015“)
  14. 14. www.fromdual.com 14 / 52 Risiken für Recovery z.B. ... ● Backup nicht für Recovery tauglich ● Defekter Backup erzeugt (HW, SW, Netz, Platte voll, ...) ● Backup nach Ablage defekt / unerreichbar ● Recovery-Prozedur fehlerhaft / unpassend ● Recovery scheitert an System-Zustand (HW, SW, Netz, Platte voll, ...)
  15. 15. www.fromdual.com 15 / 52 Verifikation – wie? ● Nur erfolgreiche Recovery beweist grundsätzliche Tauglichkeit der Techniken von Backup und Recovery ● Kontrolle muss Routine-Aktion sein ● Kein Limit nach oben: Prüfung von Schema, Satz-Zahlen, Inhalten, Benutzer, Privilegien, ... ist möglich
  16. 16. www.fromdual.com 16 / 52 Verifikation – wo? ● Produktiv-Backup enthält sensible Daten ● Produktive DB darf nicht betroffen sein Nötig: Eigenes Recovery-System in Produktion, das für jede Produktiv-DB hinreichend groß ist
  17. 17. www.fromdual.com 17 / 52 Separate Recovery-Instanz Backup Recovery- Instanz Produktions- Instanz Restore
  18. 18. www.fromdual.com 18 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  19. 19. www.fromdual.com 19 / 52 Zustand nach Recovery-Test ● Produktiv-DB ● mit Echt-Daten (aktuell) ● im laufenden Betrieb (Zugriffe, Last, laufende Änderungen) ● Recovery-DB ● mit Echt-Daten (vom Backup-Zeitpunkt) ● auf separatem System (Leerlauf, stabil)
  20. 20. www.fromdual.com 20 / 52 Kopie der Echt-Daten ● ... unterliegt dem Datenschutz ● ... taugt für Statistik, Abrechnung, ... ● ... erlaubt zuverlässige Messung von z.B. Schema-Änderungen („create index“, ...) (ggfs. HW-Unterschiede beachten)
  21. 21. www.fromdual.com 21 / 52 Nutzungs-Beispiele (1) ● Abrechnung der letzten Periode (Woche, Monat, ...) ● Statistik / Report, besonders wenn ohne Index-Unterstützung ● Kontrolle auf Fehlerfreiheit mysqldump > /dev/null für vollständiges Lesen ● ...
  22. 22. www.fromdual.com 22 / 52 Nutzungs-Beispiele (2) ● Export in anderem Format, z.B. ● CSV für Spreadsheet ● Mysqldump (Klartext) für Transfer ● ... Jede nur-lesende nicht-sofortige Nutzung der Echtdaten kann auf den Recovery-Server verlagert werden.
  23. 23. www.fromdual.com 23 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  24. 24. www.fromdual.com 24 / 52 Stichworte zum Datenschutz ● Personenbezogene Daten z.B. Name, Adresse, Telefon, E-Mail, Konto ● Zweckbindung der Daten ● Datensparsamkeit ● Fristen für Aufbewahrung / Löschung ● Abstimmung mit Datenschutz-Beauftragtem ● Im Zweifel: juristischen Rat holen
  25. 25. www.fromdual.com 25 / 52 Anonymisieren Restore-Instanz hat SQL verfügbar: ● UPDATE kunde SET name = 'Mustermann',     vorname = 'Max' WHERE anrede = 'Herr'; ● UPDATE kontakte SET mail = concat( md5(mail), '@provider.tld');
  26. 26. www.fromdual.com 26 / 52 Eigeninitiative ● Pessimistische Annahme: Die anderen vergessen den Datzenschutz! ● Ausländische Kollegen ... ● Als DBA selbst das Schema prüfen, bei Zweifeln nachfragen ● Datenschutz-Belehrung beachten
  27. 27. www.fromdual.com 27 / 52 Hoffentlich überflüssig ● Langfristiges (Firmen-) Interesse ● vgl. aktuelle Skandale und Bußgelder ● Zivilcourage !
  28. 28. www.fromdual.com 28 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  29. 29. www.fromdual.com 29 / 52 Entwickler-Wünsche ● Analyse der Feature-Nutzung ● Test mit Echt-Daten Volumen, Werte-Verteilung ● Daten-Volumen für Tuning „Explain“ mit/ohne Index ● Schema-Änderung testen „Create Index“, „Alter Table“
  30. 30. www.fromdual.com 30 / 52 Probleme / Konflikte ● Datenschutz-Recht: ● Gesetzliche Verpflichtung ● Zweckbindung ● Löschung ● Datenschutz-Erklärung: ● Eigene Zusagen an Nutzer ● Datenschutz-Belehrung: ● Vertraulichkeit, ...
  31. 31. www.fromdual.com 31 / 52 Ausweg / Lösung ● In Recovery-Instanz ● löschen ● anonymisieren ● nur selektiv exportieren ● Export ablehnen ● Entwickler-Skript annehmen und als DBA kontrolliert auf Recovery-Instanz ausführen
  32. 32. www.fromdual.com 32 / 52 Export zur Entwicklung Backup Produktions- Instanz Restore Entwicklungs- Instanz update; delete; – anonym commit; Export Import
  33. 33. www.fromdual.com 33 / 52 Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung
  34. 34. www.fromdual.com 34 / 52 Vorbemerkung ● Beispiele / Code für MySQL, bitte selbst an Firmen-Regeln anpassen und für anderes DBMS übertragen ● $CONNECT = Verbindungs-Information -u USER -pPASSWORD -h HOST ● $DB = ausgewählte Datenbank (Schema)
  35. 35. www.fromdual.com 35 / 52 Automatisierung: Prinzipien ● Keine manuelle Ausführung von Routine- Aufgaben ● Erfolgs-Kontrolle im Skript enthalten, manuell nur Stichproben ● Mail-Alarm bei Fehler ● Keine manuelle Konfiguration / Anpassung, Skript erstellt Listen selbst
  36. 36. www.fromdual.com 36 / 52 Automatisierung: Teile ● Backup (lokale MySQL-Instanz) ● Purge Log ● Restore (Sicherung vorgegeben) ● Restore-Wrapper (automatisierte Auswahl) ● DBen/Schemata im aktuellen Restore ● User/Passwort für DB/Schema ● Anonymisierungs-Skript für DB/Schema
  37. 37. www.fromdual.com 37 / 52 Skript: Backup (1) ● Sichert DB-Instanz gemäß Backup-Strategie ● Generiert Namen mit Datum/Uhrzeit ● Löscht überflüssige alte Backups ● Aufruf durch cron ● Separat: Monitoring für Speicherplatz
  38. 38. www.fromdual.com 38 / 52 Skript: Backup (2) ● Hilfreich: Tabelle „backup_history“ mit Timestamp und Exit-Code ● „MySQL Enterprise Backup“ führt sie ● Auf Slave repliziert? MEB 3.9 ja, 3.10 nein Oracle SR 3-9497158271 ● Welche Instanz(en) sichern bei Replikation?
  39. 39. www.fromdual.com 39 / 52 Skript: Purge Log (1) Bis zum vorletzten erfolgreichen Backup löschen: TIMESTAMP=`echo   "select start_time from       mysql.backup_history    where exit_state = 'SUCCESS'    order by start_time desc limit 1, 1 ;" | mysql $CONNECT | tail ­n1` echo    "PURGE MASTER LOGS BEFORE '$TIMESTAMP';"  | mysql $CONNECT
  40. 40. www.fromdual.com 40 / 52 Skript: Purge Log (2) Ohne Tabelle – fest 26 Stunden zurück: TIMESTAMP=`echo   "select subtime( now(), '26:00:00')" | mysql $CONNECT | tail ­n1`
  41. 41. www.fromdual.com 41 / 52 Skript: Restore ● Name der Sicherung wird als Parameter übergeben ● Rückfrage, falls nicht auf Restore-Maschine ● Löscht alle vorhandenen DB-Inhalte ● Lädt Sicherung ● Startet DB-Server
  42. 42. www.fromdual.com 42 / 52 Skript: Restore-Wrapper (1) ● Sorgt dafür, dass die Sicherungen aller DB- Instanzen der Test-Recovery unterzogen werden ● Läuft nur auf Restore-Host ● Optionaler Parameter: Hostname ● Gegeben: Name des letzten Backup bestimmen ● Sonst: alle Instanzen reihum ● Ruft Restore-Skript mit Sicherungsname
  43. 43. www.fromdual.com 43 / 52 Skript: Restore-Wrapper (2) HOSTLIST=( `ls ­d ... |      grep ­iv ...` )  NUMHOSTS=${#HOSTLIST[@]}    # count DAY=`date '+%j'`      # day of year INDEX=`expr $DAY % $NUMHOSTS` BACKUPDIR=${HOSTLIST[$INDEX]} TIMESTAMP=`ls $BACKUPDIR |      grep '^20[1­9][0­9]' | tail ­1` Round-Robin über alle Hostnamen:
  44. 44. www.fromdual.com 44 / 52 Code: Welche DB/Schema? DBLIST=`cd /DISK ; find * ­type d` for DB in $DBLIST do     if [ "$DB" = "information_schema"       ­o "$DB" = "mysql"       ­o "$DB" = "performance_schema" ]     then         echo "Ignoring database $DB"         continue     fi     ... # nächste Folie done
  45. 45. www.fromdual.com 45 / 52 Code: User/Passwort zu DB Annahme: Benutzer existiert schon in der DB und hat die nötigen Privilegien für Anonymisierung Sonst: Nach Restore erzeugen DB_S=`echo $DB |       tr '[:upper:]' '[:lower:]'`    # 9 Zeichen von DB für User(16) DB_9=`echo ${DB_S} |       sed 's/(.........).*/1/'` DB_USR="${DB_9}_anonym" DB_PWD="${DB_S}#geheim#"
  46. 46. www.fromdual.com 46 / 52 Code: DB behandeln? DB ohne Anonymisierungs-Nutzer wird nicht behandelt mysql ­u $DB_USR ­p$DB_PWD ­e 'show grants;' RC=$? if [ $RC ­ne 0 ] then     echo "'mysql ­u $DB_USR ­p$DB_PWD'            scheitert mit Code $RC"     echo "Kein Check / Export für diese DB."     continue fi
  47. 47. www.fromdual.com 47 / 52 Code: Skript suchen for ACTION in pruef anonym export ; do    BASE=/pfad/zu/script­${ACTION}­${DB_S}    SCRIPT=${BASE}.sh    if [ ­x $SCRIPT ] ; then       bash $SCRIPT ­U $DB_USR ­P $DB_PWD ­N $DB_S       RC=$?       echo "$SCRIPT terminated with exit code $RC"    fi    SCRIPT=${BASE}.sql    if [ ­r $SCRIPT ] ; then       mysql ­u $DB_USR ­p$DB_PWD $DB_S < $SCRIPT       RC=$?       echo "$SCRIPT terminated with exit code $RC"    fi done
  48. 48. www.fromdual.com 48 / 52 Skript: Anonymisieren (1) Überflüssige Tabellen leeren: echo "use information_schema ;   select TABLE_NAME from TABLES   where TABLE_SCHEMA = '$DB' and   TABLE_TYPE = 'BASE TABLE' and   TABLE_NAME not in ('t1', 't2', 't3') ;" |  mysql $CONNECT ­­skip­column­names |  while read TAB do     echo "truncate table $TAB ;" done | mysql $CONNECT $DB
  49. 49. www.fromdual.com 49 / 52 Skript: Anonymisieren (2) Personenbezogene Daten: mysql $CONNECT $DB <<'eof' UPDATE t1 SET   payment = 'xxx', birth = '1970­01­01',   fname = 'Hans', lname = 'Mustermann',   email = 'mustermail@muster.comp',   ... ; UPDATE t2 SET   request = NULL, response = NULL; eof
  50. 50. www.fromdual.com 50 / 52 Code: „select count(*)“ # Get a list of all tables, feed it into a loop # that generates "select count(*)" statements, # pipe these to another client call for execution mysql $CONNECT ­­silent ­­skip­column­names  ­e "select TABLE_NAME from        information_schema.TABLES      where TABLE_SCHEMA = '$DB' and        TABLE_TYPE = 'BASE TABLE' order by 1" |  while read TN do   echo "select count(*) as '$TN' from $DB.$TN ;" done | mysql $CONNECT ­­table $DB
  51. 51. www.fromdual.com 51 / 52 Code: „show create table“ # Get a list of all tables, feed it into a loop # that generates "show create table" statements, # pipe these to another client call for execution echo 'show tables ;' |  mysql $CONNECT $DB | tail ­n +2 | sort |  while read TAB do     echo "show create table $TAB G" done | mysql $CONNECT $DB
  52. 52. www.fromdual.com 52 / 52 Q & A Fragen ? Diskussion? Wir haben Zeit für ein persönliches Gespräch ... ● FromDual bietet neutral und unabhängig: ● Beratung ● Remote-DBA ● Support für MySQL, Galera, Percona Server und MariaDB ● Schulung www.fromdual.com/presentations

×