设为首页 收藏本站
查看: 2337|回复: 0

[经验分享] MHA配置参数详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-4 08:32:49 | 显示全部楼层 |阅读模式
                      MHA 参数列表
  • Local : 指每一个配置块内部。 Local功能的参数需要放置在[server_xxx] 块下面
  • App : 参数作用于master/slave, 这些参数需要配置在[server_default]块的下面
  • Global : 作用于master/slave, Global级别的参数用于管理多组master/slave结构,可以统一化管理一些参数。 

    hostname配置MySQL服务器的机器名或是IP地址,这个配置项是必须的,而且只能配置在[server_xxx]这个块下面。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    hostname
    Yes
    Local Only
    hostname=mysql_server1, hostname=192.168.0.1, etc
    ipMySQL服务器的ip地址。 默认从gethostname($hostname)中获得。 默认不用配置这个参数,MHA可以通过hostname自动获取,MHA通过IP地址连接MySQL服务器及SSH连接。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ip
    No
    Local Only
    通过gethostbyname($hostname)获得
    ip=192.168.1.3
    portMySQL运行的端口号。 默认是3306. MHA使用IP和端口号连接MySQL
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    port
    No
    Local/App/Glbal
    3306
    port=3306
    ssh_host(从MHA 0.53后开始支持) MHA要ssh上MySQL目标服务器使用hostname 或是ip地址。这个参数主要用于在使用多个VLAN的环境中。为了安全原因ssh默认不允许。默认这个参数和hostname相同。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ssh_host
    No
    Local Only
    和hostname相同
    ssh_host=mysql_server1, ssh_host=192.168.0.1, etc
    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
    No
    Local/App/Global
    5
    ssh_connect_timeout=5
    ssh_options(从MHA 0.53后支持) 添加ssh命令行的支持参数,例如加上特别文件名的key的支持等。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ssh_options
    No
    Local/App/Global
    “” 空的
    ssh_options=”-i /root/.ssh/id_dsa2″
    candidate_master你可能对于同一组slave中有着不同的规划,有的其望在Master故障时,提升为新的Master(如: Raid1的slave比Raid0的slave更适合做Master)
    这个参数的作用是当设计candidate_master = 1时,这个服务器有较高的优先级提升为新的master(还要具备: 开启binlog, 复制没有延迟)。 所以当设置了candidate_master = 1的机器在master故障时必然成为新的master. 但这是很有用的设置优先级的一个参数。
    如果设置了多台机器的caddidate_master = 1 , 优先策略依赖于块名字([server_xxx]). [server_1] 优衔权高于[server_2].
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    candidate_master
    No
    Local Only
    0
    candidate_mast=1
    no_master当设置了no_master = 1的服务器,这个服务器永远不会提升为新的master. 这个参数据对于永远不期望成为master的机器很有用。 如: 你可能需要在使用raid0的机器上设置no_master = 1 或是你希望在远程的idc里运行一个slave. 注意: 当没有可以成为新master的机器是MHA就直接退出来了同时停止监控和master故障切换。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    no_master
    No
    Local Only
    0
    no_master=1
    ignore_fail在默认情况下,MHA manager不会在slave存在故障的情况下(已经不能通过SSH/MySQL进行连接,或是SQL Thread已经停止出错,其它原因)的情况下进行Master的故障切换(当不存在slave时MHA manager也会退出)。 但有些情况下你期望在slave存在问题的情况下,也进行故障切换。 所以当设置了ignore_fail = 1时,MHA会在所有的机器有问题的时间也会进行故障切换。 默认是0.
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ignore_fail
    No
    Local Only
    0
    ignore_fail=1
    #skip_init_ssh_check#
    在MHA manager启动时跳过ssh检查。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    skip_init_ssh_check
    No
    Local Only
    0
    skip_init_ssh_check=1
    skip_reset_slave(从MHA 0.56开始支持) Master故障切换后新的master上执行RESET SLAVE(ALL).
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    skip_reset_slave
    No
    Local/App/Global
    0
    skip_reset_slave=1
    user用于管理MySQL的用户名。这个最后需要root用户,因为它需要执行:stop slave; change master to , reset slave. 默认: root
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    user
    No
    Local/App/Global
    root
    user=mysql_root
    passwordMySQL的管理用户的密码。 默认是空的
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    password
    No
    Local/App/Global
    空的
    password=rootpass
    repl_userMySQL用于复制的用户,也是用于生成CHANGE MASTER TO 每个slave使用的用户。 这个用户必须有REPLICATION SLAVE权限在新的Master上。默认情况下 repl_user会在将来成为master的机器上运行show slave status获取到。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    repl_user
    No
    Local/App/Global
    从show slave status
    repl_user=repl
    repl_passwordMySQL中repl_user用户的密码。 默认是当前复制用的密码。  当你使用online_master_switch时,当使用–orig_master_is_new_slave(原来的Master成为新Master的一个slave)时,如果没有repl_password 开启同步就会失败了。因为当前master上用于复制的用户名和密码都是空的(MHA在原来的Master上执行change master to 时没有带复制的密码,虽然其它slave上设置了复制的密码)
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    repl_password
    No
    Local/App/Global
    当前复制用的密码
    repl_password=replpas
    disable_log_bin当设置了这个参数,在slave应用差异的relay log时不会产生二进制日志。 内部实现通过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
    No
    Local/App/Global
    master_pid_file=/var/lib/mysql/master1.pid
    ssh_userMHA Mananger, MHA node系统上的用户。 这个帐号需要在远程机器上有执行权限(Manager->MySQL),在slave成员之间复制差异的relay-log(MySQL->MySQL)
    这个用户必须有读取MySQL的binary/relay日志和relay_log.info的权限,还需要对远程MySQL上remote_workdir目录的写权限。
    这个用户还必须可以直接ssh到远程机顺上, 推荐使用ssh pbulic key . 一般使用的ssh_user也是运行manager那个那个用户。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ssh_user
    No
    Local/App/Global
    当前使用的系统用户
    ssh_user=root
    remote_workdirMHA node上工作目录的全路径名。如果不存在,MHA node会自动创建,如果不允许创建,MHA Node自动异常退出。 需要注意MHA manager 或是MHA node上需要检查空间是否可用,所以需要注意检查这个。 一般默认, remote_workdir是的”/var/tmp”
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    remote_workdir
    No
    Local/App/Global
    /var/tmp
    remote_workdir=/var/log/masterha/app1
    master_binlog_dirmaster上用于存储binary日志的全路径。这个参数用于当master上mysql死掉后,通过ssh连到mysql服务器上,找到需要binary日志事件。这个参数可以帮助用于无法找到master进程死掉后binary日志存储位置。
    一般: master_binlog_dir是”/var/lib/mysql/, /var/log/mysql”. “/var/lib/mysql/”是大多数系统发行版本的存放位置,”/var/log/mysql”是ubuntu发行版本的存放位置。 你也可以设置多个存放位置用逗号隔开。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    master_binlog_dir
    No
    Local/App/Gobal
    /var/lib/mysql
    master_binlog_dir=/data/mysql1,/data/mysql2
    log_level设置MHA manager记录LOG的级别。 默认是info级别而且大多数情况也是比较适合。 同样可以设置为: debug/info/warning/error.
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    log_level
    No
    App/Global
    info
    log_level=debug
    manager_workdir用于指定mha manager产生相关状态文件全路径。 如果没设置 默认是/var/tmp
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    manager_workdir
    No
    App
    /var/tmp
    manager_workdir=/var/log/masterha
    manager_log指定mha manager的绝对路径的文件名日志文件。 如果没设置MHA Manager将打印到STDOUT/STDERR。 当手工执行故障切换(交互模式切换),MHA Manager会忽略manager_log设置直接将日志输出到STDOUT/STDERR.
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    manager_log
    No
    App
    STDERR
    manager_log=/var/log/masterha/app1.log
    check_repl_delay在默认情况下,当一个slave同步延迟超过100M relay log(需要应用超过100M relay log), MHA在做故障切换时不会选择这个slave做为新的master,因为恢复需要经过很长时间.当设置了check_repl_delay = 0, MHA将忽略被选择的slave上的同步延迟。 这个选项在设置了candidate_master = 1特声明的期望这台机器成为master的情况下特别有用。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    check_repl_delay
    No
    App/Golbal
    1
    check_repl_delay=0
    check_repl_filter在默认下情况,当master和slave设置了不同了binary log/replication 过滤规则时,MHA直接报错不会进行监控和故障切换。 这些将会导致出现一些异想不到的错误”Table not exists”。如果你100%确认不同的过滤规则不会导致恢复中的错误,设置check_repl_filter=0。 需要注意: 当使用了check_repl_filter = 0时,MHA不会检查过滤规则在应用差异的relay日志,所以有可能会出现”Table not exists”的错误。当你设置了这个参数请小心处理。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    check_repl_filter
    No
    App/Global
    1
    check_repl_filter=0
    latest_priority在默认情况下,和Master最接近的slave(一个slave从Master上获得了最一个binlog事件)是最有优先权成为新的master。 如果你想控制一下切换的策略(如: 先选择host2,如果不行,选host3;host3不行,选host4…) 那么设置latest_priority = 0 就可以了。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    latest_priority
    No
    App/Global
    1
    latest_priority=0
    multi_tier_slave从MHA 0.52开始, 多层复制可以支持了。在默认情况下,不支持三层或是更多层的复制配置。 如果: host2从host1上复制,host3从host2上复制。 在默认配置的情况下不支持写host{1,2,3},因为这是一个三层的复制,MHA Manager会停止报错。 当设置了multi_tier_slave, MHA Manager就不会在三层复制报错停止。 但是会忽略第三层的机器。也就是如果host1挂了,host2将会成为新的master,host3还是从host2上进行复制。
    这个参数在MHA Manager 0.52后的版开始支持。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    muli_tier_slave
    No
    App/Global
    0
    multi_tier_slave=1
    ping_interval这个参数设置MHA Manager多长时间去ping一下master(执行一些SQL语句). 当失去和master三次偿试,MHA Manager会认为MySQL Master死掉了。也就是说,最大的故障切换时间是4次ping_interval的时间,默认是3秒。
    如果MHA Manager在和MySQL创建连接时都收到多连接错误或是认证错误,这个就不做重试就会认为master已经挂掉。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ping_interval
    No
    App/Global
    3
    ping_interval=5
    ping_type(从MHA 0.53后开始支持) 在默认情况下, MHA manager和MySQL创建一个连接执行”select 1″(ping_type=select)用于检查master是否健康。 但有一些情况: 每次检测都连接/然后断开会比较好一点,这样对于tcp方面的错误感知更快一点。设置ping_type=CONNECT 就行了。从MHA 0.56后pint_type=INSERT也被添加。
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    ping_type
    No
    App/Global
    SELECT
    ping_type=CONNECT
    secondary_check_script一般来讲, 非常推荐使用更多网络上机器是不同路由策略上的机器来检查MySQL Master是否存活。 默认情况下,只有MHA Manager通过一个路由来检查Master是否存活。这个也是不推荐的。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通过Manager->(A)->remote_host1->(B)->master_host 和Manager->(A)-remote_host2->(B)->master_host来检查MySQL master是否存活。如果在连接过程中通过A可以都成功,通过B是都失败,secondary_\check_\script返回0,而且认为master已经死掉,进行故障切换。如果通过A成功,但返回代码为: 2,则MHA manager有会认为是网络问题,则不会进行故障切换。如果A成功,B也成功,masterha_secondary_check 退出返回:3 则MHA Manager就为认为MySQL Master为存活状态, 则不会进行故障切换。
    一般来讲, remote_host1和remote_host2是和MHA Manager及MySQL Server位于不同的网段中。
    MHA会调用secondary_check_script声明的脚本并自动带上一些参数。 masterha_secondary_check在很多场景都是适用的,但是你也可以自已实现这个程序带有更多的功能。
  • –user=(在远程机器上使用的SSH用户名。 ssh_user的值将被使用)
  • –master_host = (master的hostname)
  • –master_ip = (master的ip地址)
  • –master_port = ( master的端口号)
    注意: 内置的masterha_secondary_check脚本依赖于的Perl的IO::Socket::INET(Perl 5.6.0中是默认支持包含这个模块)。 masterha_secondary_check需要通过ssh连接到远程的机器上,所以需要manager到远程机器上建立public key信任。另外masterha_secondary_check是通过和Master建立TCP的连接测试Master是否存活,所以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如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    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,但这个参数不用于master 故障转意,只使用到master在线的切换。
  • 冻结Master写的过程:

    –command=stop or stopssh
    –orig_master_host = (当前master的主机名)
    –orig_master_ip = (当前master的ip地址)
    –orig_master_port = (当前master的port端口号)
    –orig_master_user = (当前master的用户)
    –orig_master_password = (当前master的用户名)
    –orig_master_ssh_user = (从0.56支持,当前master的ssh的用户名)
    –orig_master_is_new_slave =  (从 0.56 ,是否把原Master更改为新的slave)
  • 新的Master接受写的过程:

    –command=start
    –orig_master_host = ( 原master的机器名 )
    –orig_master_ip = ( 原master的ip )
    –orig_master_port = ( 原master的端口号 )
    –new_master_host = (新master的机器名)
    –new_master_ip = (新master的ip)
    –new_master_port = (新master的端口号)
    –new_master_user = (新master上的用户名)
    –new_master_password = (新master上的用户名及密码)
    –new_master_ssh_user = (从0.56支持, 新master上的ssh用户)
    MHA在冻结写的切换过程中会在Master上执行FlUSH TABLES WITH READ LOCK,在这个优雅的切换过程不会有任何写入的。在新的Master在开始授权写的过程中,你可以做和master_ip_failover_script一样的事情。 例如: 创建用户及权限, 执行set global read_only=0, 更新数据库路由表竺。 如果脚本执行退出码不是0 或是10, MHA Manager异常退出并发不会继续进行master切换。
    默认这个参数是空的,所以MHA Manager在默认情况下什么也不做。
    可以在(MHA Manager package)/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在Master故障完毕后,也许想发一个送一个报告(如email)报告一下切换完毕或是发生的错误。report_script可以完成这个工作。MHA Manager可以通过以下参数使用:
  • –orig_master_host = (死掉master机器名)
  • –new_master_host = (新的master机器名)
  • –new_slave_hosts = (新的slave机器名列表,用逗号隔开)
  • –subject = (邮件名)
  • –body = (正文)
    默认这些参数是空的。 所以默认MHA Manager什么事情也不做。
    可以在(MHA Manager package)/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”这样的值。 这个可以用来复盖global配置中的一些值。一个例子脚本如下。
    #!/usr/bin/perl
    print “password=$ROOT_PASS\n”;
    print “repl_password=$REPL_PASS\n”;
    如:
    参数名
    是否必须
    作用域
    默认值
    例子及说明
    init_conf_load_script
    No
    App/Global
    null
    report_script= /usr/local/custom_script/init_conf_loader


                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-159946-1-1.html 上篇帖子: ha集群的安装部署 下篇帖子: corosycn&pacemaker的高可用web集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表