Show Table of Contents
Chapter 24. Migrating from MySQL 5.0 to MySQL 5.5
Before migrating from MySQL 5.0 to MySQL 5.5, back up all your data, including any MySQL databases. For more information about MySQL 5.1 and MySQL 5.5, refer to the release notes available at http://dev.mysql.com/doc/relnotes/mysql/5.1/en/ and http://dev.mysql.com/doc/relnotes/mysql/5.5/en/.
Note
Red Hat will not issue any more security advisories for the MySQL 5.0 packages (mysql-5.0.* and related packages). Security advisories will be provided only for MySQL 5.5.
24.1. Upgrading from MySQL 5.0 to MySQL 5.5
The only supported way to upgrade from MySQL 5.0 to MySQL 5.5 is by using MySQL 5.1 as an intermediate step. This is why the mysql51* Software Collection packages are provided. Note that the MySQL 5.1 packages are not supported and are provided only for the purposes of migrating to MySQL 5.5. You should not use the mysql51* packages on any of your production systems.
Because the mysql51 and mysql55 Software Collections do not conflict with each other or any mysql packages, users can install mysql51 and mysql55 Software Collections together with mysql packages. It is also possible to run all versions of MySQL at the same time. However, the port and socket number must be changed in the
my.cnf configuration files to prevent specific resources from conflicting.
There are two ways of upgrading from MySQL 5.0 to MySQL 5.5:
- Using the mysqldump and mysql utilities — the dump and restore upgrade generates an entirely new dump of all databases from one database. Next, the MySQL command line interface is run with the dump file as an input (alternatively, use the mysqlimport utility or the
LOAD DATA INFILESQL command) within the other database. Appropriate daemons have to be running during both dumping and restoring. Use the--all-databasesoption when executing the mysqldump command to include all databases in the resulting dump. The--routines,--triggers, and--events(valid only for MySQL 5.1 and above) options can be used if needed.Example 24.1, “Dump and Restore Upgrade” shows the specific commands used to upgrade using the dump and restore method. - In-place upgrade — consists of copying data files from one database directory to another database directory while both MySQL daemons are stopped. Appropriate permissions and SELinux context must be set for the copied files. The in-place upgrade is usually faster and easier for large databases, but there are some risks and known problems. For more information, refer to the release notes for MySQL 5.1 and MySQL 5.5, linked to at the beginning of this chapter.Example 24.2, “In-place Upgrade” shows the specific commands used to perform an in-place upgrade.
After upgrading, either using the dump and restore method or performing an in-place upgrade, start the MySQL server and run the
mysql_upgrade command. Running the mysql_upgrade is necessary to check and repair internal tables. Note that all scripts that interact with a MySQL server from a Software Collection, especially the mysql_upgrade script, should be run inside an scl enable environment.
Note
While running the
mysql_upgrade command, you may encounter the following errors:
You can't use locks with log tables.
This is a known issue (reported at http://bugs.mysql.com/bug.php?id=30487), which has no effect on the upgrade process.
Except when data upgrading, consider changing appropriate settings in your
my.cnf configuration file to reflect the new environment.
Example 24.1. Dump and Restore Upgrade
Example of dump and restore upgrading from MySQL 5.0 to MySQL 5.5 Software Collection:
~]#service mysqld startStarting mysqld: [ OK ] ~]#mysqldump --all-databases --routines > dump.sql~]#service mysqld stopStopping mysqld: [ OK ] ~]#service mysql51-mysqld startStarting mysql51-mysqld: [ OK ] ~]#scl enable mysql51 'mysql' < dump.sql~]#scl enable mysql51 'mysql_upgrade'Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK ~]#scl enable mysql51 'mysqldump --all-databases --routines --events' > dump2.sql~]#service mysql51-mysqld stopStopping mysqld: [ OK ] ~]#service mysql55-mysqld startStarting mysql55-mysqld: [ OK ] ~]#scl enable mysql55 'mysql' < dump2.sql~]#scl enable mysql55 'mysql_upgrade'Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK
Example 24.2. In-place Upgrade
Example of an in-place upgrade from MySQL 5.0 to MySQL 5.5 Software Collection:
~]#service mysqld stopStopping mysqld: [ OK ] ~]#service mysql51-mysqld stopStopping mysql51-mysqld: [ OK ] ~]#rm -rf /opt/rh/mysql51/root/var/lib/mysql/~]#cp -r /var/lib/mysql/ /opt/rh/mysql51/root/var/lib/mysql/~]#chown -R mysql:mysql /opt/rh/mysql51/root/var/lib/mysql/~]#restorecon -R /opt/rh/mysql51/root/var/lib/mysql/~]#service mysql51-mysqld startStarting mysql51-mysqld: [ OK ] ~]#scl enable mysql51 'mysql_upgrade'Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK ~]#service mysql51-mysqld stopStopping mysql51-mysqld: [ OK ] ~]#service mysql55-mysqld stopStopping mysql55-mysqld: [ OK ] ~]#rm -rf /opt/rh/mysql55/root/var/lib/mysql/~]#cp -r /opt/rh/mysql51/root/var/lib/mysql/ /opt/rh/mysql55/root/var/lib/mysql/~]#chown -R mysql:mysql /opt/rh/mysql55/root/var/lib/mysql/~]#restorecon -R /opt/rh/mysql55/root/var/lib/mysql/~]#service mysql55-mysqld startStarting mysql55-mysqld: [ OK ] ~]#scl enable mysql55 'mysql_upgrade'Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments a.t1 OK mysql.columns_priv OK ⋮ mysql.user OK Running 'mysql_fix_privilege_tables'... OK

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.