Yum Update MySQL von 5.1 auf 5.5

7

Ich war gerade dabei, einen Server zu aktualisieren. Eines der Updates, die vorgeschlagen werden, ist ein Upgrade von MySQL 5.1 auf 5.5.

Der MySQL-Server arbeitet in einem Master-Master-Replikations-Setup mit einer anderen 5.1-MySQL-Instanz. Ich würde auch den anderen Master auf 5.5 aktualisieren, möchte aber immer einen online halten. Dieser Master hat auch eine Reihe von 5.1 MySQL-Slaves, die von ihm replizieren.

Weiß jemand ob:

  1. yum update ist sicher von 5.1 auf 5.5 ohne große Datenwiederherstellungen
  2. wenn das obige Replikationssetup ein Problem darstellt.

Bearbeiten: Dies ist eine Centos 5.4-Installation. Die Updates stammen jedoch aus dem nicht standardmäßigen Remi-Repo.

elektrisch
quelle
Ich schlage vor, auf Serverfault zu migrieren, scheint eher in der Gasse zu sein; Sie werden wahrscheinlich fragen, woher Sie Ihre MySQL-Pakete haben und wie die Paketauslöserskripte aussehen. yumist nur das Tool, das Ihre rpmTransaktionen abschließt. :)
Welche Verteilung?

Antworten:

2

Das Replikationssetup, das Sie haben, kann beim Upgrade auf MySQL 5.5 nicht beibehalten werden

Sie müssen mit Master / Slave gehen. Hier ist der Grund:

Jemand stellte eine Frage zu Kauderwelsch in einem Binärprotokoll und ich beantwortete diese Frage

In meiner Antwort erklärte ich, dass Binärprotokolle in verschiedenen Versionen von MySQL an verschiedenen Positionen beginnen

Hier sind diese Positionen:

  • 107 für MySQL 5.5
  • 106 für MySQL 5.1
  • 98 für MySQL 5.0 und zurück

Bei der Replikation gelten diese Nummern auch für die Relay-Protokolle. Der Nettoeffekt ist, dass ein Slave von einer älteren Version von MySQL replizieren kann, aber nicht umgekehrt.

Sie sind besser dran, wenn Sie Folgendes tun:

  1. Konvertieren Sie Master / Master in Master / Slave
  2. Aktualisieren Sie auf dem Slave auf MySQL 5.5
  3. Richten Sie alle Apps auf den Slave (jetzt NewMaster genannt).
  4. Service MySQL Stop auf dem Master
  5. Aktualisieren Sie auf dem Master (jetzt NewSlave) auf MySQL 5.5, aber starten Sie mysql nicht
  6. Service MySQL Stop auf NewMaster
  7. rsync NewMasters / var / lib / mysql in NewSlaves / var / lib / mysql
  8. rm /var/log/mysql/master.info auf NewMaster
  9. rm /var/log/mysql/master.info auf NewSlave
  10. service mysql start --skip-networking auf NewMaster
  11. Führen Sie RESET MASTER auf NewMaster aus
  12. Service MySQL Neustart auf NewMaster
  13. Service MySQL starten auf NewSlave
  14. Führen Sie RESET MASTER auf NewSlave aus
  15. Richten Sie Master / Master Replication mit Position 107 als Start master_log_pos ein

In Bezug auf die Verwendung von Yum zum Upgrade renne ich in Panik und schreie entsetzt bei dem Gedanken daran.

Hier ist mein konservativerer Ansatz:

  1. Ich würde mysqldump alles außer dem mysql-Schema.
  2. Führen Sie dies aus, um SQL für alle MySQL-Benutzerzuschüsse zu generieren:

    mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e "SELECT CONCAT ('SHOW GRANTS FOR' '', user, '' '@' '', host, '' ';') FROM mysql .user WHERE Benutzer <> '' "| mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's / $ /; / g'> /root/MySQLGrants.sql

  3. Deinstallieren Sie MySQL 5.1

  4. Installieren Sie MySQL 5.5 von RPMs von Hand.
  5. Laden Sie /root/MySQLGrants.sql in MySQL 5.5
  6. Laden Sie die mysqldump'd-Daten zurück in MySQL 5.5
RolandoMySQLDBA
quelle