Linuxでテープバックアップ

Linux, mysql No Comments

 しばらく前に「サーバに内蔵されているシングルテープドライブを利用したいんだけど」と相談されました。普通に考えると商用ソフトであるCA ARCserve Backupの使用を進めたりするのですが諸般の事情によりmt を利用することにしました。

 お客様が利用されているのは Red Hat Enterprise Linux 、CDを確認するとの三枚目に「mt-st-0.9b-2.2.2.i386.rpm」を見つけましたのでこちらをインストールして利用することとにします。サクっとCDをマウントrpmインストールを行いましょう。

# rpm -ihv mt-st-0.9b-2.2.2.i386.rpm

でインストールを行うとmtコマンドが利用できるようになります。コマンドの使用方法は他のホームページを参照してもらうとしまして、bashスクリプトでマネージャーもどきバックアップリストアする3本のスクリプトを作成しました。

 バックアップするシェルスクリプトとは、バックアップする対象フォルダは「/var/www」と「/etc」、あとはmysqlのdb名を指定して(ここではtest_data)バックアップするときに必要なrootアカウントのパスワードを設定(ここではroot_passとしましょう)、「/root/backup/latest/」へバックアップデータをまとめてテープで圧縮、その後「日付+tar.gz」でまとめたら「/root/backup/latest/」フォルダを削除、7日分の「日付+tar.gz」ファイルより古いファイルは削除するという設計にしています。さらに金曜日はテープが自動的にイジェクトされるようにしてみました。

 リストアスクリプトは「/root/restoring」フォルダへデータをリストアするという設計です。

 マネージャスクリプトはドライブの状態確認したり、テープの内容を消去したり、リストアスクリプトやバックアップスクリプトを実行したりします。またバックアップはcrontabで毎日決まった時間に起動するようにします。bashスプリクトで配列変数を使用していますのでバックアップしたいmysqlデータベースを追加していくだけでバックアップ可能です。

 このスプリクトは少し改変するだけで色々と転用方法があると思います。このデータベースバックアップ方法には欠点もあるので、内容を理解して使用してくださいね。

ZABBIXでサーバ管理・監視(Server編)

FreeBSD, mysql, zabbix No Comments

サーバ管理を行っていると色々と問題が発生します。最近はCPUも十分に高速になり、メモリーも安く・品質のよいものが簡単に手に入り容量もちょっと前では考えられない容量が簡単に手に入ります。ちなみにこのブログサービスを行っているFreeBSDサーバのメモリー容量は4GBあります。本当は8GB搭載して色々と楽しむ予定でしたが所詮は個人用途、zabbixで性能監視を行うと4GBでも余裕がありすぎて。自己満足以外の用途が思いつかなかったので我慢しています。

と言うわけでzabbixのインストールを行っていきましょう。ちなみにzabbixをインストールする前にmysqlとapacheとphp5、それにfpingをインストールしておいてくださいね。fpingのインストールは下記の通りです。

% cd /usr/ports/net/fping
% make install clean

では、準備は出来たでしょうか?今からzabbixをインストールしていきます。あ、重要なことが一つVer1.4.4で最初にインストールを行ったところ、アラームのメール送信がどうやっても不可能でした。よってVer1.4.5以降を必ず使用してください。それと実際に運用して行くに当たっての注意事項ですがHDDの容量はかなり使用します。mysqlのデータベースは容量の多いパテーションを使用するように設定してください。同時にmysqlのチューニングは忘れないこと!!他のページでmysqlのチューニング方法を記入していますが念のためこのページでもチューニング方法を記載します。

 

さてインストール自体は簡単です。いつも通りにportsを利用してサクっとインストールしてしまいましょう。

% cd /usr/ports/net-mgmt/zabbix/
% make install clean

オプションを聞かれてきますがチェックはそのままでインストールしてください。portsからインストールを行うとユーザーおよび不ループも自動的に追加されます。次にmysqlのチューニングを行っていくことにしましょう。mysqlのチューニング用のテンプレート(サンプル)が「/usr/local/share/mysql/」に用意されています。最近のシステムでは128MB程度のメモリーを積んでいるときに参考になる「my-medium.cnf」、もしくは512MB以上メモリーを積んでいるときに参考になる「my-large.cnf」のどちらかから設定を行っていくようになると思います。今回zabbixをインストールしたサーバは512Mのメモリーを搭載していますので「my-large.cnf」をコピーして使用することにします。

% cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf
(mysql5.1の場合は/usr/local/etc配下に設定ファイルをおきます。5.0の場合はdatabaseがある場所、デフォルトでは/var/db/mysql配下にコピーします)

 コピーが完了したら設定を行いましょう。基本的に設定する項目はありませんが「innodb_file_per_tableオプションを有効化」することをだけは忘れないようにしましょう。忘れるとデータベースサイズが大変なことになってしまいます。有効化の方法は「my.cnf」の「[mysqld]」直下に「innodb_file_per_table」を記載することです。ここまで設定が出来れば後は「/etc/rc.conf」に「mysql_enable=”YES”」を追加、mysqlを起動しましょう。

% ee /etc/rc.conf
mysql_enable=”YES”

% /usr/local/etc/rc.d/mysql-server start

その後、innodb_file_per_tableオプションが有効になっていることを確認します。

% mysql -u root -p パスワード
% mysql> SHOW VARIABLES LIKE ‘innodb_file_per_table’;

結果が以下になっていれば有効化されています。

Variable_name Value
innodb_file_per_table ON

以上でzabbixを利用するための前準備が完了しました。ここからは実際にzabbixが利用できるようにするための設定などを行っていきます。

まずはデータベースの作成、スキーマと初期データのインポートを行っていきましょう。データベース名は「zabbix」、データベースのユーザ名も「zabbix」、パスワードは「test」とします。環境などによって色々とあると思いますが適時調整してください。

最初にmysqlにzabbixデータベースを作成します。

 

% mysql -u root
% mysql> create database zabbix;
% mysql> grant all on zabbix.* to zabbix@localhost identified by ‘test’;

次にスキーマと初期データのインポートを行います。

 

% cd /usr/local/share/zabbix/create/schema/
% cat mysql.sql | mysql -u root -p<パスワード> zabbix
% cd ../data/
% cat data.sql | mysql -u root -p<パスワード> zabbix
% cat images_mysql.sql | mysql -u root -p<パスワード> zabbix

 

サーバーの設定ファイルを編集します。最初にsampleの設定ファイルをコピーして修正していきます。

% cp /usr/local/etc/zabbix/zabbix_server.conf.sample /usr/local/etc/zabbix/zabbix_server.conf

コピーが完了したらconfファイル(zabbix_server.conf)を実際の環境に合わせて修正します。修正箇所は下記の通りです。

—————————————————

ListenIPを自分のIPアドレスに修正

#ListenIP=127.0.0.1
ListenIP=172.16.10.41

Timeout系を30秒(最大)に変更

#Timeout=5
Timeout=30

pidファイルの位置を修正

#PidFile=/var/tmp/zabbix_server.pid
PidFile=/var/run/zabbix/zabbix_server.pid

logファイルの位置を修正

#LogFile=/tmp/zabbix_server.log
LogFile=/var/log/zabbix/zabbix_server.log

fpingのパスを修正

#FpingLocation=/usr/sbin/fping
FpingLocation=/usr/local/sbin/fping

—————————————————

最後にpidファイルとlogファイルの保存先を作成しましょう。

% mkdir /var/run/zabbix
% mkdir /var/log/zabbix
% chown zabbix:zabbix /var/run/zabbix
% chown zabbix:zabbix /var/log/zabbix

 

以上で起動する準備は整いました。あとは「rc.conf」に記載して起動できるように設定を行います。設定完了後、zabbixサーバを起動しましょう。

 

% ee /etc/rc.conf

zabbix_server_enable=”YES”

/usr/local/etc/rc.d/zabbix_server start

 

以上でzabbixサーバの起動が行われたはずです。あとはweb画面の設定を行っていきましょう。まずはapacheのドキュメントルート配下にzabbixディレクトリを作成します。作成後、zabbixのphpファイルをコピーします。

 

% mkdir /<apacheのドキュメントルート>/zabbix
% cd /usr/local/share/zabbix/
% cp -R php/* /<apacheのドキュメントルート>/zabbix

次にphp.iniの編集を行います。設定箇所は2カ所のみです。

% cd /usr/local/etc/
% ee php.ini

以下を修正
max_execution_time =300
date.timezone = Asia/Tokyo

 

以上が完了したらapacheを再起動してwebフロントエンドにアクセス、初回インストール作業を行います。

http://(ip)/zabbix/

基本的には「次へ」を選択していけば問題ありません。インストール作業が終わったら「admin/パスなし」でログインしてください。以上でserver編は終了です。次にエージェントをインストールしましょう。エージェントの設定が完了すればカラフルな画面が表示されるようになります。

(2009/1/4 追記:その1)
上記インストール方法で設定を[保存]する事は可能です。しかしながら保存した設定ファイルから復元を行うことは[モジュール不足のため不可能]でした。設定ファイルはxml形式なので[php5-xml]が必要になります。なのでインストール完了後、xmlモジュールも手動でインストールして下さい。FreeBSDでportsを利用した方法は下記の通りです。

# cd /usr/ports/textproc/php5-xml
# make install clean

モジュールインストール後は忘れ済みapacheを再起動して下さい。

(2009/1/4 追記:その2)
zabbix最新バージョンの1.6系でも、ここに記載した方法でインストールが可能です。(正月のうちに実験・検証できました)が、デフォルトユーザ「admin」のパスワードが「設定無し(空白)」から「zabbix」に変更されてます。マニュアルには記載がありますが念のため追記しておきます。

MySQLの簡単チューニング

mysql No Comments

dorakenが管理しているサーバは大体MySQLをインストールしている。最近でこそLDAPでアカウント管理することが行われているが、自分が管理者を始めたときには、まだまだ文献など少なく、当然対応するソフトウェアもあまりなかったのでMySQLでユーザ管理を行っていました。

最近ではWordPressなど(このブログもWordPressを使用しています)MySQLを積極的に利用しているソフトも増えてきて、ますますSQLサーバのチューニングが大事になってきていますので、512M程度のメモリーを積んでいるサーバでのMySQLチューニングパラメータを公開します。

主に自分が忘れないように、コピペで設定完了できるように、という事が一番大事なんですが(笑)

portsでインストールした場合、「/var/db/mysql/my.cnf」でチューニングを行います。以下、my.cnfの内容です。(注:mysql5.0で使用しているパラメータです)

 

# The MySQL client
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 128M
max_allowed_packet = 1M
table_cache = 1024
sort_buffer_size = 1M
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
server-id       = 1
innodb_buffer_pool_size = 350M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

 

512MBのメモリーを搭載したさーばでは、とりあえず上記のパラメータで問題ないと思います。詳しい説明は気が向いたら時間がとれたら追記していきたいと考えてます。

mysqlのインストール

mysql No Comments

portsを利用したmysql5.0のインストールを行います。

と言ってもインストールはとっても簡単。

まずはportsが置いてあるディレクトリで

% cd /usr/ports/databases/mysql50-server/

下記コマンドを打ち込むだけ。

% mkae WITH_CHARSET=utf8 WITH_XCHARSET=all install clean

makeオプションの意味は「WITH_CHARSET=utf8(デフォルトの文字コードはUTF8)、WITH_XCHARSET=all(サポートされている全ての文字コードが使用できるようにする)」です。

makeを実行するとあとは勝手に、必要なライブラリ等(依存関係)も含めてportsで、全自動でソースコードを取得、コンパイル、インストールを行ってくれます。

後は使用しているPCのスペックや使用用途に応じてチューニングを行うだけでOKです。