• ADADADADAD

    Master High Availability 安装配置[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:55:03

    作者:文/会员上传

    简介:

    MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。在MySQL 故障切

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,
    是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。在
    MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操
    作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达
    到真正意义上的高可用。
    该软件由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。MHA Manager
    可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave

    点上。
    MHA Node 运行在每台 MySQL 服务器上,MHA Manager 会定时探测集群中的 master
    节点,当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将
    所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。MHA 可

    与半同步复制结合起来,目前 MHA 主要支持一主多从的架构,要搭建 MHA,要求一个复制集群
    中必须最少有三台数据库服务器,一主二从,即一台充当 master,一台充当备用 master,另
    外一台充当从库.
    MHA 切换步骤:
    1.从宕机的 master 中保存二进制文件
    2.检测含有最新日至更新的 slave
    3.应用差异的中继日至(relay log)到其他的 slave
    4.应用从 master 中保存的二进制日至事件到其他的 slave 中
    5.提升一个 slave 为 master
    6.使其他的 slave 指向最新的 master 进行复制。
    manager 的工具:
    masterha_check_ssh 检查 MHA 的 SSH 配置状况
    masterha_check_repl 检查 MySQL 复制状况
    masterha_manger 启动 MHA
    masterha_check_status 检测当前 MHA 运行状态
    masterha_master_monitor 检测 master 是否宕机
    masterha_master_switch 控制故障转移(自动或者手动)
    masterha_conf_host 添加或删除配置的 server 信息
    node 的工具:
    save_binary_logs 保存和复制 master 的二进制日志
    apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的 slave
    filter_mysqlbinlog 去除不必要的 ROLLBACK 事件(MHA 已不再使用这个工具)
    purge_relay_logs 清除中继日志(不会阻塞 SQL 线程)
    Mha 实验环境配置:我们这个是在主从复制(一主两从)的基础上搭建的,mha 是可以放在一个 slave 端也可以单

    运行:
    实验环境配置:
    Rhel6.5
    iptables selinux down
    172.25.40.1 server1.example.com master
    172.25.40.2 server2.example.com slave candidate master
    172.25.40.3 server3.example.com slave
    mha
    Master 端配置:

    yum install perl-DBD-mysql -yrpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

    构建免密登陆
    ssh-keygen
    ##生成密钥 ssh-copy-id 172.25.40.2
    ##给另外两台 mysql 主机分发,这样可以免密连接
    ssh-copy-id 172.25.40.3
    mysql 主配置文件(/etc/my.cnf)配置

    [mysqlnd]server-id=1

    ##数据库的唯一标示,不能重复
    log-bin=mysql-bin
    ##二进制记录文件名为 mysql-bin
    binlog-do-db=test ##同的库为 test
    binlog-ignore-db=mysql ##不同步 mysql
    gtid-mode=ON ##打开 gtid 模式
    enforce-gtid-consistency=ON##强制使用 gtid 模式
    slave-parallel-type=LOGICAL_CLOCK ##打开多线程模式
    slave-parallel-workers=16 ##开启 16 个线程
    relay_log_info_repository=TABLE
    ##以表格形式存放 relay-log 信息
    relay_log_recovery=ON
    rpl_semi_sync_master_enabled=ON ##设置半同步 master 和 slave 开启
    rpl_semi_sync_slave_enabled=ON
    重新启动两台服务器上的 mysql
    /etc/init.d/mysqld restart
    进入数据库下载半同步模块

    mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';Query OK, 0 rows affected (0.50 sec)mysql> set global rpl_semi_sync_master_enabled=1;Query OK, 0 rows affected (0.00 sec)

    给所创建的认证用户复制权限及 root 用户所有权限的授权

    mysql> grant all privileges on *.* to 'root'@'172.168.40.%' identified'xxxxxxxxxx';Query OK, 0 rows affected, 1 warning (0.00 sec)bymysql> grant replication slave on *.* to 'redhat'@'172.168.40.%' identified by'xxxxxxxxx';mysql> grant all on *.* to root@'172.25.40.%' identified by 'xxxxxxxx';Query OK, 0 rows affected, 1 warning (0.38 sec)

    Slave(candidate master)端配置:

    yum install perl-DBD-mysql -yrpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

    构建免密登陆
    ssh-keygen
    ##生成密钥
    ssh-copy-id 172.25.40.1 ##给另外两台 mysql 主机分发,这样可以免密连接
    ssh-copy-id 172.25.40.3
    mysql 主配置文件(/etc/my.cnf)配置

    [mysqlnd]除过 server-id 是不同的,其他参数均一样server-id=2

    重新启动两台服务器上的 mysql
    /etc/init.d/mysqld restart 进入数据库下载半同步模块

    mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';Query OK, 0 rows affected (0.14 sec)mysql> set global rpl_semi_sync_slave_enabled=1;Query OK, 0 rows affected (0.00 sec)mysql> set global read_only=1;

    #设置为只读模式,因为是备选 master,所以当
    master 宕机时,candidate master 要充当 master,故不用写进配置文件中
    Query OK, 0 rows affected (0.00 sec)
    给所创建的认证用户复制权限及 root 用户所有权限的授权
    mysql> grant all privileges on .to root@’172.25.40.%’ identified by ‘xxxxxxxx’;
    ##这个密码是 manager 主机配置文件里面所写的密码
    Slave 端配置:

    yum install perl-DBD-mysql -yrpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

    构建免密登陆
    ssh-keygen
    ##生成密钥
    ssh-copy-id 172.25.40.1##给另外两台 mysql 主机分发,这样可以免密连接
    ssh-copy-id 172.25.40.2
    mysql 主配置文件(/etc/my.cnf)配置

    [mysqlnd]除过 server-id 是不同的,其他参数均一样server-id=3

    重新启动两台服务器上的 mysql
    /etc/init.d/mysqld restart
    进入数据库下载半同步模块

    mysql>install plugin rpl_semi_sync_slave soname 'semisync_slave.so';Query OK, 0 rows affected (0.14 sec)lave_enabled=1;Query OK, 0 rows affected (0.00 mysql> set global rpl_semi_sync_slave_enabled=1

    给所创建的认证用户复制权限及 root 用户所有权限的授权

    mysql> grant all privileges on *.* to 'root'@'172.168.40.%' identified'xxxxxxxxx';Query OK, 0 rows affected, 1 warning (0.00 sec)bymysql> grant replication slave on *.* to 'redhat'@'172.168.40.%' identified by'xxxxxxxx';mysql> change master tomaster_host='172.25.40.1',master_user='redhat',master_password='xxxxxxxxxx',master_auto_position=1;

    Mha 主机

    yum install perl-* mha4mysql-manager-0.56-0.el6.noarch.rpm -ymkdir /usr/local/mha

    ##创建工作目录 workdir

    mkdir /etc/mhacd /etc/mha/

    ##创建配置文件所在目录

    vim app.conf[server default] manager_workdir=/usr/local/mha manager_log=/usr/local/mha/mha.log master_binlog_dir=/var/lib/mysqluser=root ##数据库用户 登陆数据库的用户 ,用于manager监控管理用户和密码password=xxxxxxxx##数据库登陆密码 初始化的时候登陆数据库的密码 ping_interval=1remote_workdir=/tmprepl_user=redhat##复制用户(授权在slave上)用于主从间复制 repl_password=xxxxxxxx##slave复制用户的密码ssh_user=root ##ssh用户[server1] hostname=172.25.40.1port=3306 [server2] hostname=172.25.40.2port=3306candidate_master=1##备用主机check_repl_delay=0##日至差异大于100M的时候,不做master,两个参数通常一起使用 [server3] hostname=172.25.40.3 port=3306 #no_master=1##永远不会作为master

    检查MySQL复制状况

    masterha_check_repl –conf=/etc/mha/app.cnf Tue Apr 24 09:14:45 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.Tue Apr 24 09:14:45 2018 - [info] Reading application default configuration from /etc/mha/app.conf..Tue Apr 24 09:14:45 2018 - [info] Reading server configuration from /etc/mha/app.conf..Tue Apr 24 09:14:45 2018 - [info] MHA::MasterMonitor version 0.56.Tue Apr 24 09:14:45 2018 - [info] GTID failover mode = 1Tue Apr 24 09:14:45 2018 - [info] Dead Servers:Tue Apr 24 09:14:45 2018 - [info] Alive Servers:Tue Apr 24 09:14:45 2018 - [info] 172.25.40.1(172.25.40.1:3306)Tue Apr 24 09:14:45 2018 - [info] 172.25.40.2(172.25.40.2:3306)Tue Apr 24 09:14:45 2018 - [info] 172.25.40.3(172.25.40.3:3306)Tue Apr 24 09:14:45 2018 - [info] Alive Slaves:Tue Apr 24 09:14:45 2018 - [info] 172.25.40.2(172.25.40.2:3306)Version=5.7.17-log (oldest major version between slaves) log-bin:enabledTue Apr 24 09:14:45 2018 - [info] GTID ONTue Apr 24 09:14:45 2018 - [info] Replicating from 172.25.40.1(172.25.40.1:3306)Tue Apr 24 09:14:45 2018 - [info] Primary candidate for the new Master (candidate_master is set)Tue Apr 24 09:14:45 2018 - [info] 172.25.40.3(172.25.40.3:3306)Version=5.7.17 (oldest major version between slaves) log-bin:disabledTue Apr 24 09:14:45 2018 - [info] GTID ONTue Apr 24 09:14:45 2018 - [info] Replicating from 172.25.40.1(172.25.40.1:3306)Tue Apr 24 09:14:45 2018 - [info] Not candidate for the new Master (no_master is set)Tue Apr 24 09:14:45 2018 - [info] Current Alive Master: 172.25.40.1(172.25.40.1:3306)Tue Apr 24 09:14:45 2018 - [info] Checking slave configurations..Tue Apr 24 09:14:45 2018 - [info]read_only=1 is not set on slave 172.25.40.2(172.25.40.2:3306).Tue Apr 24 09:14:45 2018 - [info]read_only=1 is not set on slave 172.25.40.3(172.25.40.3:3306).Tue Apr 24 09:14:45 2018 - [warning]log-bin is not set on slave 172.25.40.3(172.25.40.3:3306). This host cannot be a master.Tue Apr 24 09:14:45 2018 - [info] Checking replication filtering settings..Tue Apr 24 09:14:45 2018 - [info]binlog_do_db= , binlog_ignore_db= Tue Apr 24 09:14:45 2018 - [info]Replication filtering check ok.Tue Apr 24 09:14:46 2018 - [info] GTID (with auto-pos) is supported. Skipping all SSH and Node package checking.Tue Apr 24 09:14:46 2018 - [info] Checking SSH publickey authentication settings on the current master..Tue Apr 24 09:14:46 2018 - [info] HealthCheck: SSH to 172.25.40.1 is reachable.Tue Apr 24 09:14:46 2018 - [info] 172.25.40.1(172.25.40.1:3306) (current master) +--172.25.40.2(172.25.40.2:3306) +--172.25.40.3(172.25.40.3:3306)Tue Apr 24 09:14:46 2018 - [info] Checking replication health on 172.25.40.2..Tue Apr 24 09:14:46 2018 - [info]ok.Tue Apr 24 09:14:46 2018 - [info] Checking replication health on 172.25.40.3..Tue Apr 24 09:14:46 2018 - [info]ok.Tue Apr 24 09:14:46 2018 - [warning] master_ip_failover_script is not defined.Tue Apr 24 09:14:46 2018 - [warning] shutdown_script is not defined.Tue Apr 24 09:14:46 2018 - [info] Got exit code 0 (Not master dead).

    MySQL Replication Health is OK.

    Master High Availability 安装配置.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mhamasterhigh