• mysql高可用mha


    关闭防火墙,selinux
    安装mysql。
    百度网盘链接:https://pan.baidu.com/s/1nvQKgAl
    密码:6ua8
    开启主从复制
    所有从库开启二进制日志binlog
    bin_log=文件地址加二进制前缀
    每个库开启server-id----不能一致
    主库创建用户授权:
    grant replication slave on *.* to xieyi@192.168.235.% identified by '123123';
    配置主从复制:
    change master to master_host='主ip',master_user='xieyi',master_password='123123',master_log_file='主二进制日志文件名',master_log_pos=主库二进制日志节点;
    start slave;开启从库
    关闭relay log自动清除
    set global relay_log_purge=0;
    set global read_only=1;
    永久禁用自动删除relay log
    在my.cnf配置文件中添加
    relay_log_purge=0;
    重启mysql;
     
     
    在每台机子上部署mha
    在hosts文件中添加
    主机以及ip的映射关系:
    安装依赖包:
    yum -y install perl-DBD-MySQL
    创建一个专门保存安装包的目录:
    mkdir tools
    将准备好的软件包上传:
    链接:https://pan.baidu.com/s/1OWNAiI8l0Kq8JZhpnlHhpg
    提取码:d358
    所有主机安装mha4mysql-node-0.56-0.el6.noarch.rpm
    rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
    在所有mysql服务其中mha管理账号:
    grant all privileges on *.* to mha@'ip所有关于数据库的IP' identified by 'mha';
    查看是否添加成功,主库添加会自动同步到从库所以在从库上查看
    select user,host from mysql.user;
    为所有节点创建软连接,否则检测mha复制情况时候会报错。
    ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/mysqlbinlog
    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
     
     
     
     
    部署mha管理节点:
    导入所需要的perl包:
    yum -y localinstall perl-*
    安装管理rpm包
    rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
    #############################################################################
    编辑mha配置目录:
    mkdir -p /etc/mha
    创建日志目录:
    mkdir -p /var/log/mha/app1
    mkdir -p /var/data/binlog
    创建一个mha的配置文件:
    vim /etc/mha/app1.cnf
    #############################################################################
    #设置manager日志
    manager_log=/var/log/mha/app1/manager
    #设置manager工作目录
    manager_workdir=/var/log/mha/app1
    #设置mysql保存日志目录以便mha能找到其二进制文件
    master_binlog_dir=/var/data/binlog
    #设置监控的用户
    user=mha
    #设置mha用户的密码
    password=mha
    #设置监控主库,发送ping包的时间间隔,尝试三次没有回应的时候自动进行failover
    ping_interval=2
    #设置复制用户的密码
    repl_password=123123
    #指定复制用户
    repl_user=xieyi
    #设置ssh登录名
    ssh_user=root
     
    [server1]
    hostname=192.168.2.10
    port=3306
    #mysql端主机ip以及端口
    [server2]
    #设置为候选master,如果设置该参数后,发生主从切换后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave
    candidate_master=1
    #默认情况下一个slave数据量落后master 100M的relay logs的话,MHA讲不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置这个参数,MHA触发切换在选择一个新的master的时候忽略复制延时,这个参数对于设置candidate_master=1的主机非常有用,因为这个候选主在切换过程中一定是新的master
    check_repl_delay=0
    hostname=主机ip
    port=3306
     
    [server3]
    hostname=主机ip
    port=3306
    #############################################################################
    由于mysql从库为备用主库所以也需要添加rep用户复制权限
    grant replication slave on *.* to 名称@'在hosts配置的主机名' identified by '密码';
     
    对所有主机配置ssh信任:
    ssh-keygen 生成密钥对
    ssh-keygen -t rsa -P '' -f~/.ssh/id_rsa > /dev/null 2>&1
    发布所有公钥,包括自己
    ssh-copy-id -i /root/.ssh/id_rsa.pub 主机用户名@主机ip地址
    开启ssh服务支持密钥认证:
    vim /etc/ssh/sshd_config
     
    PubkeyAuthentication yes
    RSAAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    重启sshd
    systemctl reload sshd
    #############################################################################
    启动测试
    在mha服务其中:
    #测试ssh
    masterha_check_ssh --conf=/etc/mha/app1.cnf
    #出现如下提示表示成功
    All SSH connection tests passed successfully.
    #测试复制
    masterha_check_repl --conf=/etc/mha/app1.cnf
    #出现如下提示表示成功
    MySQL Replication Health is OK.
    #############################################################################
    启动mha
     nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
    测试是否启动
    masterha_check_status --conf=/etc/mha/app1.cnf
    #####################################################################
    测试:
    停止主库:
    /etc/init.d/mysqld stop
    将主库更变为之前从库:新主库状态为空。
     
     
     
     
     
     
     


  • 相关阅读:
    如何有效的遍历django的QuerySet
    python进程池剖析(三)
    python进程池剖析(二)
    python进程池剖析(一)
    条件变量signal与unlock的顺序
    智能指针与句柄类(四)
    解析正则 /(d)(?=(d{3})+.)/g
    原生JS实现增加删除class
    RN 热更新
    Windows下搭建IOS开发环境
  • 原文地址:https://www.cnblogs.com/xieyi5201314/p/14175943.html
Copyright © 2020-2023  润新知