Sie sind auf Seite 1von 52
www.fromdual.com Der Datenbank-Backup ist gemacht - was nun ? DOAG-Konferenz 2015, Nürnberg Jörg Brühe Senior

www.fromdual.com

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

FromDual GmbH

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

Support

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

remote-DBA

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52
FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52
FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52
FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

Schulung

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

www.fromdual.com

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

Beratung

FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52
FromDual GmbH Support remote-DBA Schulung www.fromdual.com Beratung 2 / 52

Zur Person

Zur Person www.fromdual.com ● Entwicklung verteiltes SQL-DBMS: Unix-Portierung, Anschluss Archivierungs-Tools (ADSM,

www.fromdual.com

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

Inhalt

Inhalt www.fromdual.com Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig

www.fromdual.com

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

www.fromdual.com Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen
www.fromdual.com Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen

www.fromdual.com

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

Echtdaten vollständig nutzen

Dem Datenschutz genügen

Material für die Entwicklung

Automatisierung

Zweck des DB-Backup

Gilt für beliebige Datenbanksysteme:

Zweck des DB-Backup Gilt für beliebige Datenbanksysteme: www.fromdual.com ● Firma / Mensch ist auf Daten angewiesen

www.fromdual.com

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“

Schadensursachen

Hardware-Defekte

Laufwerk, Controller, Netzteil,

Software-Defekte

Laufwerk, Controller, Netzteil, ● Software-Defekte www.fromdual.com DBMS, Betriebssystem, Anwendung, ●

www.fromdual.com

DBMS, Betriebssystem, Anwendung,

Fehlbedienung / Sabotage

delete from T; commit;

Katastrophe

/

rm ­fr /

Brand, Hochwasser, Unfall,

Risiko-Annahmen

Berücksichtigte Ereignisse

Risiko-Annahmen Berücksichtigte Ereignisse www.fromdual.com ● Individuelle Entscheidung ● Abhängig vom

www.fromdual.com

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?

www.fromdual.com Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen
www.fromdual.com Datenbank-Backup – welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen

www.fromdual.com

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

Echtdaten vollständig nutzen

Dem Datenschutz genügen

Material für die Entwicklung

Automatisierung

Weitere Einfluss-Faktoren

Individuelle Prüfung nötig:

Wie sind die Abläufe?

Individuelle Prüfung nötig: ● Wie sind die Abläufe? www.fromdual.com (z.B. Papier, Telefon oder

www.fromdual.com

(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?)

Backup-Strategie

Backup-Strategie www.fromdual.com Ergibt sich aus technischen Möglichkeiten, Risiko-Annahmen, anderen Einfluss-Faktoren

www.fromdual.com

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

)

Zweck des DB-Backup

Datenverlust verhindern

durch Restore (Recovery)

Datenverlust verhindern ● durch Restore (Recovery) www.fromdual.com ● gemäß Anforderungen ● bei allen

www.fromdual.com

gemäß Anforderungen

bei allen (betrachteten) Risiken

Backup hat nur dann seinen Zweck erfüllt, wenn Restore (Recovery) erfolgreich ist => Prüfkriterium des Backup

Schrödingers Backup

Schrödingers Backup www.fromdual.com „Der Zustand jedes Backup ist solange unbestimmt, bis er bei einem Restore

www.fromdual.com

„Der Zustand jedes Backup ist solange unbestimmt, bis er bei einem Restore eingesetzt wird.“

(u.a. Karoly Nagy, Vortrag auf „Percona Live Europe 2015“)

Risiken für Recovery

Risiken für Recovery www.fromdual.com ● Backup nicht für Recovery tauglich ● Defekter Backup erzeugt (HW, SW,

www.fromdual.com

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,

)

Verifikation – wie?

Verifikation – wie? www.fromdual.com ● Nur erfolgreiche Recovery beweist grundsätzliche Tauglichkeit der Techniken

www.fromdual.com

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

Verifikation – wo?

Verifikation – wo? www.fromdual.com ● Produktiv-Backup enthält sensible Daten ● Produktive DB darf nicht

www.fromdual.com

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

Separate Recovery-Instanz

Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52

www.fromdual.com

Instanz
Instanz

Produktions-

Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52
Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52

Backup

Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52
Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52

Instanz

Recovery-

Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52
Separate Recovery-Instanz www.fromdual.com Instanz Produktions- Backup Instanz Recovery- Restore 17 / 52

Restore

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

– welcher Zweck? Tauglichkeit des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen

Echtdaten vollständig nutzen

Dem Datenschutz genügen

Material für die Entwicklung

Automatisierung

vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung www.fromdual.com 18 / 52

www.fromdual.com

Zustand nach Recovery-Test

Produktiv-DB

Zustand nach Recovery-Test ● Produktiv-DB www.fromdual.com ● mit Echt-Daten (aktuell) ● im laufenden Betrieb

www.fromdual.com

mit Echt-Daten (aktuell)

im laufenden Betrieb (Zugriffe, Last, laufende Änderungen)

Recovery-DB

mit Echt-Daten (vom Backup-Zeitpunkt)

auf separatem System (Leerlauf, stabil)

Kopie der Echt-Daten

Kopie der Echt-Daten www.fromdual.com ● unterliegt dem Datenschutz ● taugt für Statistik, Abrechnung, ● erlaubt

www.fromdual.com

unterliegt dem Datenschutz

taugt für Statistik, Abrechnung,

erlaubt zuverlässige Messung von z.B.

Schema-Änderungen („create index“, (ggfs. HW-Unterschiede beachten)

)

Nutzungs-Beispiele (1)

Abrechnung der letzten Periode

(Woche, Monat,

)

(1) ● Abrechnung der letzten Periode (Woche, Monat, ) www.fromdual.com ● ● Statistik / Report, besonders

www.fromdual.com

Statistik / Report, besonders wenn ohne Index-Unterstützung

Kontrolle auf Fehlerfreiheit

mysqldump > /dev/null für vollständiges Lesen

Nutzungs-Beispiele (2)

Export in anderem Format, z.B.

Nutzungs-Beispiele (2) ● Export in anderem Format, z.B. www.fromdual.com ● CSV für Spreadsheet ● Mysqldump

www.fromdual.com

CSV für Spreadsheet

Mysqldump (Klartext) für Transfer

Jede nur-lesende nicht-sofortige Nutzung der Echtdaten kann auf den Recovery-Server verlagert werden.

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

Echtdaten vollständig nutzen

des Backup, Verifikation Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung

Dem Datenschutz genügen

Material für die Entwicklung

Automatisierung

vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung www.fromdual.com 23 / 52

www.fromdual.com

Stichworte zum Datenschutz

Stichworte zum Datenschutz www.fromdual.com ● Personenbezogene Daten z.B. Name, Adresse, Telefon, E-Mail, Konto ●

www.fromdual.com

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

Anonymisieren

Restore-Instanz hat SQL verfügbar:

Anonymisieren Restore-Instanz hat SQL verfügbar: www.fromdual.com ● UPDATE kunde SET name = 'Mustermann',

www.fromdual.com

UPDATE kunde SET name = 'Mustermann', vorname = 'Max' WHERE anrede = 'Herr';

UPDATE kontakte SET mail = concat( md5(mail), '@provider.tld');

Eigeninitiative

Eigeninitiative www.fromdual.com ● Pessimistische Annahme: Die anderen vergessen den Datzenschutz! ● Ausländische

www.fromdual.com

Pessimistische Annahme:

Die anderen vergessen den Datzenschutz!

Ausländische Kollegen

Als DBA selbst das Schema prüfen, bei Zweifeln nachfragen

Datenschutz-Belehrung beachten

Hoffentlich überflüssig

Hoffentlich überflüssig www.fromdual.com ● Langfristiges (Firmen-) Interesse ● vgl. aktuelle Skandale und

www.fromdual.com

Langfristiges (Firmen-) Interesse

vgl. aktuelle Skandale und Bußgelder

Zivilcourage !

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

Echtdaten vollständig nutzen

Dem Datenschutz genügen

Echtdaten vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung

Material für die Entwicklung

Automatisierung

vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung www.fromdual.com 28 / 52

www.fromdual.com

Entwickler-Wünsche

Entwickler-Wünsche www.fromdual.com ● Analyse der Feature-Nutzung ● Test mit Echt-Daten Volumen, Werte-Verteilung

www.fromdual.com

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“

Probleme / Konflikte

Datenschutz-Recht:

Gesetzliche Verpflichtung

Zweckbindung

Löschung

Datenschutz-Erklärung:

Eigene Zusagen an Nutzer

Datenschutz-Belehrung:

Vertraulichkeit,

● Eigene Zusagen an Nutzer ● Datenschutz-Belehrung: ● Vertraulichkeit, www.fromdual.com 30 / 52

www.fromdual.com

Ausweg / Lösung

In Recovery-Instanz

löschen

anonymisieren

nur selektiv exportieren

Export ablehnen

● nur selektiv exportieren ● Export ablehnen www.fromdual.com ● Entwickler-Skript annehmen und als DBA

www.fromdual.com

Entwickler-Skript annehmen und als DBA kontrolliert auf Recovery-Instanz ausführen

Export zur Entwicklung

Export zur Entwicklung www.fromdual.com Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs-

www.fromdual.com

Produktions-

Instanz

Export zur Entwicklung www.fromdual.com Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs-
Export zur Entwicklung www.fromdual.com Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs-
Export zur Entwicklung www.fromdual.com Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs-

Backup

update; delete; – anonym commit;
update;
delete;
– anonym
commit;
Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52

Entwicklungs-

Instanz

Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52
Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52
Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52

Restore

Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52
Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52

Export

Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52
Produktions- Instanz Backup update; delete; – anonym commit; Entwicklungs- Instanz Restore Export Import 32 / 52

Import

Datenbank-Backup – welcher Zweck?

Tauglichkeit des Backup, Verifikation

Echtdaten vollständig nutzen

Dem Datenschutz genügen

Material für die Entwicklung

vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung www.fromdual.com 33 / 52

Automatisierung

vollständig nutzen Dem Datenschutz genügen Material für die Entwicklung Automatisierung www.fromdual.com 33 / 52

www.fromdual.com

Vorbemerkung

Vorbemerkung www.fromdual.com ● Beispiele / Code für MySQL, bitte selbst an Firmen-Regeln anpassen und für anderes

www.fromdual.com

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)

Automatisierung: Prinzipien

Automatisierung: Prinzipien www.fromdual.com ● Keine manuelle Ausführung von Routine- Aufgaben ● Erfolgs-Kontrolle

www.fromdual.com

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

Automatisierung: Teile

Automatisierung: Teile www.fromdual.com ● Backup (lokale MySQL-Instanz) ● Purge Log ● Restore (Sicherung

www.fromdual.com

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

Skript: Backup (1)

Skript: Backup (1) www.fromdual.com ● Sichert DB-Instanz gemäß Backup-Strategie ● Generiert Namen mit

www.fromdual.com

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

Skript: Backup (2)

Skript: Backup (2) www.fromdual.com ● Hilfreich: Tabelle „backup_history“ mit Timestamp und Exit-Code ● „MySQL

www.fromdual.com

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?

Skript: Purge Log (1)

Skript: Purge Log (1) www.fromdual.com Bis zum vorletzten erfolgreichen Backup löschen: TIMESTAMP=`echo "select

www.fromdual.com

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

Skript: Purge Log (2)

Ohne Tabelle – fest 26 Stunden zurück:

Purge Log (2) Ohne Tabelle – fest 26 Stunden zurück: www.fromdual.com TIMESTAMP=`echo "select subtime( now(),

www.fromdual.com

TIMESTAMP=`echo "select subtime( now(), '26:00:00')" | mysql $CONNECT | tail ­n1`

Skript: Restore

Skript: Restore www.fromdual.com ● Name der Sicherung wird als Parameter übergeben ● Rückfrage, falls nicht auf

www.fromdual.com

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

Skript: Restore-Wrapper (1)

Skript: Restore-Wrapper (1) www.fromdual.com ● Sorgt dafür, dass die Sicherungen aller DB- Instanzen der Test-Recovery

www.fromdual.com

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

Skript: Restore-Wrapper (2)

Skript: Restore-Wrapper (2) www.fromdual.com Round-Robin über alle Hostnamen: HOSTLIST=( `ls ­d grep ­iv

www.fromdual.com

Round-Robin über alle Hostnamen:

HOSTLIST=( `ls ­d grep ­iv

NUMHOSTS=${#HOSTLIST[@]}

DAY=`date '+%j'`

INDEX=`expr $DAY % $NUMHOSTS` BACKUPDIR=${HOSTLIST[$INDEX]}

|

` )

# count

# day of year

TIMESTAMP=`ls $BACKUPDIR | grep '^20[1­9][0­9]' | tail ­1`

Code: Welche DB/Schema?

DBLIST=`cd /DISK ; find * ­type d` for DB in $DBLIST do

DBLIST=`cd /DISK ; find * ­type d` for DB in $DBLIST do www.fromdual.com if [ "$DB"

www.fromdual.com

if [ "$DB" = "information_schema" ­o "$DB" = "mysql" ­o "$DB" = "performance_schema" ] then

echo "Ignoring database $DB" continue

fi

# n ä chste Folie

done

Code: User/Passwort zu DB

Code: User/Passwort zu DB www.fromdual.com Annahme: Benutzer existiert schon in der DB und hat die nötigen

www.fromdual.com

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} |

\).*/\1/'`

DB_USR="${DB_9}_anonym"

DB_PWD="${DB_S}#geheim#"

sed 's/\(

Code: DB behandeln?

Code: DB behandeln? www.fromdual.com DB ohne Anonymisierungs-Nutzer wird nicht behandelt mysql ­u $DB_USR ­p$DB_PWD ­e

www.fromdual.com

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

Code: Skript suchen

Code: Skript suchen www.fromdual.com for ACTION in pruef anonym export ; do BASE=/pfad/zu/script­${ACTION}­${DB_S}

www.fromdual.com

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

Skript: Anonymisieren (1)

Überflüssige Tabellen leeren:

Skript: Anonymisieren (1) Überflüssige Tabellen leeren: www.fromdual.com echo "use information_schema ; select

www.fromdual.com

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

Skript: Anonymisieren (2)

Personenbezogene Daten:

Skript: Anonymisieren (2) Personenbezogene Daten: www.fromdual.com mysql $CONNECT $DB <<'eof' UPDATE t1

www.fromdual.com

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

Code: „select count(*)“

Code: „select count(*)“ www.fromdual.com # Get a list of all tables, feed it into a loop

www.fromdual.com

# 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

Code: „show create table“

Code: „show create table“ www.fromdual.com # Get a list of all tables, feed it into a

www.fromdual.com

# 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

Q & A

Q & A Fragen ? Diskussion? www.fromdual.com Wir haben Zeit für ein persönliches Gespräch ● FromDual

Fragen ?

Diskussion?

Q & A Fragen ? Diskussion? www.fromdual.com Wir haben Zeit für ein persönliches Gespräch ● FromDual

www.fromdual.com

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