CentOSでMySQLをバージョンアップさせる方法
MySQLをなるべく新しいバージョンにしておく大切さを「WordBenchしずおか vol.4に参加してきました!」で学び、今まで放置していたMySQLのバージョンアップを行いました。
その際にかなりつまづいたので、自分なりのやり方をメモ。
環境
・CentOS6.4
・MySQL5.1→5.6へ。
※「Nginxでお手軽にメンテナンス画面を表示する方法」でメンテナンス画面を表示させる環境を作ってから実行する。
MySQLをバージョンアップ
「MySQL :: Download MySQL Yum Repository」でCentOS6用のyumのリポジトリを探す。CentOSのバージョンとRed Hat Enterprise Linuxのバージョンは同じなので、Red Hat Enterprise Linux 6のリポジトリを探す。
リポジトリをインストール。
$ sudo rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
MySQLをフォルダごとバックアップ。「mysql」フォルダをとりあえず「mysql_51_bak」という名前でコピー。
$ sudo cp -arpf /var/lib/mysql/ /var/lib/mysql_51_bak/
「Nginxでお手軽にメンテナンス画面を表示する方法」で設定した方法でサーバーをメンテナンス画面にする。
$ sudo touch /var/tmp/do_maintenance
MySQLを停止させる。
$ sudo /etc/init.d/mysqld stop
MySQLをアップデート。
$ sudo yum update mysql-server
Total download size: 82 M Is this ok [y/N]:
と聞かれたら「y」を入力しEnter。
警告: rpmts_HdrFromFdno: V3 DSA/SHA1 Signature, key ID : NOKEY Retrieving key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Importing GPG key : Userid : MySQL Release EngineeringPackage: mysql-community-release-el6-5.noarch (installed) From : file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql Is this ok [y/N]: y
こんな感じで聞かれたら「y」を入力しEnter。
「Complete!」が表示されたらアップデート完了。
各テーブルの互換性をチェックする。
$ mysql_upgrade -u root -p
Enterを押した後MySQLのパスワードを入力。
最後にこのようなエラーが出た。
Could not create the upgrade info file '/var/lib/mysql/mysql_upgrade_info' in the MySQL Servers datadir, errno: 13
「/var/lib/mysql」のパーミッションを変更。
$ sudo chmod 775 /var/lib/mysql
再び「mysql_upgrade」を実行。
$ mysql_upgrade -u root -p
エラーなく終了。
「my.cnf」の[mysqld]に一行追加。
$ sudo vi /etc/my.cnf
[mysqld] explicit_defaults_for_timestamp=1
MySQLを起動させる。
$ sudo /etc/init.d/mysqld start
ところが起動しない。
こんな時は慌てずログファイルを確認。
$ sudo vi /var/log/mysqld.log
[Warning]や[ERROR]メッセージが出ている問題を解決する。
僕の場合は
[Warning] InnoDB: Doublewrite does not have page_no=0 of space: 0
[ERROR] InnoDB: space header page consists of zero bytes in data file ./ibdata1
などのエラーが表示されていた。
ログファイルや「ibdata1」が書き出せないようだったので、これらのファイルを削除(バックアップは先ほど行ったので削除した。)
$ sudo rm /var/lib/mysql/ibdata1
$ sudo rm /var/lib/mysql/ib_logfile1
$ sudo rm /var/lib/mysql/ib_logfile101
再びMySQLを起動させると無事起動した!
$ sudo /etc/init.d/mysqld start
MySQLのバージョンを確認。
$ mysql --version
mysql Ver 14.14 Distrib 5.6.21, for Linux (x86_64) using EditLine wrapper
5.6にバージョンアップされている。
ブログがちゃんと表示されているか確認をしてからメンテナンス画面を終了させる。
$ sudo rm /var/tmp/do_maintenance
以上で完了。
週3日の副業で月50万
月50万稼げたら年収は600万で、普通の人以上の生活ができます。
それが週3日で稼げたら、残りの4日をどう過ごしますか?
- 自分の趣味に全力を注ぐ
- 家族との時間を増やし、子供の成長をしっかりと見守る
- 毎週海外へ旅行へ行く
- 新しいことに挑戦する
- 何もせず、のんびり自由な時間を過ごす
週の半分以上が自分の好きなことに使えるのなら、人生は楽しい物になりますよね!
週2日の休みが増えるということは、
年間104日も増え、365日のうち208日も自分の時間に使えるのです!
更に、今30歳だとして、65歳まで働いたら、
3,640日も変わってきます!!10年以上ですよ!10年!!
週2日の休みのために5日を無駄にする生活をいつまで続けますか?
週4日の自由をたった3日で稼いで、自分のために自由に時間を使う生活をはじめましょう!
週3日で50万円稼げる案件は、業界最大級の案件を保有しているレバテックフリーランスで見つけられます。
1分で完了する無料登録で、時間の自由への一歩を踏み出しましょう!
おわりに
MySQLが起動しなかった時は焦りましたが、ログを見ることでなんとか解決することができました。
1時間ちょっとメンテナンスをしていたのも痛かったですが、アクセス数が少ないうちに経験を積めて良かったと思います。
せっかく更新しているブログがセキュリティの脆弱性でパーにならないよう、バージョン管理はしっかり行いたいですね。