経験知ロゴ

CentOSでMySQLをバージョンアップさせる方法

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のリポジトリを探す。
mysqlのリポジトリを調べる

リポジトリをインストール。

$ 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 Engineering 
 Package: 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

ところが起動しない。
mysql起動失敗

こんな時は慌てずログファイルを確認。

$ 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日の休みが増えるということは、

52週(1年) × 2日 = 104日

年間104日も増え、365日のうち208日も自分の時間に使えるのです!

更に、今30歳だとして、65歳まで働いたら、

104日 × 35年 = 3,640日

3,640日も変わってきます!!10年以上ですよ!10年!!

週2日の休みのために5日を無駄にする生活をいつまで続けますか?

週4日の自由たった3日で稼いで、自分のために自由に時間を使う生活をはじめましょう!

週3日で50万円稼げる案件は、業界最大級の案件を保有しているレバテックフリーランスで見つけられます。

1分で完了する無料登録で、時間の自由への一歩を踏み出しましょう!

おわりに

MySQLが起動しなかった時は焦りましたが、ログを見ることでなんとか解決することができました。

1時間ちょっとメンテナンスをしていたのも痛かったですが、アクセス数が少ないうちに経験を積めて良かったと思います。

せっかく更新しているブログがセキュリティの脆弱性でパーにならないよう、バージョン管理はしっかり行いたいですね。

▼役に立ったらシェアをお願いします