MySQL Dump in Einzelfiles und anschließend wieder einspielen

MySQL, PostgreSQL, SQLite
aubergine
Posts: 471
Joined: 2005-09-10 17:52
Location: Frankfurt am Main

MySQL Dump in Einzelfiles und anschließend wieder einspielen

Post by aubergine » 2007-04-06 17:03

Hi,


ich möchte heute Nacht meinen Debian MySQL Server auf eine neue Version von mysql.com upgraden.

Da das testweise Einspielen der Data ORdner Fehler mit den charsets gebracht hat, da ich nun utf8 benutzen will möchte ich dies über mysqldump machen.

Ein Dump erzeugt mit "mysqldump --all-databases" führt dazu dass der Server beim einspielen aus dem letzten Loch pfeift. Daher werden nach ca. 2 Minuten nurnoch kb Weise die Daten auf die Platte geschrieben, weil die CPU mit 15% US - 85% WA überlastet ist.

Schuld daran ist meiner Meinung nach das Software Raid aber dass ist wohl ein anderes Thema :)

Aufjedenfall suche ich nun nach einer Möglichkeit automatisch alle Datenbanken in ein extra zu File zu legen nach dem Muster:

Code: Select all

mysqldump -uroot -ppassword -C -x -F db_1 > /root/db_1.sql
mysqldump -uroot -ppassword -C -x -F db_2 > /root/db_2.sql
mysqldump -uroot -ppassword -C -x -F db_3 > /root/db_3.sql
...
Und anschließend alle diese Files wieder einspielen.

Einige Scriptversuche sind leider schon gescheitert und meine awk Kentnisse sind bei ca. 0.

Hat jemand schonmal so ein Script geschrieben oder kennt eine Möglichkeit?

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: MySQL Dump in Einzelfiles und anschließend wieder einspielen

Post by daemotron » 2007-04-06 17:32

Dumps erstellen (ungetestet):

Code: Select all

for db in $(mysql -psecret -e "show databases;" | awk '{print $1}' | sed '/Database/d'); do
  mysqldump -u user -psecret -r /tmp/${db}.sql $db
done
Weitere Optionen für mysqldump wie charset etc. kannst Du ja noch reinbasteln.