zabbix6.4アプライアンスで追加ディスクやLVMへDB保存先を変更する方法を解説

zabbix Linux
スポンサーリンク
スポンサーリンク

はじめに

zabbix6.4のアプライアンス版では、/dev/sda5が/var/lib/mysql(MYSQLで使用するメインディレクトリ)にマウントされています。/dev/sda5ではなく、他のディスクやLVMを使用する場合は、/dev/sda5をそのままコピーするだけでは上手くいきません。今回は、管理人がメモしたことを元ネタとして手順を公開します。

成し遂げたいこと

/dev/sda5の代わりに新規に作成したLVMの論理ボリュームを使用してmysqlのデータを格納します。

前提

  • lvm2パッケージをインストール済みであること。していない場合はdnf install lvm2でインストールしてください。
  • 使用するディストリビューションはAlma Linuxですが、Ubuntuでも同様の手順となります。

LVMの作成

LVM用に追加したディスクを確認します。

[コマンド]
lsblk

ここでは、/dev/sdb、/dev/sdcが追加されたと仮定しましょう。

pvの作成
[コマンド]
pvcreate /dev/sdb /dev/sdc

[確認コマンド]
pvs
vgの作成
[コマンド]
vgcreate vg-name /dev/sdb /dev/sdc

[確認コマンド]
vgs
lvの作成
[コマンド]
lvcreate -n lv-name -L xxxG vg-name
※xxxには拡張したディスクサイズを数字で入れる。

[確認コマンド]
lvs
LVMが作成されたことを確認
[コマンド]
ll /dev/mapper/
→ vg-name-lv-nameがあるはずです

XFSでフォーマット

[コマンド]
mkfs.xfs /dev/mapper/vg-name-lv-name

[確認コマンド]
xfs_info /dev/mapper/vg-name-lv-name
※parted -lだとLVMで作成したデバイスが表示されないためです。

システムの停止

[コマンド]
systemctl stop php-fpm zabbix-server zabbix-agent
systemctl stop mysqld

[確認コマンド]
systemctl status zabbix-server
systemctl status zabbix-agent
systemctl status php-fpm
systemctl status mysqld

LVMをマウント

先ほど作成したLVMへアクセスすることができるように、新規に作成した/mnt/dataというマウントポイントへマウントします。

[コマンド]
cd /mnt/
mkdir data
cd ~/
mount /dev/mapper/vg-name-lv-name /mnt/data/

[確認]
df -h

/var/lib/mysqlを/mnt/dataへコピー

[コマンド]
cp -pr /var/lib/mysql /mnt/data
※pでディレクトリがない場合に新規作成、rで再帰的にコピー

MYSQLの設定ファイルの修正

/etc/my.cnf.d/mysql-server.cnf

次のように修正します。戻し作業を簡単にするためにもコメントアウトして新しく追加するのが良いでしょう。

[mysqld]
datadir=/mnt/data/mysql
socket=/mnt/data/mysql/mysql.sock
/etc/my.cnf.d/client.cnf
[client]
socket=/mnt/data/mysql/mysql.sock
※元々は空欄ですが新規に追加してください
/etc/my.cnf.d/zabbix.cnf
[修正箇所]
datadir =/mnt/data/mysql/
確認

mysqlに接続できるか確認をしてみます。

systemctl start mysqld
mysql -uroot -p
→access denyのように表示されるはずです。これで問題ありません。
systemctl stop mysqld

PHP設定ファイルの修正

/etc/php.ini
[修正箇所]
mysqli.default_socket = /mnt/data/mysql/mysql.sock

[確認コマンド]
cat /etc/php.ini | grep mysqli.default_socket

zabbixサーバ設定ファイルの修正

/etc/zabbix/zabbix_server.conf
[修正箇所]
DBSocket=/mnt/data/mysql/mysql.sock

[確認コマンド]
cat /etc/zabbix/zabbix_server.conf | grep DBSocket=

システムの起動

[コマンド]
systemctl start mysqld
systemctl start zabbix-agent zabbix-server php-fpm

[確認コマンド]
systemctl status mysqld
systemctl status zabbix-server
systemctl status zabbix-agent
systemctl status php-fpm

ここで、各サービスが正常にUPしていれば成功です。

最後に、再起動した後に新規マウントポイントへ自動的にLVMをマウントするようにfstabの修正を行います。

自動マウントの有効化

デフォルトでは、再起動時に新しく増設したLVM(のLVに作成したファイルシステム)を/mnt/dataにマウントしません。/etc/fstabに定義がされていないためです。そこで自動的にマウントされるように追記します。

その前に、追記に必要な情報について確認します。

[コマンド]
blkid
→/dev/mapper/vg-name-lv-name: UUID="xxx" BLOCK_SIZE="4096" TYPE="xfs"
 が表示されます。
[コマンド]
vi /etc/fstab
こちらは、既に記載されているものと同様な書き方で一番下に追加すればよいです。
また、/var/lib/mysqlへ自動的にマウントされないようにコメントアウトします。

[確認コマンド]
cat /etc/fstab

最後に、自動的にマウントを行うコマンドを投入し、新規に追加した行で定義したデバイスが自動的にマウントされること、コメントアウトしたデバイスがマウントされないことを確認します。

[コマンド]
mount -a

[確認コマンド]
df -h

備忘録(手順とは関係ない)

マウントできない場合

模索しながらやった時にLVMを/mnt/dataへマウントができなかったのですが、これは、マウントする前にddコマンドでディスクをコピーしていたからです。手順通りに行えばそういったことはないのですが、原因はUUIDの重複です。次のコマンドで対処可能です。

xfs_repair -L /dev/mapper/vg--name-lv--name ※修復が必要な場合があるため
xfs_admin -U generate /dev/mapper/vg--name-lv--name ※UUIDを新規作成
Amazon EBSマウント時の「wrong fs type, bad option, bad superblock on…」というエラーを解決する方法を教えてください | DevelopersIO
Amazon EBSマウント時にUUIDの重複エラーが発生した時の解決方法を紹介します。

コメント