Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第24章 MySQL 5.0 から MySQL 5.5 への移行
MySQL 5.0 から MySQL 5.5 に移行する前に、MySQL データベースを含むすべてのデータのバックアップを作成します。MySQL 5.1 および MySQL 5.5 の詳細は、および http://dev.mysql.com/doc/relnotes/mysql/5.5/en/ から入手 http://dev.mysql.com/doc/relnotes/mysql/5.1/en/ できるリリースノートを参照してください。
注記
Red Hat は、MySQL 5.0 パッケージ(mysql-5.0.* および関連パッケージ)のセキュリティーアドバイザリーを発行しません。セキュリティーアドバイザリーは MySQL 5.5 でのみ提供されます。
24.1. MySQL 5.0 から MySQL 5.5 へのアップグレード
MySQL 5.0 から MySQL 5.5 へのアップグレードで唯一サポートされている方法は、MySQL 5.1 を中間ステップとして使用することです。このため、mysql51* Software Collection パッケージが提供されます。MySQL 5.1 パッケージはサポートされておらず、MySQL 5.5 への移行の目的でのみ提供されることに注意してください。実稼働システムでは mysql51* パッケージを使用しないでください。
mysql51 および mysql 55 Software Collections は相互または mysql パッケージと競合しないため、ユーザーは mysql パッケージとともに mysql51 および mysql55 Software Collections をインストールできます。すべてのバージョンの MySQL を同時に実行することもできます。ただし、特定のリソースが競合しないようにするには、
my.cnf 設定ファイルでポートとソケット番号を変更する必要があります。
MySQL 5.0 から MySQL 5.5 にアップグレードする方法は 2 つあります。
- mysqldump ユーティリティーおよび mysql ユーティリティーを使用すると、ダンプおよび復元のアップグレードにより、1 つのデータベースからすべてのデータベースの完全に新しいダンプが生成されます。次に、MySQL コマンドラインインターフェイスは、他のデータベース内で入力としてダンプファイルで実行されます(実際には、mysqlimport ユーティリティーまたは LOAD DATA INFILE SQL コマンドを使用します)。ダンプと復元の両方で、適切なデーモンを実行する必要があります。mysqldump コマンドの実行時に
--all-databasesオプションを使用して、生成されるダンプにすべてのデータベースを追加します。必要に応じて、--routines、--triggers、および--events(MySQL 5.1 以降にのみ有効)オプションを使用できます。例24.1「ダンプおよびリストアのアップグレード」 は、dump メソッドおよび restore メソッドを使用してアップグレードするために使用される特定のコマンドを示しています。 - インプレースアップグレード:データファイルをあるデータベースディレクトリーから別のデータベースディレクトリーにコピーし、両方の MySQL デーモンが停止します。コピーされたファイルに適切な権限と SELinux コンテキストを設定する必要があります。インプレースアップグレードは通常、大規模なデータベースでは高速で簡単ですが、リスクと既知の問題があります。詳細は、本章の最初にリンクされている MySQL 5.1 および MySQL 5.5 のリリースノートを参照してください。例24.2「インプレースアップグレード」 は、インプレースアップグレードの実行に使用される特定のコマンドを示しています。
アップグレード後、dump および restore を使用するか、インプレースアップグレードを実行して MySQL サーバーを起動し、mysql_upgrade コマンドを実行します。内部テーブルをチェックし、修復するには、mysql_upgrade を実行する必要があります。Software Collection (特に mysql_upgrade スクリプト)から MySQL サーバーと対話するすべてのスクリプトは、
scl enable 環境内で実行する必要があります。
注記
mysql_upgrade コマンドの実行中に、以下のエラーが発生する可能性があります。
You can't use locks with log tables.
これは既知の問題で( http://bugs.mysql.com/bug.php?id=30487で報告)、アップグレードプロセスには影響を与えません。
データのアップグレード時に以外は、新しい環境を反映するように
my.cnf 設定ファイルの適切な設定を変更することを検討してください。
例24.1 ダンプおよびリストアのアップグレード
MySQL 5.0 から MySQL 5.5 Software Collection へのアップグレードのダンプおよび復元の例:
~]# service mysqld start Starting mysqld: [ OK ] ~]# mysqldump --all-databases --routines > dump.sql ~]# service mysqld stop Stopping mysqld: [ OK ] ~]# service mysql51-mysqld start Starting 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 stop Stopping mysqld: [ OK ] ~]# service mysql55-mysqld start Starting 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
例24.2 インプレースアップグレード
MySQL 5.0 から MySQL 5.5 Software Collection へのインプレースアップグレードの例:
~]# service mysqld stop Stopping mysqld: [ OK ] ~]# service mysql51-mysqld stop Stopping 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 start Starting 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 stop Stopping mysql51-mysqld: [ OK ] ~]# service mysql55-mysqld stop Stopping 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 start Starting 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