いや簡単じゃなかったし。
妖狐鯖で使用しているMySQLをRemiリポジトリ版からMySQL公式リポジトリ版に入れ換えを先行して二号機で実施しました。
そのうち初号機でもう1回やる羽目になるので手順をメモっておきます。
入替前後のパッケージ情報は次のとおりです。
入替前:mysql-server-5.5.52-1.el6.remi.x86_64
入替後:mysql-community-server.x86_64 0:5.6.33-2.el6
1.データベースのバックアップ
まずはmysqldを停止する。
妖狐鯖ではPostfixとDovecotのアカウント管理にMySQLを使用しているため、ついでにこれらも停止しておく。
その後データベースのコールドバックアップを行う。
まあ、要するに /var/lib/mysql 配下のファイルをコピーするだけ。
また /etc/my.cnf と /etc/my.cnf.d/* も保存しておく
2.MySQL公式リポジトリのインストール
MySQL Repositories から該当するリポジトリをインストールします。
今回はついでに5.6系へアップグレードをするので、http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm を使用します。
# wget http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm # yum localinstall mysql-community-release-el6-5.noarch.rpm
インストール後、リポジトリが有効になっているか確認します。
# yum repolist 読み込んだプラグイン:fastestmirror, priorities, security Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp リポジトリー ID リポジトリー名 状態 base CentOS-6 - Base 6,696 *epel Extra Packages for Enterprise Linux 6 -x86_64 12,219 extras CentOS-6 - Extras 62 mysql56-community MySQL 5.6 Community Server 299 updates CentOS-6 - Updates 482 repolist: 19,758
「mysql56-community」が表示されればOKです。表示されていない場合は、
# yum-config-manager --enable mysql56-community
で有効化します。
3.公式レポジトリ版MySQLをインストール
yumを使えばパッケージ入替とか面倒なコトは勝手にやってくれるので、おもむろに
# yum install mysql-server
と叩くだけでOK――
: ========================================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================= インストールしています: mysql-community-client x86_64 5.6.33-2.el6 mysql56-community 18 M 置き換えています mysql.x86_64 5.5.52-1.el6.remi mysql-community-libs x86_64 5.6.33-2.el6 mysql56-community 1.9 M 置き換えています mysql-libs.x86_64 5.5.52-1.el6.remi mysql-community-libs-compat x86_64 5.6.33-2.el6 mysql56-community 1.6 M 置き換えています mysql-libs.x86_64 5.5.52-1.el6.remi mysql-community-server x86_64 5.6.33-2.el6 mysql56-community 54 M 置き換えています mysql-server.x86_64 5.5.52-1.el6.remi 依存性関連でのインストールをします。: mysql-community-common x86_64 5.6.33-2.el6 mysql56-community 308 k トランザクションの要約 ========================================================================================================================= インストール 5 パッケージ 総ダウンロード容量: 76 M これでいいですか? [y/N]y パッケージをダウンロードしています: (1/5): mysql-community-client-5.6.33-2.el6.x86_64.rpm | 18 MB 00:01 (2/5): mysql-community-common-5.6.33-2.el6.x86_64.rpm | 308 kB 00:00 (3/5): mysql-community-libs-5.6.33-2.el6.x86_64.rpm | 1.9 MB 00:00 (4/5): mysql-community-libs-compat-5.6.33-2.el6.x86_64.rpm | 1.6 MB 00:00 (5/5): mysql-community-server-5.6.33-2.el6.x86_64.rpm | 54 MB 00:04 ------------------------------------------------------------------------------------------------------------------------- 合計 11 MB/s | 76 MB 00:07 これでいいですか? [y/N]y rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションの確認エラー file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-community-libs-compat-5.6.33-2.el6.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64 file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-community-libs-compat-5.6.33-2.el6.x86_64 conflicts with file from package compat-mysql51-5.1.54-1.el6.remi.x86_64 エラーの要約 ------------- #
…怒られた(´・ω・`)
compat-mysql51が依存関係衝突しているみたいなので、コイツを削除すれば……
# yum erase compat-mysql51 : ========================================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================= 削除: compat-mysql51 x86_64 5.1.54-1.el6.remi @remi 4.2 M 依存性関連での削除をします。: cronie x86_64 1.4.4-16.el6_8.2 @updates 174 k cronie-anacron x86_64 1.4.4-16.el6_8.2 @updates 43 k crontabs noarch 1.10-33.el6 @anaconda-CentOS-201410241409.x86_64/6.7 2.4 k dovecot-mysql x86_64 1:2.0.9-22.el6 @base 18 k mysql-server x86_64 5.5.52-1.el6.remi @remi 45 M perl-DBD-MySQL x86_64 4.013-3.el6 @base 338 k postfix x86_64 2:2.6.6-6.el6_7.1 @updates 9.7 M sysstat x86_64 9.0.4-31.el6 @base 826 k yum-cron noarch 3.2.29-75.el6.centos @updates 28 k トランザクションの要約 ========================================================================================================================= 削除 10 パッケージ インストール済み容量: 60 M これでいいですか? [y/N]
…ちょwww
cronie(cronコマンド)巻き添えとかマジかよw
消すのは後始末が面倒だからないな……
解決方法はないものかと探したら、それっぽい情報を発見。
remi リポジトリから入れた MySQL を CentOS リポジトリのものに戻す (ngの日記)
これはremiレポジトリ版からCentOS Base版に戻すパターンですが、同じように依存関係衝突を起こしています。
それを解決するためにyumの対話モードを使用するというものです。
これに倣って、衝突しているmysql-community-libs-compatのインストールとcompat-mysql51の削除を同時に実行します
# yum shell 読み込んだプラグイン:fastestmirror, priorities, security Yum シェルの設定をしています > install mysql-community-libs-compat インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp > erase compat-mysql51-5.1.54-1.el6.remi.x86_64 削除処理の設定をしています > transaction ========================================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================= インストールしています: mysql-community-libs-compat x86_64 5.6.33-2.el6 mysql56-community 1.6 M 置き換えています mysql-libs.x86_64 5.5.52-1.el6.remi 削除: compat-mysql51 x86_64 5.1.54-1.el6.remi @remi 4.2 M トランザクションの要約 ========================================================================================================================= インストール 1 パッケージ 削除 1 パッケージ > run --> トランザクションの確認を実行しています。 ---> Package compat-mysql51.x86_64 0:5.1.54-1.el6.remi will be 削除 ---> Package mysql-community-libs-compat.x86_64 0:5.6.33-2.el6 will be obsoleting --> 依存性の処理をしています: mysql-community-libs(x86-64) >= 5.6.10 のパッケージ: mysql-community-libs-compat-5.6.33-2.el6.x86_64 ---> Package mysql-libs.x86_64 0:5.5.52-1.el6.remi will be 不要 --> トランザクションの確認を実行しています。 ---> Package mysql-community-libs.x86_64 0:5.6.33-2.el6 will be obsoleting --> 依存性の処理をしています: mysql-community-common(x86-64) >= 5.6.10 のパッケージ: mysql-community-libs-5.6.33-2.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package mysql-community-common.x86_64 0:5.6.33-2.el6 will be インストール --> 依存性解決を終了しました。 ========================================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ========================================================================================================================= インストールしています: mysql-community-libs x86_64 5.6.33-2.el6 mysql56-community 1.9 M 置き換えています mysql-libs.x86_64 5.5.52-1.el6.remi mysql-community-libs-compat x86_64 5.6.33-2.el6 mysql56-community 1.6 M 置き換えています mysql-libs.x86_64 5.5.52-1.el6.remi 削除: compat-mysql51 x86_64 5.1.54-1.el6.remi @remi 4.2 M 依存性関連でのインストールをします。: mysql-community-common x86_64 5.6.33-2.el6 mysql56-community 308 k トランザクションの要約 ========================================================================================================================= インストール 3 パッケージ 削除 1 パッケージ 合計容量: 3.8 M これでいいですか? [y/N]y パッケージをダウンロードしています: rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : mysql-community-common-5.6.33-2.el6.x86_64 [########################################## ] 1/5 インストールしています : mysql-community-libs-5.6.33-2.el6.x86_64 [############################################ ] 2/5 インストールしています : mysql-community-libs-compat-5.6.33-2.el6.x [########################################## ] 3/5 削除中 : compat-mysql51-5.1.54-1.el6.remi.x86_64 4/5 削除中 : mysql-libs-5.5.52-1.el6.remi.x86_64 5/5 warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave Verifying : mysql-community-common-5.6.33-2.el6.x86_64 1/5 Verifying : mysql-community-libs-5.6.33-2.el6.x86_64 2/5 Verifying : mysql-community-libs-compat-5.6.33-2.el6.x86_64 3/5 Verifying : compat-mysql51-5.1.54-1.el6.remi.x86_64 4/5 Verifying : mysql-libs-5.5.52-1.el6.remi.x86_64 5/5 削除しました: compat-mysql51.x86_64 0:5.1.54-1.el6.remi インストール: mysql-community-libs.x86_64 0:5.6.33-2.el6 mysql-community-libs-compat.x86_64 0:5.6.33-2.el6 依存性関連をインストールしました: mysql-community-common.x86_64 0:5.6.33-2.el6 置換: mysql-libs.x86_64 0:5.5.52-1.el6.remi Finished Transaction > exit Leaving Shell #
キタ━━━ヽ( ゚∀゚)人(゚∀゚ )メ( ゚∀゚)人(゚∀゚ )メ( ゚∀゚)人(゚∀゚ )ノ━━━!!!!
この前に一度 mysql と mysql-server を削除していたため、この後しれっと入れ直して完了。
4.アップグレード後の一手間
あとはCentOSのMySQLを5.5から5.6にアップデートする (karakaram-blog) を参考にざっくりと。
おもむろに mysqld を起動し、バージョンを確認。
# mysql --version mysql Ver 14.14 Distrib 5.6.33, for Linux (x86_64) using EditLine wrapper
エラーログを見ると、幾つか警告が出ています。
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
必須になった explicit_defaults_for_timestamp オプションを /etc/my.cnf の [mysqld] セクションに追加します。
また、エラーメッセージに「Please use mysql_upgrade to fix this error.」としつこく書かれているので、 mysql_upgrade を実行。
# mysql_upgrade -u root -p Enter password: Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Warning: Using a password on the command line interface can be insecure. Running 'mysqlcheck with default connection arguments Warning: Using a password on the command line interface can be insecure. mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.host OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.servers OK mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Running 'mysql_fix_privilege_tables'... Warning: Using a password on the command line interface can be insecure. Running 'mysqlcheck with default connection arguments Warning: Using a password on the command line interface can be insecure. Running 'mysqlcheck with default connection arguments Warning: Using a password on the command line interface can be insecure. : : OK #
警告メッセージは「コマンドラインにパスワード入れるのは危険だよ」というものです。
一通り終われば mysqld を再起動しておしまいです。