mysql5.1系からmysql5.5系へアップグレードする
あえてmysql5.1系をインストールする でMySQL5.1系をインストールしていました。
MySQL5.1でも十分ですが、5.5への移行は、遅かれ早かれいずれやらないといけません。そこで、今回は、mysql5.1系からmysql5.5系へアップグレードしてみます。
参照:MySQL5.5 で削除された機能一覧(おまけ)
mysql5.1系からmysql5.5系へアップグレードする
MySQL5.1 を停止する
MySQL5.1 (mysqld) を停止します。
$ /etc/init.d/mysqld stop
MySQL を停止中: [ OK ]
|
MySQL5.1 のデータベースの全バックアップを行う(もしものため)
この作業は、もしもアップグレードで失敗した場合に、元に戻すために行う作業です。
全バックアップは、色々なやり方があります。以下の方法は例です。いずれの例でもMySQLが停止している状態なので、安全にバックアップできるはずです。
mysqldumpを使って全バックアップ
$ mysqldump -u root -p --all-database > all_db.sql
|
mysqlのバイナリファイルを全バックアップ
$ tar cvfz /tmp/mysql-bin.tar.gz /var/lib/mysql
|
いずれでもOKですが、データベースが大きい場合は、バイナリファイルのバックアップが良いでしょう。
バイナリファイルのバックアップでは、/etc/my.cnf の設定でバイナリファイルの置き場所が設定されていますので、必ず確認しましょう。
datadir = /var/lib/mysql
MySQL5.1 の設定ファイルのバックアップを行う(もしものため)
この作業は、もしもアップグレードで失敗した場合に、元に戻すために行う作業です。
現状のmy.cnfをバックアップとしてコピーしておきます。
$ cp /etc/my.cnf /etc/my.cnf.51
|
MySQL5.1 をアンインストールする
MySQLのインストール状況を確認しておきます。
$ rpm -qa|grep mysql
mysql51-server-5.1.47-2.ius.el5
mysqlclient15-devel-5.0.91-1.ius.el5
mysqlclient15-5.0.91-1.ius.el5
mysql51-5.1.47-2.ius.el5
mysql51-devel-5.1.47-2.ius.el5
php52-mysql-5.2.13-3.ius.el5
mysql51-libs-5.1.47-2.ius.el5
mysql51-bench-5.1.47-2.ius.el5
|
MySQLをアンインストールします。
$ yum erase mysql51-server mysql51 mysqlclient15 mysqlclient15-devel mysql51-devel mysql51-libs mysql51-bench
:
Dependency Removed:
php52-mysql.i386 0:5.2.13-3.ius.el5
Complete!
$
|
Dependency Removed: では、依存している他のパッケージが削除された場合、そのパッケージ名が出力されます。
ここでは、php52-mysqlが一緒に削除されてしまいました。MySQL5.5 をインストールした後に再インストールしましょう。
リポジトリを更新する
MySQL5.5 をインストールする
削除したMySQL5.1 パッケージの MySQL5.5 版をインストールするだけです。
$ yum -y install mysql55-server mysqlclient15-devel mysqlclient15 mysql55 mysql55-devel mysql55-libs mysql55-bench php52-mysql
:
Installed:
mysql55.i386 0:5.5.16-1.ius.el5
:
Dependency Installed:
:
Complete!
$
|
MySQL 5.1 関連の何かが残っていた場合、「MySQL 5.1 と共存できません・・・」のような英文のエラーが発生します。
その際は、正しくMySQL 5.1関連が削除できているか確認しましょう。
また、MySQL 5.5関連をインストールする際も、5.5以外のバージョンに依存したパッケージが混ざっていた場合も同じエラーとなるので、アンインストール、インストールの両方を確認しましょう。
MySQL5.5 の動作確認をする
インストールを終えたら、まず、mysqlのコマンドでバージョンをチェックします。
$ mysql --version
mysql Ver 14.14 Distrib 5.5.16, for Linux (i686) using readline 5.1
|
続けて、設定ファイル(/etc/my.cnf)を編集する前に mysqld を起動してみます。
$ /etc/init.d/mysqld start
mysqld を起動中: [ OK ]
|
とりあえず、上記でmysqldが動いたようです。
このとき、必ず、ログファイルを確認しましょう。一見、正常に動作しているように見えますが、エラーが出力されている場合があります。
ログファイル : /var/log/
mysqld.log
111029 17:43:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
111029 17:43:49 [Warning] option 'relay_log_space_limit': unsigned value 17179869184 adjusted to 4294967295
111029 17:43:49 [Note] Plugin 'FEDERATED' is disabled.
111029 17:43:49 InnoDB: The InnoDB memory heap is disabled
111029 17:43:49 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
111029 17:43:49 InnoDB: Compressed tables use zlib 1.2.3
111029 17:43:49 InnoDB: Using Linux native AIO
111029 17:43:49 InnoDB: Initializing buffer pool, size = 128.0M
111029 17:43:49 InnoDB: Completed initialization of buffer pool
111029 17:43:50 InnoDB: highest supported file format is Barracuda.
InnoDB: 127 rollback segment(s) active.
111029 17:43:50 InnoDB: Waiting for the background threads to start
111029 17:43:51 InnoDB: 1.1.8 started; log sequence number 52574
111029 17:43:51 [Warning] 'user' entry 'root@example.com' ignored in --skip-name-resolve mode.
111029 17:43:51 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
111029 17:43:51 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
111029 17:43:51 [Note] Event Scheduler: Loaded 0 events
111029 17:43:51 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.16-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Distributed by The IUS Community Project
|
上記は、5.5へアップグレードした時に最初に出力されたログ情報です。
[ERROR]が出力されていますね。
最初のエラー情報に
please run mysql_upgrade to create it とありますから、
このエラーは、
mysql_upgradeを動かせばエラー解消できそうです。
$ mysql_upgrade -uroot -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
:
:
|
mysql_upgradeを終えた後、mysqldを再起動してみましょう。その際のログ情報は、以下のようにエラーがなくなりました。
111029 17:54:01 [Note] /usr/libexec/mysqld: Normal shutdown
111029 17:54:01 [Note] Event Scheduler: Purging the queue. 0 events
111029 17:54:01 InnoDB: Starting shutdown...
111029 17:54:03 InnoDB: Shutdown completed; log sequence number 1601166
111029 17:54:03 [Note] /usr/libexec/mysqld: Shutdown complete
111029 17:54:03 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
111029 17:54:04 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
111029 17:54:04 [Warning] option 'relay_log_space_limit': unsigned value 17179869184 adjusted to 4294967295
111029 17:54:04 [Note] Plugin 'FEDERATED' is disabled.
111029 17:54:04 InnoDB: The InnoDB memory heap is disabled
111029 17:54:04 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
111029 17:54:04 InnoDB: Compressed tables use zlib 1.2.3
111029 17:54:04 InnoDB: Using Linux native AIO
111029 17:54:04 InnoDB: Initializing buffer pool, size = 128.0M
111029 17:54:04 InnoDB: Completed initialization of buffer pool
111029 17:54:04 InnoDB: highest supported file format is Barracuda.
111029 17:54:04 InnoDB: Waiting for the background threads to start
111029 17:54:05 InnoDB: 1.1.8 started; log sequence number 1601166
111029 17:54:05 [Warning] 'user' entry 'root@host.rise43.com' ignored in --skip-name-resolve mode.
111029 17:54:05 [Note] Event Scheduler: Loaded 0 events
111029 17:54:05 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.16-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 Distributed by The IUS Community Project
|
これでOKですね。
ここまで終えたら、設定ファイル(/etc/my.cnf)を編集を行います。
ただし、MySQL5.5では、かなりの機能が変更されていて、それにともなってパラメータの変更も多くあります。
MySQL5.5 で削除された機能一覧(おまけ) を参照の上、設定ファイル(/etc/my.cnf)の編集を行いましょう。
さくらインターネットでもMySQL5.5への対応が図られました。
さくらのレンタルサーバーなら、MySQL自体のアップグレードは、さくらインターネットでやってくれますから、使う側としたら、
- mysqldumpでちゃんとsqlバックアップをとる。
$ mysqldump -h mysqlXX.sakura.ne.jp -u USERNAME -p PASSWORD DATABASE > db_dump.sql
|
- mysqlでsqlバックアップをリストアする。
$ mysql -h mysqlYY.sakura.ne.jp -u USERNAME -p PASSWORD -D DATABASE < db_dump.sql
|
この手順だけでOKなはずです。
先にも書きましたが、いずれ5.5への移行を考える必要はありますね。その時期も他のレンタルサーバーの対応を見ていると、それほど遠くない時期でしょうね。
この記事が、MySQL5.5 へのアップグレードの参考になればうれしく思います。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :