シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

Zabbix で使用しているデータベースのデータディレクトリの移動

はじめに

技術部ネットワーク課の二之宮です。

Zabbix のサーバーのシステム領域を含むファイルシステムのディスク使用率が 90% を超えました。

検証目的で作成したサーバーで、取り合えず 1つのファイルシステムに全てを詰め込んで構築していましたので、なんとかすることにしました。

やったこと

Zabbix のデータベースを、空き領域の少ないファイルシステムから、空き領域の多いファイルシステムに移動しました。

当初、データベースを移動し、MariaDB のデータディレクトリとソケットファイルの設定、Zabbix Server, PHP それぞれのデータベースのソケットファイルの設定を変更することで行いましたが、社内勉強会で、ソケットファイルはファイルシステムの容量を多く消費するわけではないので、元の場所に残しても良いのではないかとの意見があり、この方法を検証しました。

検証環境

ソフトウェア構成
種類 ソフトウェア・バージョン
Zabbix ソフトウェア Zabbix server 4.0.14
プラットフォーム CentOS 7.7
データベース管理システム MariaDB 5.5( InnoDB )
フロンドエンド Apache 2.4.6, PHP 5.4.16
パーティション構成
ファイルシステム サイズ マウントポイント
/dev/sda1 10 GB /
/dev/sda3 451 GB /mnt

検証手順

MariaDB のソケットファイルの場所は変えずに、データディレクトリを移動する。

  1. Zabbix Server 停止
    systemctl stop zabbix-server
  2. MariaDB 停止
    systemctl stop mariadb
  3. MariaDB のデータディレクトリをコピー
    rsync -av /var/lib/mysql /mnt/
  4. 旧データディレクトリ名変更
    今回は、万が一の時に元に戻せるように、削除せずに名前を変更しました。
    mv -v /var/lib/mysql /var/lib/mysql.bak
  5. ソケットファイル用ディレクトリ再作成
    mkdir /var/lib/mysql
  6. ユーザーとオーナーを変更
    chown mysql:mysql /var/lib/mysql
  7. MariaDB の設定変更
    データディレクトリの設定を、移動後のパスに変更する。
    vi /etc/my.cnf
    • 変更前
      datadir=/var/lib/mysql
    • 変更後
      datadir=/mnt/mysql
  8. MariaDB 起動
    systemctl start mariadb
  9. Zabbix Server 起動
    systemctl start zabbix-server
  10. 旧データディレクトリ削除
    様子を見て問題なければ削除して、空き領域を確保する。
    rm -rf /var/lib/mysql.bak

検証結果

MariaDB のソケットファイルの場所は変えない方法で、データディレクトリを移動し、移動後も、Zabbix が問題なく稼働することが確認できました。

終わりに

ソケットファイルを残す方法だと、データベースの移動が MariaDB のデータディレクトリの指定を 1か所替えるだけで行えるため、より良い方法だと思いました。