Mir steht ein Umzug einer MySQL-DB bevor. MySQL enthält nur MYSQL-Datenbanken, keine Innos etc.
Alte Version: MySQL-server-standard-4.1.20-0.sles9.i586.rpm
Neue Version: MySQL-server-standard-4.1.20-0.sles9.x86_64.rpm
Sind hierbei Schwierigkeiten zu erwarten? Binär kopieren geht ja eher nicht zwischen 32 und 64bit. Deshalb mysqldump:
mysqldump --opt -A --password="xxxxxx" --lock-all-tables --add-drop-database --skip-quote-names |gzip >/backup.sql.gz
Sollte eigentlich problemlos klappen, oder habt Ihr Bedenken?
Ach ja, diese Datenbank ist von einer 4.1.13-3 auf einer Suse 10.0 (64bit) erstellt worden. Nach dem Einspielen des dumps waren die Berechtigungen für die einzelnen Tabellen weg. Hat jemand eine Idee, wieso?
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Isotopp hat das neulich auch mal als favorisierten Weg angesprochen - ich war da auch baff, weil ich es nciht für möglich gehalten hätte, daß das einwandfrei geht.
flo wrote:Isotopp hat das neulich auch mal als favorisierten Weg angesprochen - ich war da auch baff, weil ich es nciht für möglich gehalten hätte, daß das einwandfrei geht.
Blieb' hlt nur noc hdie Frage, bei wievielen Versionsunterschieden das dann nicht mehr geht. Ich hatte jetzt unterschiedliche Patchversionen gehabt.
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Joe User wrote:Es funktioniert bis zum nächsten Wechsel des Dateiformates für die DB-Dateien.
Ok, wir haben das gestern versucht durchzuziehen. Die DB selbst hat keine Sorgen gemacht, 32bit auf 64bit lief einwandfrei. Allerdings ist uns dann die §$&% Benutzerverwaltung in die Quere gekommen.
Naja, EOT. Binärkopieren geht (zumindest innerhalb der Versionen) problemlos.
knebb wrote:Alte Version: MySQL-server-standard-4.1.20-0.sles9.i586.rpm
Neue Version: MySQL-server-standard-4.1.20-0.sles9.x86_64.rpm
MySQL garantiert eine Binärkompatibilität des MyISAM-Dateiformates über Architekturen, Bittigkeiten und Endiangrenzen hinweg. Das ist einer der Changes vom veralteten ISAM zum MyISAM-Format hin.
InnoDB ist ebenfalls portabel, solange die verwendeten Architekturen Zweierkomplementdarstellung und IEEE-Floats verwenden.
Nach dem Einspielen des dumps waren die Berechtigungen für die einzelnen Tabellen weg. Hat jemand eine Idee, wieso?
mysqldump kopiert eine Datenbank, aber nicht die Berechtigungen, die für die Datenbank definiert sind.
knebb wrote:Blieb' hlt nur noc hdie Frage, bei wievielen Versionsunterschieden das dann nicht mehr geht. Ich hatte jetzt unterschiedliche Patchversionen gehabt.
Datenformate innerhalt einer Major Version sind immer kompatibel.
Es kann sein, daß durch Patches an einer Collation sich die Sortierreihenfolge von Zeichenspalten ändert, für die ein Index definiert ist. In diesem Fall ist ein DROP INDEX und ein Neubau des Index erforderlich.
Bei Versionsupgrades hilft es auch, die Sektion "Incompatible Changes" in den Releasenotes der übersprungenen Versionen durchzusehen.
isotopp wrote:
mysqldump kopiert eine Datenbank, aber nicht die Berechtigungen, die für die Datenbank definiert sind.
Und die muß ich dann jedesmal neu setzen? Das erscheint mir reichlich unlogisch. Also bleibt doch ausschließlich ein Binärbackup (verbunden mit Downtime oder einem zweiten Server) übrig?
Welchen Weg kann man denn gehen, um auch die Berechtigungen mitzunehmen. Ich dachte, er sichert die mysql-DB mit....
knebb wrote:Und die muß ich dann jedesmal neu setzen?
SHOW GRANTS FOR "user"@"hostname" zeigt Dir die Statements für den genannten User. Das kannst Du Dir ausgeben lassen und mit portieren.
Oder Du dumpst die fünf MySQL Rechtetabellen und transportierst sie mit auf das neue System, bzw. die ganze mysql.* Datenbank.
Klar, wenn ich einzelne DB dumpe- aber auch, wenn ich mit --all-databases die ganze Instanz sichere? Ich hatte das so verstanden, daß er da wirklich ALLE mitnimmt. Die User hat er ja auch mitgenommen, aber nicht deren Rechte!
:roll:
kris@linux:~> mysqldump-3340 -u root --all-databases | grep "CREATE DATABASE"
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bootcamp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `rootforum` /*!40100 DEFAULT CHARACTER SET utf8 */;
knebb wrote: Die User hat er ja auch mitgenommen, aber nicht deren Rechte!
Doch, sicher hat er das. Schau in den Dump.
Hmmmm.... ok, Du meinst also, das hätte er im Regelfall gemacht? So hätte ich das auch erwartet. Na gut, dann war das wohl ein Fehler. Ich werde versuchen, ihn nachzuprüfen.