2013年2月14日木曜日

設定ファイルの設定値について

mha-managerでは設定ファイルで設定できる項目が多いので、
ちょっと簡単にまとめてみました(ΦωΦ)フフフ…

■設定ファイルの構成について

まず、mha-managerを起動すると、デフォルトの設定ファイルとして、
/etc/masterha_default.cnfが読み込まれるように作られているみたいです。

このファイルが無い場合には、次のようなメッセージが表示されますが、
特に動作には影響はないみたいです。
Connecting to a master server failed. Reading configuration file /etc/masterha_default.cnf and /etc/app1.cnf again, and trying to connect to all servers to check server status..
mha-managerでは起動時などに利用する設定ファイルを指定できるため、
各レプリケーション環境ごとに設定ファイルを作り、 複数プロセスを起動させる際に別々の設定ファイルを指定することで、
別々のレプリケーション環境の監視も行えるようです(・∀・)イイネ!!

その際に、/etc/masterha_default.cnfは必ず起動する際に読み込まれるので、
どちらの監視でも利用する設定値を記述しておくことで、
個々の設定ファイルに再度記述する手間を省くことが可能になる( ゚Д゚ノノ"☆パチパチパチパチ

/etc/masterha_default.cnfを使わない場合には、
とりあえず空のファイルをとりあえずエラーは出なくなる!m9( ゚Д゚) ドーン!

別々の設定ファイルを指定する場合には次のようにします。
※例ではバックグラウンドで起動させています。
#レプリケーション環境Aを監視するmha-manager起動する
nohup masterha_manager --conf=/etc/app1.cnf < /dev/null > /tmp/mha/log/app1.log 2>&1 &
#レプリケーション環境Bを監視するmha-manager起動する
nohup masterha_manager --conf=/etc/app2.cnf < /dev/null > /tmp/mha/log/app2.log 2>&1 &
■設定ファイル内のスコープについて
設定ファイル内はセクション単位で分かれています。

大きく分けて[server default]セクションと[server_XXX]セクションに分かれています。
各セクションで定義された値のスクープは、定義されたファイルなどによって変わるみたいで、次のようになっているみたいです。
・/etc/masterha_default.cnfの[server default]セクション内に書かれた値のスコープをグローバルとする。
・各設定ファイル内(/etc/app1.cnfなど)の[server default]セクション内に書かれた値のスコープをアプリケーションとする。
・各設定ファイル内(/etc/app1.cnfなど)の[server_XXX]セクション内に書かれた値のスコープをローカルとする。

・[server default]セクションについて(スコープ:グローバル/アプリケーション)
 -このセクションで定義した値は、[server_XXX]で利用できる値に関しては[server_XXX]に引き継がれます。
 -[server default]セクションでしか定義できない値もあります。
・[server_XXX]セクションについて(スコープ:ローカル)
 -[server default]で定義されているものを引き継ぐ
  引き継がれた値と同じものが[server_XXX]セクションで設定された場合には上書きされます。
 -[server_XXX]セクションでしか定義できない値もあります。

何かややっこしくなってきましたが、「グローバル > アプリケーション > ローカル」という流れで、 値が引き継がれていくっていう事ですなっ!φ(`д´)メモメモ...

注意点としては、セクションやスコープごとに利用できる値が決まっている点です。
どこで何が使えるかは公式サイトで確認してください(ΦωΦ)フフフ…

とりあえず、各パラメーターの説明を書いてみました(`・ω・´)シャキーン
間違っていたらすみません((((;゚Д゚))))ガクガクブルブル

[server default]
# 監視対象サーバのmysqlのパスワード
user=repl
password=repl

#orig_master_is_new_slaveオプションをつけた場合にCHANGE MASTER TOコマンドで必須になる。

#レプリケーションユーザー名
repl_user=repl
#レプリケーションユーザー名
repl_password=repl_password

#SSH通信用のユーザー名(デフォルト:masterha_managerを実行ユーザー)
ssh_user=root
#SSH通信用のポート番号(デフォルト:22)
#ssh_port=22
#SSH通信時のオプション(デフォルト:設定なし)
#ssh_options=""
#SSH通信時のコネクションタイムアウト(デフォルト:5)単位は秒。
#ssh_connection_timeout=5

#MHAが動作中に利用するディレクトリ
#mysql-master-haが動作中に利用するディレクトリ(デフォルト:/var/tmp)
manager_workdir=/tmp/mha

#mysql-master-haのログファイル
manager_log=/tmp/mha/log/mha.log

#MHAのクライアントが動作に利用するディレクトリ
#リモート先(各MySQL-サーバ)の作業ディレクトリ(デフォルト:/var/tmp)
remote_workdir=/tmp/mha

#ログの出力レベル「debug、info、warning、error」(デフォルト:info)
log_level=info

#masterのバイナリーログのディレクトリ(デフォルト:/var/lib/mysql)
#master_binlog_dir=/var/lib/mysq

#slaveに差分バイナリーログを適用する時に、バイナリロギングを無効化する(デフォルト:0。無効化しない)
#disable_log_bin=0

#masterha_managerのプロセスID
#複数監視する場合には別々のファイルを指定してあげること
#master_pid_file=/var/lib/mysql/master1.pid

#slaveの遅延チェックを行う。(relay_logが100MB以上適用する必要があるslaveはmaster候補から対象外にする)(デフォルト:1)
#遅延チェックを無効化する場合には0を指定する。
#check_repl_delay=1

#バイナリーログのレプリケーションフィルタリングルールが違う場合に、
#エラーを出力し、監視やフェイルオーバーを開始させないか。(デフォルト:1)
#check_repl_filter=1

#最新のスレーブ(スレーブは、最新のバイナリログイベントを受信)が新しいマスターとして優先されます(デフォルト:1)
#0を指定すると、セクション名ルールでmaster候補が選ばれる。
#latest_priority=1

#マルチマスターレプリケーションの構成をサポートするか。バージョン0.52からサポートされている。(デフォルト:0)
#multi_tier_slave=0

#どのくらいの頻度でping(pingのSQL文を実行する)か。(デフォルト:3)。単位は秒。
#ping_interval=3

#デフォルトでは"SELECT 1"ping_type = SELECT)を実行することにより、マスターの可用性をチェックします
#迅速にTCP接続レベルの障害を検出するために、CONNECTを指定した方が良い?0.53からサポートされている。(デフォルト:SELECT)
ping_type=CONNECT

#########################
# スクリプト関係
#########################
#masterのアクティビティをチェックするスクリプト。SSH接続やTCP接続などでチェックされる?
secondary_check_script= masterha_secondary_check -s remote_host1 -s remote_host2
#masterに仮想IPアドレスなどの切り替えようのスクリプト
master_ip_failover_script=/usr/bin/master_ip_failover
#手動によるmasterの切り替えようのスクリプト(master_ip_failover_scriptに似ている)
master_ip_online_change_script=/usr/bin/master_ip_online_change
#
shutdown_script=/usr/bin/shutdown
#フェイルオーバー完了時に実行するスクリプト
report_script=/usr/bin/report
#パスワード関係の値を設定ファイルで生のテキスト以外で保持した場合に、実行するスクリプト
init_conf_load_script=/usr/bin/init_conf_load

########################
#
# 監視サーバーの設定
#
# hostname
#  ホスト名
# candidate_master
#  優先的にmasterに変更するサーバーか(デフォルト:0)
#  0:優先的なサーバーとしない
#  1:優先的に新しいmaster候補とする。ただし、バイナリーログが有効になっていること。slaveの遅延が発生していないなどの、
#   条件を満たしている限り、新しいmasterに優先される。
#  ※複数個のサーバーに1が設定されている場合には、[serever_XXX]セクションのXXXの値が小さい方が優先される。
# ignore_fail
#  スレーブサーバのいずれかに障害が発生した場合、フェイルオーバーを行うか。
#  0:指定されたslaveサーバーで障害が発生し他場合には、フェイルオーバーを行わない。(デフォルト)
#  1:指定されたslaveサーバーで障害が発生しても、フェイルオーバーを行う。
# no_master
#  マスターの対象にするか
# master_binlog_dir
#  バイナリーログのディレクトリの場所の指定
#
########################
#監視対処サーバ
[server1]
#ホスト名
hostname=192.168.10.228
#mysqlの接続時のポート番号(デフォルト:3306)
port=3306

candidate_master=1
ignore_fail=1

[server2]
#次のマスター候補
candidate_master=1
#ホスト名
hostname=192.168.10.229
ignore_fail=1

[server3]
candidate_master=1
hostname=192.168.10.233
ignore_fail=1
#マスターの対象にするか
#no_master=1

参考URL

0 件のコメント:

コメントを投稿