Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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?

476 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
  • Als Erste(r) kommentieren

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

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

×