Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

Progressbar konfigurieren

Das vorgestellte Skript ist konfigurierbar. Per Default erzeugt es nur 10 000 Zeilen, man kann es aber auch mit 10 000 000 Zeilen laufen lassen.

number_of_records=10000000 rubycreate_test_data.rb

Ist das Skript einmal durchgelaufen, hat man eine Datenbank mit einer Tabelle »example_models« , die die Testdaten enthält. Danach muss man das Percona Toolkit installieren, für das es RPM-, Debian- und Sourcecode-Pakete auf der Webseite des Projektes gibt [3]. Ist das Toolkit installiert, lässt es sich mit folgendem Aufruf testen:

pt-online-schema-change --dry-run --alter 'ADD COLUMN test_string_3VARCHAR(255)'D=test,t=example_models,u=root,p=your_password_goes_here

Das angeführte Kommando fügt der Tabelle »example_models« eine Spalte »test_string_3« hinzu. Das Argument der Option »--alter« ist dabei ein SQL-Fragment, genauer gesagt der »ADD COLUMN« - oder »DROP COLUMN« -Teil einer »>ALTER TABLE« -Anweisung. Mehrfache Ausdrücke sind hier mit Kommas zu trennen.

Das letzte Argument spezifiziert die Details der Datenbankverbindung: »D« steht vor dem Datenbanknamen, »t« gibt den Tabellennamen an, »u« steht für den Namen des Users und »p« für das Passwort. Eine vollständige Aufzählung der möglichen Optionen findet sich in der Dokumentation, die man mit dem Kommando »man pt-online-schema-change« oder auch auf der Percona-Webseite erhält.

Trockenlauf

Besonders beachtenswert ist die Option »--dry-run« , die einen Trockenlauf anstößt, indem sie eine neue Tabelle anlegt, ändert und dann wieder löscht. Auf diese Weise lässt sich sicherstellen, dass das verwendete SQL fehlerfrei ist. Die Ausgaben sollten denen in Listing 2 gleichen.

Listing 2

Trockenlauf pt-online-schema-change

 

Ohne die »--dry-run« -Option würden die Daten herüberkopiert, wobei Trigger auf jede von Anwendern geänderten oder neu eingegebenen Daten reagieren würden (Listing 3). Die Terminalausgaben verweisen in diesem Fall auf 10 261 Zeilen, nicht auf exakt 10 000, weil »pt-online-schema-change« die Zeilenzahl mit »EXPLAIN SELECT« schätzt und nicht mit »COUNT *« zählt. Letzteres wäre genauer, würde aber länger dauern und könnte bei großen Tabellen Probleme erzeugen.

Listing 3

Ausgabe von pt-online-schema-change

 

Vom Erfolg der Änderung kann man sich in der MySQL-Konsole überzeugen (Listing 4). Mögliche Änderungen erschöpfen sich natürlich nicht im Hinzufügen von Spalten; man kann auch Spalten löschen, umbenennen, Datentypen ändern, Defaults setzen und so weiter – alles, was mit einem »ALTER TABLE« -DDL-Statement möglich ist.

Listing 4

MySQL-Test

# mysql test
mysql> describe example_models;
+-----------------+----------------+--------+-------+-----------+------------------+
| Field           | Type           | Null   | Key   | Default   | Extra            |
+-----------------+----------------+--------+-------+-----------+------------------+
| id              | int(11)        | NO     | PRI   | NULL      | auto_increment   |
| test_string_1   | varchar(255)   | YES    |       | NULL      |                  |
| test_string_2   | varchar(255)   | YES    |       | NULL      |                  |
| test_integer    | int(11)        | YES    |       | NULL      |                  |
| test_string_3   | varchar(255)   | YES    |       | NULL      |                  |
+-----------------+----------------+--------+-------+-----------+------------------+
5 rows in set (0.00 sec)
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019