zabbixのMySqlデータベースが壊れた。まめにバックアップして、圧縮することにした。

Zabbixでサーバを監視していていて、いたって快適に使っていたのですが、こんなメッセージが携帯メールに届いた。

「Zabbix database is down.」

mysqlが壊れたみたい。

/var/lib/mysql/ibdata1 のサイズが6ギガくらいになっていた。

修復してもどうしてもだめなので、結局ZABBIZサーバの再構築をした。

データベースのバックアップをさぼっていたので、バックアップすることにした。
せっかくだからその時圧縮も行うことにした。

無理があるが、その時のシェルスクリプト。
root_passwd=mysql <-ここではmysqlのrootのパスワードを指定する。

#!/bin/sh
root_passwd=mysql
prefix="mysql.mysqldump"
nowtime="$(date +%Y%m%d%H%M%S)"
backup_file="${prefix}_${nowtime}"
cd /backup

/etc/init.d/httpd stop
/etc/init.d/zabbix-server stop
mysqldump -u root -p${root_passwd} -x --all-database > ${backup_file}
mysqladmin -u root -p${root_passwd} -f drop zabbix
/etc/init.d/mysqld stop
rm -rf /var/lib/mysql/ib_logfile0
rm -rf /var/lib/mysql/ib_logfile1
rm -rf /var/lib/mysql/ibdata1
/etc/init.d/mysqld start
mysqladmin -u root -p${root_passwd} create zabbix
mysql -u root -p${root_passwd} zabbix < ${backup_file}
/etc/init.d/zabbix-server start
/etc/init.d/httpd start

ところで、/etc/my.cnf に innodb_file_per_table を追加した。
その時のmy.cnf が以下の通り。

[mysqld]
innodb_file_per_table
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

default-character-set=utf8
skip-character-set-client-handshake

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

コメントを書く

*

全自動マージャン卓
10万円未満で買える
折りたたんで収納


会社に1台

AMAZON