既存環境に影響を与えないか確認をしつつ慎重にアップデートを行いたい。
仮想環境に同等の環境を準備し、アップデート作業を実際に行い、影響がないかどうかを確かめた。
仮想環境構築は別記事にまとめる。
目次
アップデートの準備
データベースのフルバックアップをとる
// フルバックアップ
# mysqldump --single-transaction -u root -p --all-databases > 出力ファイル名
// 復元
# mysql -u ユーザー名 -p < dumpファイル名
現在のバージョンを確認
# mysql --version
mysql Ver 14.14 Distrib 5.5.48, for Linux (x86_64) using readline 5.1
mysqlのリポジトリを更新
// mysql80までのリポジトリが更新される
# rpm -Uvh mysql80-community-release-el6-n.noarch.rpm
// ここで既存のリポジトリとコンフリクトを起こす場合があるので既存のリポジトリを確認して削除(待避)する
# ls /etc/yum.repos.d
# rpm -e --nodeps mysql57-community-release (mysql57-community-releaseが既にあった場合)
// mysql-community.repoで有効にするリポジトリを切り替える
# vi /etc/yum.repos.d/mysql80-community.repo
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1 ←有効にしたいバージョンのリポジトリのみ'1'にする
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=0 ←それ以外のバージョンのリポジトリは無効'0'にする
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
アップデートしたいバージョンに応じてリポジトリを切り替える
今回は5.5⇒5.7にしたいのだが、バージョンは一つずつ上げなければならないようなので、現在が5.5なら5.6を有効にする。
5.6にできたら次は5.6を無効にして5.7を有効に・・・と同じ作業を繰り返してバージョンを上げていく。
ちなみにレポジトリの切り替えをしてくれるツールもあるようなのでそちらを使う場合はこんな感じ
// yum-config-managerのコマンドがない場合は
# yum install yum-utils
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql55-community
ただ、この方法だと、どのリポジトリが有効で無効なのかがわかりにくいので結局直接書き換えるほうでやった。笑
いざ、アップデート5.5⇒5.6
// アップデート
# yum update mysql --enablerepo=mysql56-community --disablerepo=updates,base,extras
// mysqldの再起動
# /etc/init.d/mysqld restart
// テーブルのアップグレード
# mysql_upgrade -u root -p
// エラーログの確認(テーブルアップグレード前にエラーが出てる)
# cat /var/log/mysql/error.log
(テーブルアップグレード後、数時間でエラーがでていなければアップグレード完了)
// バージョンを確認
# mysql --version
mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper
以上、同様の操作を5.6⇒5.7も適宜読み替えながら行う
コメント