Heute möchte ich euch die Replikation unter MySQL 5.0 vorstellen. Als erstes möchte ich auf zwei Begriffe eingehen, welche Hauptbestandteil der Replikation sind. Master und Slave Der Master ist der Hauptdatenbankserver. Wie der Name schon sagt ist das der Meister, der den Ton angibt. Der Slave sozusagen, der arme Sklave, ist ein zweiter Datenbankserver, der die [...]
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
Mysqlbackup mit Mysqldump Es gibt sehr viele Programme um MySQL Datenbanken zu sichern. Ich werde hier der Reihe nach verschiedene Tools vorstellen. Macht euch bitte am besten ein Bild für wen, welche Variante am besten in Frage kommt. Die einfachste Art und Weise Backups zu erstellen, stellt MySQL mit dem hauseigenem Programm mysqldump dar. Mit [...]
In Hotspots in MySQL finden hatte ich noch mit Maatkit herumgespielt, um die Hotspots zu finden, die meinen Master behelligen. Das hat auch leidlich gut funktioniert, nur ist Maatkit leider viel zu langsam, um das bei größeren Datenmengen und längeren Beobachtungszeiträumen sinnvoll zu machen.
Ich habe meinen Ansatz also noch einmal revidiert. Ich sammle meine Daten immer noch an einem SPAN-Port, aber inzwischen mit tcpflow, das mir die Daten schön in Dateien pro Connection sammelt. Diese Dateien müssen nun protokollanalysiert werden, da ein einfaches "strings" leider keine sinnvoll weiterverarbeitbaren Informationen ergibt.
Also habe ich mir einen sehr simplen MySQL Protokollanalysator geschrieben, basierend auf den Informationen …
[Mehr]Für Software-Entwickler und OEMs
Für Java-Entwickler stellt sich die Frage, wie man aus der Applikation geschickt auf die MySQL-Datenbank zugreifen kann.
In diesem Webinar stellen wir verschiedene Methoden vor und zeigen insbesondere, wie auch die Skalierung oder Hochverfügbarkeit durch den JDBC-Connector unterstützt werden.
Für MySQL Cluster werden die Möglichkeiten des Cluster/J sowie
Cluster/JPA Connectors erläutert. Anschließend werden einige
Tipps und Tricks zur Analyse und Verbesserung der Performanz
gezeigt.
Auf Yourhelpcenter.de gibt es einen Artikel mit dem irreführenden Titel Update if exists else insert record, der sich mit INSERT ON DUPLICATE KEY UPDATE beschäftigt.
Dieses Kommando macht genau nicht das, was der Titel des Artikels suggeriert und wünschenswert wäre, sondern er macht genau das, was der SQL-Text des Kommandos sagt und leider nervt. Es wäre schön, wenn der Artikel auf Yourhelpcenter auch auf diese Probleme eingegangen wäre - da er es nicht tut hole ich es hier gerade mal nach.
Jeder Datenbankserver bei uns hat ein Script laufen, daß den Inhalt von information_schema.tables jede Nacht einmal in eine Systemdatenbank in das DBA Schema kopiert. Dort haben wir dba.table_sizes:
CODE:root@sysmdb [dba]> show create table table_sizes\G
Table: table_sizes
Create Table: CREATE TABLE `table_sizes` (
`hostname` varchar(64) NOT NULL,
`datadir` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`report_date` date NOT NULL,
`table_schema` varchar(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
…
[Mehr]
Gegeben folgende Seiten:
http://web.archive.org/web/20080502185553/http://www.mysql.com/why-mysql/migration/
und
http://www.mysql.com/why-mysql/migration/
Auf beiden Seiten wird Oracle gefunden.
Tipp: Die Differenz, die Differenz! :-D
Finde mir alle Queries eines bestimmten Users, die lange Zeit idle sind: Wer spammt mir die Prozessliste zu und verbraucht meine max_connections?
CODE:root@recorder [(none)]> select
substring_index(host, ':', 1) as h,
count(host) as n
from
information_schema.processlist
where
command = 'sleep' and
time > 120 and
user = 'eviluser'
group by
h\G
h: localhost
n: 1
h: defektekiste
n: 6
2 rows in set (0.01 sec)
INFORMATION_SCHEMA.PROCESSLIST ist neu in MySQL 5.1. Es erlaubt ganz wunderbar nach Irrläufern, bösen Queries und anderen …
[Mehr]Wenn Sie einen Datensatz in eine Datenbanktabelle einfügen möchten (wenn er noch nicht existiert) oder diesen updaten möchten (wenn er existiert), hilft dieser SQL Befehl:
1 |
INSERT INTO TABLE (FIELDS) VALUES (VALUES) ON DUPLICATE KEY UPDATE FIELD = VALUE
|
Dieses Statement prüft, ob der Primary Key (PK) für den einzufügenden Datensatz bereits besteht, nutzt dann ein Update Befehl und ansonsten Ihren angegeben Insert Befehl.
Beispiel
Wir haben eine Tabelle “Test” mit den Feldern “A”, “B” (je vom Typ varchar) und “C” (integer). Die Felder “A” und “B” sind unser PK.
Ein normales SQL Insert Statement in die leere Tabelle:
1 2 |
INSERT INTO Test (A,B,C) VALUES ('Testtext A1','Texttext B1', … |
Etwas irritiert war ich über die doch offensichtliche
Sinnlosigkeit das information_schema zu dumpen. Etwas was
phpMyAdmin explizit anbieten soll.
Das information_schema ist dem /proc unter Linux vergleichbar. Es
wird nichts weiter gemacht, als Informationen zu aggregieren.
Anders als /proc, in dem einige Werte gesetzt werden können, ist
das information_schema read only.
Sprich information_schema zu dumpen hat keinen Sinn, weil
sich
1. die Informationen eh aus der laufenden Datenbank ergeben
und
2. das information_schema - wie schon erwähnt - nicht
beschreibbar ist.
mysql> insert into ENGINES
values('erkan','YES',NULL,'NO','NO','NO');
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to
database 'information_schema'
Angst insofern "kaputte" Dumps zu haben, als dass diese nicht
mehr eingespielt werden können, brauch mensch nicht.
Mysqldump ignoriert …