Mysql: ibdata zu groß – Daten aufteilen mit „innodb_file_per_table“

8. Januar 2013 at 11:17

Per Standard Konfiguration des mySql-Servers, werden alle Daten aus allen Datenbanken, in eine einzige Datei Namens „ibdata“ im mysql-data-ordner geschrieben. Diese Datei wächst kontinuierlich, auch beim löschen von Datenbanken bleibt die Größe erhalten (schrumpfen nicht möglich).

In der Praxis ist das nicht gerade optimal, lösen könnt ihr dieses Problem durch hinzufügen des Eintrages „innodb_file_per_table“ in der my.ini bzw. my.cnf im [mysqld]-Abschnitt der Konfigurations-Datei. Danach werden (Server-Neustart) jeweils pro Datenbank entsprechende ibdata-files angelegt, diese können dann auch beim löschen einer Datenbank mit gelöscht werden.

MySQL Backup schneller importieren

24. August 2010 at 18:08

Problem

Falls ihr größere Backups habt, welche z.B. mit mysqldump erstellt wurden, so kann der komplette Import schon mal einige Minuten dauern.  Was die Meisten nicht wissen ist, dass der Import solcher mit mysqldump erstellten Backup Dateien viel länger dauert.

How Can I Speed Up This Process?

Bei setzen der folgenden Flags vor dem Import im Datenbank Dump, kann die Importzeit dramatisch verkürzt werden:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

Wenn der auto-commit deaktiviert wurde muss am Ende ein manueller commit erfolgen:

COMMIT;

Durch deaktivieren der unique checks und foreign key kann einiges an Geschwindigkeit heraus geholt werden.

Mit dem folgenden Bash-Script könnt ihr das Szenario automatisieren:

#!/bin/bash
echo "SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;" > backup.sql
mysqldump -u myuser --password=mypassword mydatabase >> backup.sql
echo "COMMIT;" >> backup.sql

Reverse Engineering mit MySQL Workbench MySQL Workbench

23. Dezember 2009 at 09:45

Zur grafisch Erstellung einer MySQL Datenbanken wird das kostenlose Programm MySQL Workbench bereit gestellt. Ebenfalls ist Reverse Engineering möglich, ihr könnt ein Datenbankmodel aus einer bestehenden Datenbank Tabelle generieren und editieren.

Ihr habt bereits eine Tabelle die ihr anpassen möchtet? Kein Problem, neben dem editieren um z.B. Erweiterung einzubauen, könnt ihr Fremdschlüsseln zuweisen. Nach dem laden der Datenbank habt ihr sofort euer Datenbankmodel und könnt dieses Bequem mit einer grafischen Oberfläche erweitern. Die Fremdschlüssel werden so gar automatisch durch das Setzen von Verbindungen generiert.

MySQL Workbench

MySQL Repair – Error Codes

12. November 2009 at 17:29

Gelegentlich erhaltet ihr MySQL-Errors bei einem Repair von Tabellen … hier findet ihr eine kurze Übersicht einiger Error-Codes sowie Hinweise zum lösen. Anhand der Error-Codes kann z.B. abgeleitet werden ob der Fehler von einem defekten Datei-System hervor geht, es gar ein MySQL-Bug ist oder ähnlich. Nicht verzweifeln, sondern genau die Fehler-Codes analysieren!

Magento: Nach Datenbank-Import Fehlermeldung im Front-End

22. Oktober 2009 at 14:58

Notice: Undefined index:  0  in /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92

#0 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Mysql4/Config.php(92): mageCoreErrorHandler(8, ‚Undefined index…‘, ‚/var/www/…‘, 92, Array)
#1 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Config.php(268): Mage_Core_Model_Mysql4_Config->loadToXml(Object(Mage_Core_Model_Config))
#2 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/App.php(263): Mage_Core_Model_Config->init(Array)
#3 /var/www/…/httpdocs/app/Mage.php(434): Mage_Core_Model_App->init(“, ’store‘, Array)
#4 /var/www/…/httpdocs/app/Mage.php(455): Mage::app(“, ’store‘, Array)
#5 /var/www/…/httpdocs/index.php(79): Mage::run(“)
#6 {main}

Ihr habt ein Magento-Backup wieder in eine Datenbank importiert und bekommt beim Aufruf des Shops über das Front-End eine ähnliche Fehlermeldung?

Magento speichert bei der Installation die Website-IDs in die Datenbank mit der ID 0. Bei dem Import oder der Übertragung der Datenbank in eine Andere ist ggf. aus der ID 0 für den Admin-Teil der Website eine 2 geworden (so bei uns im aktuellen Fall).

Ändert ihr nun in der Tabelle core_website und core_store die website_id des Datensatzes mit dem Code admin zurück in eine 0, so ist der Fehler behoben.

Unabhängig davon auch beim Import den Fremdschlüssel-Check deaktivieren wie diesem Artikel beschrieben.

Magento MySQL Datenbank Shema

13. Oktober 2009 at 10:00

Das aktuelle Magento Datenbank Shema findet ihr unter

www.magentocommerce.com/wiki/development/magento_database_diagram

Magento: Datenbank importieren – Fehlermeldung vermeiden

13. Oktober 2009 at 09:01

Der Import eines Datenbank-Dump von Magento bricht mit einer Fehlermeldung ab oder wird nicht vollständig importiert?

Dafür gibt es eine Lösung, und zwar schreibt ihr an den Anfang der Import-Datei die Zeile

— add this above the first line
SET AUTOCOMMIT=0;
set foreign_key_checks=0;

sowie als letzte Zeile

— add this below the last line
SET FOREIGN_KEY_CHECKS=1;
COMMIT;
SET AUTOCOMMIT=1;

Danach sollte der Import problemlos möglich sein, da ihr die Fremdschlüssel-Überprüfung während des Imports deaktiviert habt um die Tabellen in beliebiger Reihenfolge zu importieren. Außerdem wird der Import beschleunigt

Magento: Datenbank reparieren (kostenloses Database Repair Tool)

12. Oktober 2009 at 16:15

Die Magento Entwickler haben ein kostenloses Tool namens „Magento Database Repair Tool“ zum finden prüfen und reparieren von Datenbanken veröffentlicht. Es lassen sich damit zwei Datenbanken miteinander vergleichen, sollte es zu Abweichungen kommen so werden fehlende Tabellen hinzugefügt oder vorhandene repariert. Außerdem werden fehlende Felder hinzugefügt und inkonsistente Daten entfernt. Darüber hinaus werden fehlende Fremdschlüssel oder Indexe hinzugefügt, falls sie fehlen sollten. Das Tool steht ab sofort zum Download bereit.

Download (klick hier)