Wenn Sie Versionen ändern, verschieben Sie das MySQL-Schema nicht .
Warum sollten Sie den MySQL-Ordner nicht verschieben? Dies hat mit den Authentifizierungsberechtigungen zu tun.
Die Anzahl der Spalten in mysql.user ist von Version zu Version unterschiedlich
Wenn du läufst desc mysql.user
- Sie sehen 31 Zeilen für MySQL 4.1
- Sie sehen 37 Zeilen für MySQL 5.0
- Sie sehen 39 Zeilen für MySQL 5.1
- Sie sehen 42 Zeilen für MySQL 5.5
Ich habe darüber schon einmal geschrieben
Es ist in Ordnung, alles andere zu verschieben. Gehen Sie auf dem neuen Computer mit MySQL 5.5.24 folgendermaßen vor:
mv /var/lib/mysql /var/lib/mysql/mysql55
mkdir /var/lib/mysql
<scp or rsync /var/lib/mysql of MySQL 5.1.41 over to /var/lib.mysql of MySQL 5.5.24>
rm -f /var/lib/mysql/mysql/*
cp /var/lib/mysql/mysql55/* /var/lib/mysql/mysql/*
chown -R mysql:mysql /var/lib/mysql
service mysql start
Die Frage bleibt also:
Wie verschieben Sie die Benutzerrechte im alten MySQL 5.1.41 nach MySQL 5.5.24 ???
Es gibt zwei Möglichkeiten, dies auf dem MySQL 5.1.41-Computer zu tun:
Diese Percona Toolkit-Programmverschiebung druckt die Benutzerberechtigung in Pure SQL aus. Sie können die Ergebnisausgabe in eine Textdatei ausführen. Führen Sie dann die Textdatei in MySQL 5.5.24 aus. Ende der Geschichte.
pt-show-grants ... > MySQLUserGrants.sql
METHODE 2: Emulieren Sie Pt-Show-Zuschüsse
Ich habe meine eigene Technik für Pt-Show-Stipendien gemacht
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
Verschieben Sie in beiden Fällen MySQLUserGrants.sql auf den MySQL 5.5.24-Computer und führen Sie das Skript aus
Ich habe bereits darüber geschrieben: Importieren der myisam 5.0-Datenbank in einen 5.5-Innodb-Server
mysql -uroot -plocalhost
. SobaldSHOW GRANTS;
Sie ausgeführt haben, sollte dies bedeuten, dass Sie über vollständige Berechtigungen verfügen. Sie müssen ein Passwort vergeben. Einfach ausführenSET PASSWORD = PASSWORD('myn3wp4$$w0rd');
mysql
Datenbank (zB vielleicht überprüft MySQL die Struktur der Tabellen und ändert sie nach Bedarf, wenn Spalten fehlen?), dann stimme ich Rolando zu, dass es sicherer erscheint, dies zu vermeiden.Nachdem Sie mehrmals ein 5.1-> 5.5-Upgrade durchgeführt haben, können Sie mit einem zweiten Server ein Upgrade von 5.1 auf 5.5 durchführen.
/var/lib/mysql
) vom 5.1-Server auf den 5.5-Server (über rsync, scp, CD-ROM, Bittorrent, Schreibmaschine usw.).mysql
Benutzer gehörenmysql
Datenbank sehen.mysql_upgrade
Es ist keine zusätzliche Komplexität erforderlich, es sei denn, Sie haben ungelöste Fehler im Protokoll.
quelle
Beim Verschieben von Hauptversionen wird empfohlen , einen mysqldump durchzuführen und neu zu laden. Kleinere Versionen gelten als OK, aber Sie sollten die bereitgestellte Binärdatei mysql_upgrade ausführen .
Der schnellste Weg, dies zu erreichen, setzt voraus, dass die Server über VPN verbunden sind, sodass Sie auf dieser Ebene die Verschlüsselung für Sie durchführen lassen. Durch das Synchronisieren von Dingen über ein VPN wird der CPU-Aufwand für das erneute Verschlüsseln von Dingen erhöht. Um sich auf dem neuen Server vorzubereiten, führen Sie ein neues Setup mit mysql_install_db durch
Führen Sie zuerst den neuen Server aus
Das hängt einfach an Port 12345 und lauscht, bis Sie diesen nächsten Schritt auf dem alten Server ausführen
Wenn Sie ein solches Reload durchführen, haben Sie den zusätzlichen Vorteil, dass Sie Ihre Tabellen defragmentieren. Dieses Beispiel impliziert auch, dass es Ihnen nichts ausmacht, die 5.1-Datenbank während des Speicherauszugs zu sperren.
quelle