如何在MHA中添加配置參數(shù)

MHA的配置文件可以分為兩部分,global_configfileconfigfile,分別是全局的配置文件和對應(yīng)MySQL集群的配置文件。

全局配置文件中,設(shè)置了通用配置。比如:

[server default]
user=root
password=nopass
ssh_user=mha
repl_user=repl
repl_password=repl

manager_workdir=/opt/soft/mha/
remote_workdir=/work/mha/

master_ip_failover_script=/opt/soft/mha/scripts/master_ip_failover
master_ip_online_change_script=/opt/soft/mha/scripts/master_ip_online_change
report_script=/opt/soft/mha/scripts/send_report

ping_interval=1

上面的配置參數(shù)中,寫明了MHA Server上的一些通用配置,如連接MySQL集群的賬號、密碼,ssh的用戶等。這樣方便管理MHA Server的配置,只需要更改這個全局文件即可。

MySQL集群的配置,可單獨(dú)指定配置文件:

[server default]
manager_log=/opt/soft/mha/logs/6666-1.log
master_binlog_dir=/work/mysql6666/var/
secondary_check_script=/opt/soft/mha/bin/masterha_secondary_check -s 10.136.198.28 -s 10.136.198.77 --user=root

[server1]
hostname=192.168.1.1
port=6666

[server2]
hostname=192.168.1.2
port=6666
candidate_master=1
check_repl_delay=0

[server3]
hostname=192.168.1.3
port=6666
no_master

上面就是一個MySQL集群的MHA配置,Server1是現(xiàn)有主庫、Server2是備主、Server3不允許切換為主。

其實MHA在處理配置文件時,主要分為兩類。一類是[server default],一類是[serverxxx],也就是說無論是在global_configfile還是configfile,只要是在相同section下,就可以一起使用。

MHA的配置文件,由Config.pm處理,下面做簡單說明。

my @PARAM_ARRAY =
  qw/ hostname ip port ssh_host ssh_ip ssh_port ssh_connection_timeout ssh_options node_label candidate_master no_master ignore_fail skip_init_ssh_check skip_reset_slave user password repl_user repl_password disable_log_bin master_pid_file handle_raw_binlog ssh_user remote_workdir master_binlog_dir log_level manager_workdir manager_log check_repl_delay check_repl_filter latest_priority multi_tier_slave ping_interval ping_type secondary_check_script master_ip_failover_script master_ip_online_change_script shutdown_script report_script init_conf_load_script client_bindir client_libdir use_gtid_auto_pos MHA_status/;

MHA的參數(shù),寫在一個數(shù)組中,如果想增加一個參數(shù),在末尾添加一個即可。比如上面代碼中,我們添加了一個參數(shù),叫MHA_status,放在配置文件中的serverxxx的section下。

那么如何解析這個參數(shù)呢?

Config.pm 中的parse_server函數(shù)負(fù)責(zé)這件事。改函數(shù)的參數(shù)中,$param_arg$default分別是配置文件中serverxxxserver default section的對象。我們前面的添加的參數(shù)在serverxxx這個section下,那么解析方法如下:

$value{MHA_status} = $param_arg->{MHA_status};
if ( !defined( $value{MHA_status} ) ) {
  $value{MHA_status} = $default->{MHA_status};
  $value{MHA_status} = 1 unless ( $value{MHA_status} );
}

上述代碼的含義是,解析配置文件中的MHA_status,賦值到value這個哈希中。如果在serverxxx中沒有定義MHA_status,則去default中拉取,如果再沒有,則賦予默認(rèn)值1。

如何在MHA中使用我們加的參數(shù)呢?

直接上代碼:

use MHA::Config;

## 聲明變量,用來初始化配置文件對象
my @servers_config;  

## 調(diào)用讀取配置文件方法,初始化對象
my ( $sc_ref, $binlog_server_ref ) = new MHA::Config(
  logger     => $log,
  globalfile => $g_global_config_file,
  file       => $g_config_file
)->read_config();

## 假如我們在Server1中配置了MHA_status,下面的方法可以得到該值
@servers_config = @$sc_ref;
my $MHA_status = $servers_config[0]->{MHA_status};

## 后續(xù)處理
...

綜上,給MHA增加參數(shù)也沒有那么難搞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容