2013年12月12日木曜日

MySQL5.0から5.5への道 (そして起動に失敗しました。)

MySQLを5.0から5.5にアップデートした時のお話。

MySQLを5.0から5.5にアップデートする作業を頂いた時のお話です。
アップデート作業自体は問題無く終わったのですが・・・・・・。

早速スタートしてみると「失敗」。

はい。 マニュアルをちゃんと読んでませんでした。 my.cnfのパラメータも色々と使えなくなってました! (〃´ω`)エヘヘ
default-charactor-set とか。
詳しくはこちらを読んでください。

では以下、その時のエラーと対応の記録です。

[root@centos5.8 etc]# /etc/init.d/mysqld start
MySQL Daemon failed to start.
mysqld を起動中:                                           [失敗]
[root@centos5.8 etc]# vi /etc/my.cnf
[mysqld]
default-charactor-set=utf8削除します。
charactor-set-server=utf8追加します。

他 - 略
~~~~~~~~~~~~~~~~~~~

[root@centos5.8 etc]# /etc/init.d/mysqld start --skip-name-resolve
mysqld を起動中:                                           [  OK  ]

起動に成功しました( ´∀`) ホッ
では、おやすみ前にmysqld.logの方を確認してみましょう。

    ・・・・・・。

    ・・・。

    。


131212  0:00:00 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
131212  0:00:00 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
131212  0:00:00 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
131212  0:00:00 [ERROR] Column count of mysql.db is wrong. Expected 22, found 20. Created with MySQL 50095, now running                                                                                                                                                        50535. Please use mysql_upgrade to fix this error.
131212  0:00:00 [ERROR] mysql.user has no `Event_priv` column at position 29
131212  0:00:00 [ERROR] Cannot open mysql.event
131212  0:00:00 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.

な、何じゃこりゃああああああああああああああああ! 

見事に謎エラー出てました。
取り敢えずplease run mysql_upgrade to create itと騒ぎ立てておられるので、ここは大人しく実行してやろうじゃないですかー。

[root@centos5.8 ~]# mysql_upgrade -u root -p
Enter password:

~中略~

mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_topic                                   OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.time_zone_name                               OK
Running 'mysql_fix_privilege_tables'...
OK

MySQLアップグレード(mysql_upgrade)でのテーブルチェック、勉強になりました。 公式にしっかり書いてありますね。
今まではDB名にハイフン(-)を使っていた箇所が#に書き換えられてたのを手動で直していたのですが、これで解決するんですね。 
( ´∀`)エヘヘ 無知でした。

mysql_upgradeが完了。
再起動でmysqld.logにエラーが吐かれていない事を確認して、無事に終えることが出来ました。
 ε=(´ー`*)フゥ~
最後に、MySQLサーバーへログインしてSTATUSコマンドを実行した結果を貼っておきます!

mysql> STATUS;

Connection id:          9999
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.5.35 MySQL Community Server (GPL) by Remi
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 18 sec

Threads: 1  Questions: 4  Slow queries: 0  Opens: 12  Flush tables: 1  Open tables: 6  Queries per second avg: 0.222
--------------

mysql> Bye

今回、参考にさせて頂きましたサイト。

ありがとう御座いました。