一.参数说明
MHA提供了一系列配置参数,深入理解每个参数的具体含义,对优化配置、合理使用MHA非常重要,很多高可用性也都是通过合理配置一些参数而实现的。
MHA包括如下配置参数,分别说明如下:
hostname/ip/port (Local Only)
hostname为MySQL Server的IP地址或主机名;
ip为MySQL Server的IP地址,缺省从$hostname中获取;port为MySQL Server的端口号,缺省为3306
ssh_host/ssh_ip/ssh_port (Local Only)
这三个参数是从版本0.53才引入的,其中ssh_host同$hostname,ssh_ip同$ip;ssh_port为SSH通信使用的系统端口号,缺省为22。
ssh_connection_timeout (Local/App/Global) SSH连接超时阀值,缺省为5秒,该参数从版本0.54开始引入。
ssh_options (Local/App/Global) 额外的SSH命令选项,该参数从版本0.53开始引入。
candidate_master (Local Only)
该参数用于设置某个Slave是否可以优先成为来&源gao@dai!ma.com搞$代^码%网Master。
若设置为1,则对应的那个Slave可优先成为新的Master;若多个Slave均设置该参数为1,则成为Master的优先级按照[server_1]/[server_2]/…排序;
缺省值为0,表示不设置某个Slave优先成为Master,即所有Slave成为Master的优先级一样,此时MHA会选择一个延迟最小的Slave成为新的Master。
no_master (Local Only)
是否禁止某个Slave成为Master,缺省值为0,表示每个Slave都有机会成为新的Master;
若设置为1,则对应的那个Slave永远不会成为Master。
ignore_fail (Local Only)
缺省情况下,当某个Slave故障时(比如:不能通过MySQL/SSH连接,SQL线程因错误停止等),MHA不开启故障切换;若设置为1,则对应的那个Slave出现故障时自动切换。
user/password (Local/App/Global)
MySQL数据库管理账户及密码,因为要执行一些必要的管理命令,比如:Stop Slave、Change Master、Reset Slave,所以该账户应该为root,这也是缺省值。
repl_user /repl_password (Local/App/Global) MySQL复制账户及密码
disable_log_bin (Local/App/Global)
若设置该参数,则在Slave应用差异日志时,自身不生成二进制日志;MHA内部是通过在调用mysqlbinlog工具命令时加参数—disable-log-bin实现的,缺省值为0。
master_pid_file (Local/App/Global) 设置Master实例的pid文件,该参数适用于一台服务器安装多个MySQL实例的情况。
ssh_user (Local/App/Global)
MHA Manager和Node访问MySQL Server所使用的OS用户,在多种情况下,都会用到该账户,比如:远程执行命令、在Slave间拷贝差异的Relay logs等。
该用户至少要拥有读取MySQL binary/relay log文件和relay_log.info文件的权限,以及日志目录的写权限(remote_workdir参数指定的路径)。
该用户不需要交互即可连接到其它服务器上,所以建议使用SSH公共密钥认证,即配置SSH等效性;缺省情况下,ssh_user为系统管理账户,即root账户。
remote_workdir (Local/App/Global)
每个MHA Node节点(运行MySQL实例的服务器)的工作目录全路径,其中会生成日志文件,缺省为/var/tmp;若路径不存在,MHA Node会自动创建,当然这需要拥有足够的权限。
注意:不管是Manager还是Node,都会检查目录的可用磁盘空间。
master_binlog_dir (Local/App/Global)
MySQL主库的binlog日志文件的全路径,缺省为/var/lib/mysql,根据实际情况设置为真实的路径。
该参数适用于这么一种情况:Master实例故障,但OS系统运行正常,此时MHA可通过SSH登录,然后读取并拷贝必须的二进制日志事件(即差异的日志)。
可见该参数是必要而有用的,因为Master死掉后,MHA无法自动获取binlog日志文件的路径。
另外,可用逗号隔开设置多个路径。