Postfixが消えるMySQLからMariaDBへの移行

※記事内に商品プロモーションを含む場合があります

2015年に、現在のサーバを構築した時はMySQL5.6でした。

それから2年が過ぎ、CentOS含め多くのLinuxディストリビューションが
MySQLからMAriaDBに移行していました。

MySQLのバージョンも上がっているのと、MySQLプロジェクトが閉鎖的
らしいのでMariaDBに移行しました。
【参考】MySQL5.7 からMariaDB 10.0に移行しました

MariaDBはMySQL派生として開発されているので
使い方などは、ほぼ一緒です。

CentOSにインストールした場合は、
サービスの起動などはmysqld ではなく mariadb となります。
データベースへの接続はmysqlのままです。

CentOS7でMySQLからMariaDBへの移行

こちらの記事を参考にしました。
【参考】MySQLからMariaDBへの移行作業メモ

CentOS7は標準でyumからインストール出来る様ですが、
最新版をインストールしたい場合はこちらを参考にリポジトリを追加して下さい。
【参考】CentOS7にMariaDB10.1をインストールする方法

MariaDBの移行ではMySQLのデータがそのまま残っていましたが
場合によっては消える可能性があるので、前もってバックアップしておくと良いです。

バックアップの方法はいろいろあるので、各々調べて下さい。

MySQLの停止とアンインストール

systemctl disable mysqld
MySQLの自動起動の停止(CentOS7よりchkconfigが無くなりました)

systemctl stop mysqld
起動中のMySQLを停止

yum remove mysql-server mysql-devel mysql-libs
インストールされているMySQL関係のパッケージを削除

MariaDBのインストールと有効化

yum install MariaDB-devel MariaDB-client MariaDB-Server -y
MariaDBと関連パッケージをインストールします。

もし、インストールに失敗する場合はMySQL関連パッケージが残っている
かもしれません。
yum list installed | grep mysql
で調べる事が出来ます。

cp /etc/my.cnf.rpmsave /etc/my.cnf
アンインストール時に保存されたMySQL時の設定ファイルmy.cnfを
元の名前でコピーします。

systemctl enable mariadb
MariaDBの自動起動の設定。

systemctl start mariadb
MariaDBデータベースサーバの起動。

これで移行は完了です。
場合によってはphp-mysqlなどの再インストールなどが必要かもしれません。

Postfixが消えて、メールが届かなくなった

Postfixが消えて、メールが届かなくなった

DBの移行を行ったのは先週の日曜日の朝、
その日はiPhone画面修理の為、出かけていました。

その日はいつも届くはずのメールが届かず、
時々振り分けられている迷惑メールフォルダにもありません。

事態に気付いたのは月曜日。

どうもmysql-libsがpostfixと依存関係にある様で
mysql-libsをアンインストールするとpostfixまで、勝手にアンインストール
される様です。

[Postfix]そうだったのかキミはMySQLと関係を持っていたのか!

実際にyumからログを漁ってみるとありました。

Begin time : Sun Sep 24 07:00:21 2017
Return-Code : Success
Command Line : remove mysql-server mysql-devel mysql-libs
Transaction performed with:
Installed rpm-4.11.3-25.el7.x86_64 @base
Installed yum-3.4.3-154.el7.centos.noarch @base
Installed yum-plugin-fastestmirror-1.1.31-42.el7.noarch @base
Packages Altered:
Erase mysql-community-client-5.6.37-2.el7.x86_64 @mysql56-community
Erase mysql-community-devel-5.6.37-2.el7.x86_64 @mysql56-community
Erase mysql-community-libs-5.6.37-2.el7.x86_64 @mysql56-community
Erase mysql-community-server-5.6.37-2.el7.x86_64 @mysql56-community
Erase postfix-2:2.10.1-6.el7.x86_64 @base
Erase sysbench-1.0.6-1.el7.x86_64 @epel
Scriptlet output:
1 warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
2 warning: /etc/postfix/virtual saved as /etc/postfix/virtual.rpmsave
3 warning: /etc/postfix/main.cf saved as /etc/postfix/main.cf.rpmsave
4 warning: /etc/postfix/header_checks saved as /etc/postfix/header_checks.rpmsave

PostfixとSysbenchが依存関係でアンインストールされています。
律儀にpostfixの設定ファイルを.rpmsaveで保存されています。

postfixの復活

yum install postfix
yumでpostfixをインストール。

/etc/postfix/virtual.rpmsave
/etc/postfix/main.cf.rpmsave
/etc/postfix/header_checks.rpmsave

上の3つの設定ファイルのファイル名から、.rpmsaveを除去

systemctl enable postfix
systemctl start postfix
postfixの自動起動を有効化し、メールサーバを起動。

このままだと、不正中継が発生するので
postmap /etc/postfix/virtual

で設定反映。
これて不正中継はしなくなりました。

あくまで私の環境での設定なので、この通りにやっても
うまくいかないかもしれませんが、ご了承下さい。

MariaDBのチューニング

今までは適当に設定していましたが、
今回はMySQLTunerを使ってチューニングを行いました。

MySQLTunerはPerlで動くツールなので、
Perlがインストールしてある必要があります。

MySQL用ですが、MySQLから派生したMariaDBでも使用可能です。

ダウンロードは、適当なディレクトリに移動し、以下のコマンドで出来ます。
wget mysqltuner.pl -O mysqltuner.pl

MySQLTunerの実行は以下のコマンドで出来ます。
perl mysqltuner.pl –user root –pass password

調査結果が表示されますが、下の方のVariables to adjust
に調整すべき項目があるのでメモリ容量にも気をつけつつ
/etc/my.cnfを編集します。

【参考】MySQLTunerでMySQLのチューニングを診断する方法
【参考】MariaDBのチューニングにもMySQLTunerが役立つぞ、という話

現在の設定値

このサーバ、さくらのVPS 2Gで設定値はこちらです。
query_cache_limit=16M
query_cache_size=0
query_cache_type=0
sort_buffer_size = 1M
read_buffer_size = 256K
table_definition_cache = 400
innodb_log_file_size = 16M
innodb_buffer_pool_size = 128M
key_buffer_size = 32M
max_heap_table_size = 48M
tmp_table_size = 48M

max_heap_table_size とtmp_table_sizeはもっと、大きくしろと言われ
大きくすると、もっともっとと言われるので現在は48MBにしています。