• 搭建MHA


    安装MySQL 5.7

    • yum源的配置文件如下
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
    gpgcheck=0
    
    • 使用yum install mysql-community-server -y安装mysql

    • 安装完毕mysql之后的配置操作

      • systemctl start mysqld
      • cat /var/log/mysqld.log | grep password --> 获取临时密码
      • mysql -uroot -p -> 输入临时密码
      • set password for 'root'@'localhost' = password('New@password123');
      • flush privileges;
      • systemctl stop mysqld -> 先关闭mysqld, 注意: 如果卡住了, 使用Ctrl + C结束, 在使用ps aux | grep mysqld 查看到mysqld进程的id号, 使用kill -9 id杀死mysqld进程, 在使用systemctl stop mysqld
    • 修改/etc/my.cnf配置文件的[mysqld]域

      • master节点

        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        server_id=1
        innodb_file_per_table=1
        log_bin=master-bin
        relay_log=relay-bin
        read_only=1
        relay_log_purge=0 # 一定要开启
        plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
        rpl_semi_sync_master_enabled = 1
        rpl_semi_sync_slave_enabled = 1
        rpl_semi_sync_master_timeout = 5000
        
      • slave1 节点(主需要修改server_id)

        
        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        server_id=10
        innodb_file_per_table=1
        log_bin=master-bin
        relay_log=relay-bin
        read_only=1
        relay_log_purge=0
        plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
        rpl_semi_sync_master_enabled = 1
        rpl_semi_sync_slave_enabled = 1
        rpl_semi_sync_master_timeout = 5000
        
        • slave2 节点(主需要修改server_id)
        
        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        server_id=11
        innodb_file_per_table=1
        log_bin=master-bin
        relay_log=relay-bin
        read_only=1
        relay_log_purge=0
        plugin_load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
        rpl_semi_sync_master_enabled = 1
        rpl_semi_sync_slave_enabled = 1
        rpl_semi_sync_master_timeout = 5000
        
    • systemctl start mysqld 启动master, slave1, slave2节点

    • 这三个节点之间需要ssh互相密钥通信, 方便起见, 在master节点执行, ssh-keygen -i rsa -P "", 接着使用 ssh-copy-id -i .ssh/id_rsa.pub root@localhost, 接着将.ssh目录拷贝到其他节点即可

    • 在master节点创建用户'repl'@'192.168.1.%'(该repl用户只用在master上存在), 创建用户'mhaadmin'@'192.168.1.%'(该用户需要在所有的节点上都有, 因为该用户是监控用户)

    • 为repl用户赋予replication slave权限, 为mhaadmin赋予all权限

    • create user 'repl'@192.168.1.%' identified by 'New@password123';

    • grant replication slave on . to 'repl'@'192.168.1.%';

    • create user 'mhaamdin'@192.168.1.%' identified by 'New@password123';

    • grant all on . to 'mhaamdin'@'192.168.1.%';

    安装配置mha4mysql

    • rpm(mha4mysql-manager, mha4mysql-node)包自己找
    • 在所有节点上使用yum安装这两个包, 安装时会安装很多的依赖包
    • 创建配置文件的目录(所有节点): mkdir -pv /etc/masterha
    • 在master节点中, vim /etc/masterha/app1.cnf
    [server default]
    user=mhaadmin # 监控用户, 在所有的mysql节点中都要有
    password=yourpassword
    manager_workdir=/data/masterha/app1 # 工作目录, 会自动创建的
    manager_log=/data/masterha/app1/manager.log # 日志文件的路径
    remote_workdir=/data/masterha/app1 # slave节点的工作目录, 一般与master一样
    ssh_user=root # ssh连接登录时的用户, mha依赖于ssh
    repl_user=repl # 复制的用户
    repl_password=yourpassword
    ping_interval=1 # 心跳频率
    master_ip_failover_script= /usr/local/bin/master_ip_failover    //设置自动failover时候的切换脚本,perl脚本, 实现VIP的切换
    master_ip_online_change_script= /usr/local/bin/master_ip_online_change  //设置手动切换时候的切换脚本
    
    [server1]
    hostname=172.20.10.7
    port=3306
    candidate_master=1 # 当master挂时提升为master
    
    [server2]
    hostname=172.20.10.8
    port=3306
    candidate_master=1 当master挂时提升为master
    
    [server3]
    hostname=172.20.10.9
    port=3306
    # candidate_master=1
    

    配置MySQL的主从复制

    • 在slave1和slave2节点中, 使用change master to...命令配置好连接参数
    • 在slave1和slave2中使用start slave
    • 在master节点中使用show slave hosts查看是否成功构建复制架构

    测试MHA

    • masterha_check_ssh --conf=/etc/masterha/app1.cnf # 测试ssh的连接
    • masterha_check_repl --conf=/etc/masterha/app1.cnf # 测试复制是否可用
    • masterha_check_status --conf=/etc/masterha/app1.cnf # 测试是否运行, 现在应该是NOT RUNNING

    启动MHA

    • nohub masterha_manager --remove_dead_master_conf --ignore_last_failover --conf=/etc/masterha/app1.cnf > /data/masterha/app1/manager.log 2>&1 & # 所有的信息都重定向到/data/masterha/app1/manager.log中
    • masterha_check_status --conf=/etc/masterha/app1.cnf # 此时查看应该已经运行了
    –remove_dead_master_conf 该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。 
    

    关闭MHA

    • masterha_stop --conf=/etc/masterha/app1.cnf

    在master节点当机时, 会将VIP迁移到候选那的master节点上, 在manager.log日志中可以看见

  • 相关阅读:
    Spring -- spring 和 hibernate 整合
    文件:一个任务
    文件:因为懂你,所以永恒
    集合:在我的世界里,你就是唯一
    总结回顾
    快速排序的优化
    快速排序
    归并排序(迭代实现)- 数据结构和算法95
    归并排序(递归实现)- 数据结构和算法94
    堆排序的代码实现
  • 原文地址:https://www.cnblogs.com/megachen/p/9604926.html
Copyright © 2020-2023  润新知