MySQL 高可用性コンポーネントの MHA パラメータの詳細な説明
MHA は現在、MySQL 高可用性の比較的成熟したソリューションであり、日本人によって開発され、MySQL 高可用性環境におけるフェイルオーバーとマスター/スレーブの昇格の優れたセットです。 . 可用性の高いソフトウェア。 MHA は一連の構成パラメータを提供します。各パラメータの具体的な意味を深く理解することは、MHA の構成を最適化し、合理的に使用するために非常に重要です。また、一部のパラメータを適切に構成することによっても、高可用性が実現されます。 MHA を使用するときに使用できるいくつかのパラメーターを詳しく紹介します~
Local: 各構成ブロックの内部を指します。ローカル関数のパラメータは [server_xxx] ブロックの下に配置する必要があります。 アプリ: パラメータはマスター/スレーブで動作します。 グローバル: パラメータはマスター/スレーブで動作します。グローバルレベルのパラメータは、複数のサーバーを管理するために使用されます。グループマスター/スレーブ構造は、いくつかのパラメータを統一的に管理できます。
ホスト名: MySQL サーバーのマシン名または IP アドレスを構成します。この構成項目は必須であり、[server_xxx] ブロックでのみ構成できます。
例: パラメータ名 必須ですか? スコープ デフォルト値 例と説明
hostname はい ローカルのみ – hostname=mysql_server1、hostname=192.168.0.1 など
ip: MySQL サーバーの IP アドレス。デフォルトでは、gethostname($hostname) から取得されます。デフォルトでは、MHA はホスト名を介して自動的に取得され、IP アドレスを介して MySQL サーバーに接続されます。
例:
パラメータ名 必要かどうか スコープ デフォルト値 例と説明
ip いいえ ローカルのみ gethostbyname($hostname) を通じて取得 ip=192.168.1.3
port: MySQL が実行されるポート番号。デフォルトは 3306 です。MHA は IP とポート番号を使用して MySQL に接続します
例:
パラメータ名をスコープする必要があるかどうか、およびデフォルト値の例と説明
port No Local/App/Glbal 3306 port=3306
ssh_host: MHA が必要MySQL ターゲット サーバーのホスト名または IP アドレスで SSH を使用します。このパラメータは主に複数の VLAN が使用される環境で使用されます。セキュリティ上の理由から、ssh はデフォルトでは許可されていません。デフォルトでは、このパラメータはホスト名と同じです。
例:
パラメータ名 必要かどうか スコープ デフォルト値 例と説明
ssh_host いいえ ローカルのみ ホスト名と同じ ssh_host=mysql_server1、ssh_host=192.168.0.1など
ssh_ip: (MHA 0.53以降でサポート) ssh_hostと同じ。デフォルトは gethostname($ssh_host) です。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
ssh_ip No Local Only gethostbyname($ssh_host) ssh_ip=192.168.1.3
ssh_port: (MHA 0.53以降でサポート) SSHで使用されるポート番号、デフォルトは 22 です。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
ssh_port No Local/App/Global 22 ssh_port=22
ssh_connection_timeout: (MHA 0.54 からサポート) デフォルトは 5 秒です。このパラメータを追加する前は、ssh タイムアウトがハードコードされていました。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
ssh_connection_timeout いいえ Local/App/Global 5 ssh_connect_timeout=5
ssh_options: (MHA 0.53 からサポート) ssh コマンド ラインのサポート パラメータを追加します。特殊ファイルの追加 ネームキーのサポートなど
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
ssh_options No Local/App/Global “” Empty ssh_options=”-i /root/.ssh/id_dsa2″
candidate_master: あなたは同じスレーブのグループ さまざまな計画があり、マスターが失敗したときに新しいマスターに昇格することを希望する人もいます (例: Raid0 のスレーブよりも Raid1 のスレーブの方がマスターとして適しています)
このパラメータの機能つまり、デザインの Candidate_master = 1 の場合、このサーバーは高い優先順位を持って新しいマスターに昇格します (オープン バイナリ、レプリケーションの遅延がないことも必要です)。したがって、candidate_master = 1 のマシンが設定されている場合、マスターに障害が発生した場合には必然的に新しいマスターになりますが、これは優先順位を設定するのに非常に便利なパラメーターです。
caddidate_master = 1 が複数のマシンに設定されている場合、優先順位はブロック名によって異なります ([server_xxx]) は [server_2] よりも優先されます。
例:
パラメーター名をスコープする必要があるかどうか。デフォルト値の例と説明
candidate_master No Local Only 0 候補マスト = 1
no_master
no_master = 1 のサーバーが設定されている場合、このサーバーは新しいマスターに昇格することが予想されないマシンに役立ちます。マスターになる。たとえば、raid0 を使用するマシンで no_master = 1 を設定する必要がある場合、またはリモート IDC でスレーブを実行する必要がある場合があります。 注: 新しいマスターになるマシンがない場合、MHA は直接終了し、監視と監視を停止します。マスター。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
no_master No Local Only 0 no_master=1
ignore_fail: デフォルトでは、MHA マネージャーはマスター フェイルオーバーを実行しません (スレーブが SSH/MySQL 経由で接続できない場合、SQL スレッドがエラーで停止した場合、またはその他の理由でスレーブが存在する場合でも MHA マネージャーは終了します)。ただし、スレーブに問題がある場合でもフェイルオーバーを実行したい場合があります。したがって、ignore_fail = 1 が設定されている場合、すべてのマシンに問題がある場合、MHA はフェイルオーバーします。デフォルトは 0 です。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
ignore_fail No Local Only 0ignore_fail=1
skip_init_ssh_check: MHA マネージャー起動時の ssh チェックをスキップします。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
skip_init_ssh_check No Local Only 0 Skip_init_ssh_check=1
skip_reset_slave: (MHA 0.56からサポート) マスターフェイルオーバー後に新しいマスターでRESET SLAVE(ALL)を実行します。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
skip_reset_slave No Local/App/Global 0 Skip_reset_slave=1
user: MySQLの管理に使用するユーザー名。これには、次を実行する必要があるため、root ユーザーを使用するのが最善です: スレーブを停止し、マスターを変更し、スレーブをリセットします。 デフォルト: root
例: デフォルト値の例と説明
user No Local/App/Global root user =mysql_root
password: MySQL 管理ユーザーのパスワード。デフォルトは空です
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
パスワード いいえ Local/App/Global 空のパスワード=rootpass
repl_user: レプリケーションに使用される MySQL ユーザー、CHANGE MASTER TO の生成にも使用されますスレーブによって使用される各ユーザー。このユーザーは、新しいマスターに対する REPLICATION SLAVE 権限を持っている必要があります。デフォルトでは、repl_user は、将来マスターになるマシン上で show smile status を実行することによって取得されます。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
repl_user No Local/App/Global From show smile status repl_user=repl
repl_password: MySQL の repl_user ユーザーのパスワード。デフォルトは、コピーに使用される現在のパスワードです。 online_master_switch を使用する場合、-orig_master_is_new_slave を使用する場合 (元のマスターが新しいマスターのスレーブになる)、repl_password がオンになっていないと同期は失敗します。現在のマスターでレプリケーションに使用されるユーザー名とパスワードが空であるため (他のスレーブではレプリケーション パスワードが設定されていますが、元のマスターで変更マスターを実行する場合、MHA にはレプリケーション パスワードがありません)
例:
はパラメーター名です。必要なスコープのデフォルト値の例と説明
repl_password いいえ Local/App/Global 現在のレプリケーション パスワード repl_password=replpas
disable_log_bin: このパラメータを設定すると、スレーブが差動リレー ログを適用するときにバイナリ ログは生成されません。内部実装は、mysqlbinlog の disable-log-bin を通じて実装されます。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
disable_log_bin No Local/App/Global 0 disable_log_bin=1
master_pid_file: MySQLのpidファイルを指定します。このパラメータは、サーバー上で複数の MySQL サービス プロセスを実行する場合に非常に役立ちます。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
master_pid_file いいえ Local/App/Global – master_pid_file=/var/lib/mysql/master1.pid
ssh_user: MHA Mananger、MHA ノードシステム上のユーザー。このアカウントは、リモート マシン (Manager->MySQL) での実行権限を持ち、スレーブ メンバー間の相違点のリレー ログをコピーする (MySQL->MySQL) 必要があります。このユーザーは、MySQL のバイナリ/リレー ログを読み取る権限を持っている必要があります。 relay_log.info の権限には、リモート MySQL のremote_workdir ディレクトリへの書き込み権限も必要です。
このユーザーは、リモート マシンに直接 ssh 接続できる必要があります。一般的に使用される ssh_user は、マネージャーを実行するユーザーでもあります。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
ssh_user いいえ Local/App/Global 現在使用されているシステムユーザー ssh_user=root
remote_workdir: MHA ノード上の作業ディレクトリのフルパス名。存在しない場合は、MHA ノードが自動的に作成されます。作成が許可されていない場合、MHA ノードは自動的に異常終了します。なお、MHAマネージャまたはMHAノードは空き容量を確認する必要があるため、注意して確認する必要があります。通常、デフォルトでは、remote_workdir は「/var/tmp」です
例:
パラメータ名がスコープされる必要があるかどうか、およびデフォルト値の例と説明
remote_workdir No Local/App/Global /var/tmp remote_workdir=/var/log/masterha /app1
master_binlog_dir: マスター上にバイナリ ログを保存するために使用されるフル パス。このパラメータは、マスター上の mysql が停止した後に ssh 経由で mysql サーバーに接続し、必要なバイナリ ログ イベントを見つけるために使用されます。このパラメータは、マスター プロセスの終了後にバイナリ ログの保存場所が見つからない場合に役立ちます。
一般: master_binlog_dir は「/var/lib/mysql/、/var/log/mysql」です。「/var/lib/mysql/」はほとんどのシステム ディストリビューションの保存場所であり、「/var/log/mysql」はubuntu ディストリビューション バージョンの保存場所。 複数の保存場所をカンマで区切って設定することもできます。
例:
パラメータ名 必須か スコープ デフォルト値 例と説明
master_binlog_dir いいえ Local/App/Gobal /var/lib/mysql master_binlog_dir=/data/mysql1,/data/mysql2
log_level: MHA マネージャーが LOG を記録するレベルを設定します。 デフォルトは情報レベルであり、ほとんどの状況に適しています。 debug/info/warning/error に設定することもできます。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
log_level アプリ/グローバル情報なし log_level=debug
manager_workdir: を指定するために使用されます。関連ステータス ファイルを生成する mha マネージャーのフルパス。 設定されていない場合、デフォルトは /var/tmp です
例:
パラメータ名をスコープする必要があるかどうか? デフォルト値の例と説明
manager_workdir No App /var/tmp manager_workdir=/var/log/masterha
manager_log: mha マネージャー ファイル名ログ ファイルの絶対パス。 MHA マネージャーが設定されていない場合は、STDOUT/STDERR に出力されます。 手動でフェイルオーバー (対話型モードの切り替え) を実行する場合、MHA マネージャーは、manager_log 設定を無視し、ログを STDOUT/STDERR に直接出力します。
例:
パラメーター名をスコープする必要があるかどうかとデフォルト値の例と説明
manager_log No App STDERR manager_log=/var /log/masterha/app1.log
check_repl_lay: デフォルトでは、スレーブ同期遅延が 100M リレー ログを超える場合 (100M を超えるリレー ログを適用する必要がある)、MHA は次の場合にこのスレーブを新しいマスターとして選択しません。 check_repl_lay = 0 が設定されている場合、MHA は選択されたスレーブの同期遅延を無視します。このオプションは、candidate_master = 1 を設定して、このマシンがマスターになることが期待されていることを明示する場合に特に便利です。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
check_repl_lay No App/Golbal 1 check_repl_delay=0
check_repl_filter: デフォルトでは、マスターとスレーブが異なるバイナリ ログ/レプリケーション フィルタリング ルールを設定すると、MHA レポートエラーが直接発生した場合、監視とフェイルオーバーは実行されません。これらにより、「テーブルが存在しません」という予期しないエラーが発生します。異なるフィルタリング ルールによってリカバリ中にエラーが発生しないことが 100% 確信できる場合は、check_repl_filter=0 を設定します。注: check_repl_filter = 0 を使用すると、MHA はフィルター ルールの適用差異のリレー ログをチェックしないため、「テーブルが存在しません」エラーが発生する可能性があります。このパラメータを設定する場合は、慎重に扱ってください。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
check_repl_filter No App/Global 1 check_repl_filter=0
latest_priority: デフォルトでは、マスターに最も近いスレーブ (スレーブはマスターから最新のバイナリログを取得します)イベント) が新しいマスターになることが最優先されます。切り替え戦略を制御する場合 (たとえば、最初に host2 を選択し、それが機能しない場合は host3 を選択し、host3 が機能しない場合は host4 を選択します...)、latest_priority = 0 を設定します。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
latest_priority No App/Global 1latest_priority=0
multi_tier_slave:
MHA 0.52 以降、多層レプリケーションがサポートされるようになりました。デフォルトでは、3 層以上のレプリケーション構成はサポートされていません。次の場合: host2 が host1 からコピーし、host3 が host2 からコピーします。デフォルト設定では、ホスト {1,2,3} への書き込みはサポートされていません。これは、これが 3 層レプリケーションであり、MHA マネージャーがエラーの報告を停止するためです。 multi_tier_slave が設定されている場合、MHA マネージャーは 3 層レプリケーション時にエラーで停止しません。ただし、3 番目のレベルのマシンは無視されます。つまり、host1 に障害が発生した場合、host2 が新しいマスターになり、host3 は引き続き host2 からコピーします。
このパラメータは、0.52 以降の MHA Manager バージョンでサポートされています。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
muli_tier_slave No App/Global 0 multi_tier_slave=1
ping_interval: このパラメータは、MHA マネージャーがマスターに ping を実行する (いくつかの SQL ステートメントを実行する) のにかかる時間を設定します。 ) マスターが 3 回再試行すると、MHA マネージャーは MySQL マスターが停止していると判断します。つまり、最大フェイルオーバー時間は 4 ping_interval 回で、デフォルトは 3 秒です。
MySQL との接続を作成するときに MHA マネージャーが複数の接続エラーまたは認証エラーを受信した場合、再試行せずにマスターが停止したと判断します。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
ping_interval No App/Global 3 ping_interval=5
ping_type: (MHA 0.53 以降でサポート) デフォルトでは、MHA マネージャーと MySQL は実行するための接続を作成します" select 1" (ping_type=select) は、マスターが正常かどうかを確認するために使用されます。ただし、状況によっては、TCP エラーをより速く検出できるように、毎回接続してから切断する方がよいでしょう。 ping_type=CONNECT を設定するだけです。 MHA 0.56 以降、pint_type=INSERT も追加されました。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
ping_type No App/Global SELECT ping_type=CONNECT
セカンダリ_チェック_スクリプト: 一般に、MySQL マスターが動作しているかどうかを確認するには、ネットワーク上でさまざまなルーティング戦略を持つより多くのマシンを使用することを強くお勧めします。デフォルトでは、MHA マネージャーのみがルートを通じてマスターが生存しているかどうかを確認します。これもお勧めできません。 MHA は、外部の Secondary_check_script 設定スクリプトを通じて複数のルーティング ポリシーをチェックできます。
Secondary_check_script = masterha_ Secondary_check -s Remote_host1 -s Remote_host2
Secondary_check_script は、MHA Manager 配布パッケージに含まれています。 MHA に組み込まれている Secondary_check_script はほとんどの場合に適切に機能しますが、どこでも利用できるわけではありません。
上記の例では、MHA マネージャーは Manager->(A)->remote_host1->(B)->master_host と Manager->(A)-remote_host2->(B)->master_host を渡します。 MySQL マスターが生きているかどうかを確認します。接続プロセス中に A が成功したが B が失敗した場合、Secondary_check_script は 0 を返し、マスターは停止しているとみなされ、フェイルオーバーが実行されます。 A が正常に渡されたが、戻りコードが 2 だった場合、MHA マネージャーはネットワークの問題であると判断し、フェイルオーバーを実行しない可能性があります。 A が成功し、B も成功した場合、masterha_secondary_check は終了して以下を返します。 3. その後、MHA マネージャーは MySQL マスターが生きていると見なし、フェイルオーバーを実行しません。
一般的に、remote_host1 と Remote_host2 は、MHA Manager や MySQL Server とは異なるネットワーク セグメントに配置されています。
MHA は、Secondary_check_script で宣言されたスクリプトを呼び出し、いくつかのパラメーターを自動的に取得します。 masterha_secondary_check は多くのシナリオに適用できますが、より多くの機能を使用してこのプログラムを自分で実装することもできます。
–user=(リモートマシンで使用されるSSHユーザー名。ssh_userの値が使用されます)
–master_host = (マスターのホスト名)
–master_ip = (マスターのIPアドレス)
–master_port = (マスターのポート番号)
masterha_secondary_check:このスクリプトは Perl の IO::Socket::INET に依存します (Perl 5.6.0 はデフォルトでこのモジュールをサポートします)。 masterha_secondary_check は ssh 経由でリモート マシンに接続する必要があるため、マネージャーはリモート マシン上で公開キーの信頼を確立する必要があります。さらに、masterha_secondary_check はマスターとの TCP 接続を確立することでマスターが生きているかどうかをテストするため、mysql によって設定された max_connections は機能しません。ただし、TCP 接続が成功するたびに、MySQL の Aborted_connects 値は 1 ずつ増加します。
例:
パラメータ名がスコープ内に存在する必要があるかどうかの例と説明、およびデフォルト値
Secondary_check_script No App/Global null Secondary_check_script= masterha_secondary_check -s Remote_dc1 -s Remote_dc2
master_ip_failover_script:
例:
パラメータが存在するかどうかの例と説明name はスコープ内にあり、デフォルト値である必要があります
master_ip_failover_script No App/Global null master_ip_failover_script=/usr/local/custom_script/master_ip_failover
master_ip_online_changes_script: このパラメーターは master_ip_failover_script に似ていますが、このパラメーターはマスター フェイルオーバーには使用されず、マスターへの切り替えのみに使用されますオンラインが使われます。
マスター書き込みプロセスをフリーズします:
–command=stop または stopsh
–orig_master_host = (現在のマスターのホスト名)
–orig_master_ip = (現在のマスターの IP アドレス)
–orig_master_port = (マスターのポート番号)現在のマスター)
– orig_master_user = (現在のマスターのユーザー)
–orig_master_password = (現在のマスターのユーザー名)
–orig_master_ssh_user = (0.56 からサポート、現在のマスターの ssh のユーザー名)
–orig_master_is_new_slave = (0.56 から、変更するかどうか元のマスターから新しいスレーブへ)
新しいマスターは書き込みプロセスを受け入れます:
–command=start
–orig_master_host = (元のマスターのマシン名)
–orig_master_ip = (元のマスターの IP)
–orig_master_port = (元のマスターのポート番号)
–new_master_host = (新しいマスターのマシン名)
–new_master_ip = (新しいマスターの IP)
–new_master_port = (新しいマスターのポート番号)
–new_master_user = (新しいマスターのユーザー名) master)
–new_master_password = (マスター上の新しいユーザー名とパスワード)
–new_master_ssh_user = (0.56 からサポート、新しいマスター上の ssh ユーザー)
MHA は、凍結された書き込み切り替えプロセス中にマスター上で読み取りロック付きのフラッシュ テーブルを実行します. このエレガントな切り替えプロセスでは、何も書き込まれません。新しいマスターが書き込みの許可を開始すると、master_ip_failover_script と同じことができます。例: ユーザーと権限を作成し、set global read_only=0 を実行し、データベース ルーティング テーブルを更新します。スクリプト実行終了コードが 0 または 10 でない場合、MHAManager は異常終了し、マスターへの切り替えを続行しません。
デフォルトでは、このパラメータは空であるため、MHA マネージャーはデフォルトでは何も行いません。
(MHA Manager パッケージ)/samples/scripts/master_ip_online_change にあります。ここでサンプル スクリプトを見つけてください。サンプル スクリプトは、MHA Manager のソース ファイルまたは GitHub フォークに含まれています。
例:
パラメータ名 必須かどうか スコープ デフォルト値 例と説明
master_ip_online_change_script No App/Global null master_ip_online_change_script= /usr/local/custom_script/master_ip_online_change
shutdown_script:
例:
パラメーター名をスコープする必要があるかどうか、デフォルト値の例と説明
shutdown_script No App/Global null shutdown_script= /usr/local/custom_script/master_shutdown
report_script:
マスター障害が完了した後、レポート (電子メールで) レポート 切り替えが完了したか、エラーが発生しました。 report_script がその仕事を行うことができます。 MHA マネージャーは、次のパラメータとともに使用できます。
–orig_master_host = (無効なマスター マシン名)
–new_master_host = (新しいマスター マシン名)
–new_slave_hosts = (カンマで区切られた新しいスレーブ マシン名のリスト)
–subject = ( email name)
–body = (text)
これらのパラメータはデフォルトでは空です。したがって、デフォルトの MHA マネージャーは何も行いません。
サンプル スクリプトは (MHA Manager パッケージ)/samples/scripts/send_report にあります。サンプル スクリプトは、MHA Manager のソース ファイルまたは GitHub フォークに含まれています。
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
report_script No App/Global null report_script= /usr/local/custom_script/report
init_conf_load_script: このパラメータはクリアを設定したくない場合に使用されます。設定ファイル内のテキスト (パスワード関連など)。 「name=value」のような値のみを返します。これを使用して、グローバル構成の一部の値をオーバーライドできます。スクリプトの例は次のとおりです。
#!/usr/bin/perl
print “password=$ROOT_PASSn”;
print “repl_password=$REPL_PASSn”;
例:
パラメータ名をスコープする必要があるかどうか、デフォルト値の例と説明
init_conf_load_script No App/グローバル null report_script = /usr/local/custom_script/init_conf_loader
http://www.bkjia.com/PHPjc/1097747.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1097747.html技術記事 MySQL 高可用性コンポーネントの MHA パラメータの詳細説明 MHA は現在、MySQL 高可用性の中で比較的成熟したソリューションであり、日本人によって開発された優れた MySQL 高可用性環境セットです...
。