代码改变世界

MHA mysql高可用

2020-01-03 21:03  unique-yichen  阅读(103)  评论(0)    收藏  举报

准备至少三台数据库服务器

一台MHA管理服务器

 

实现过程

修改 master 的数据库配置文件来对其进行初始化配置:

[root@master ~]# vim /etc/my.cnf

[mysqld]

server-id = 1  //复制集群中的各节点的id均必须唯一

log-bin = master-log //开启二进制日志

relay-log = relay-log //开启中继日志

[root@master ~]# systemctl restart mariadb

 

修改两个 slave 的数据库配置文件,两台机器都做如下操作:

[root@slave1 ~]# vim /etc/my.cnf

[mysqld] server-id = 2 //复制集群中的各节点的id均必须唯一;

relay-log = relay-log //开启中继日志

log-bin = master-log //开启二进制日志

[root@master ~]# systemctl restart mariadb

 

配置一主多从架构

master节点上

grant replication slave,replication client on *.* to 'slave'@'192.168.%.%' identified by 'keer';

 

show master status;

slave节点上:

change master to master_host='192.168.37.122', -> master_user='slave', -> master_password='keer', -> master_log_file='mysql-bin.000001', -> master_log_pos=415;    #链接master节点

start slave;  #开启slave

show slave status \G;  #查看slave状态

 

在所有 Mysql 节点授权拥有管理权限的用户可在本地网络中有其他节点上远程访问。

grant all on *.* to 'mhaadmin'@'192.168.%.%' identified by 'mhapass';

 

 

MHA集群中的各节点彼此之间均需要基于ssh互信通信,以实现远程控制及数据管理功能。简单起见,可在Manager节点生成密钥对儿,并设置其可远程连接本地主机后, 将私钥文件及authorized_keys文件复制给余下的所有节点即可。

[root@manager ~]# ssh-keygen

[root@manager ~]ssh-copy-id  root@node1

 

四个节点都需安装:mha4mysql-node-0.56-0.el6.norch.rpm Manager 节点另需要安装:mha4mysql-manager-0.56-0.el6.noarch.rpm

为MHA专门创建一个管理用户, 方便以后使用, 在mysql的主节点上, 三个节点自动同步:

mkdir /etc/mha_master

vim /etc/mha_master/mha.cnf

 

配置文件内容如下;

[server default] //适用于server1,2,3个server的配置

user=mhaadmin //mha管理用户

password=mhapass //mha管理密码

manager_workdir=/etc/mha_master/app1 //mha_master自己的工作路径

manager_log=/etc/mha_master/manager.log // mha_master自己的日志文件

remote_workdir=/mydata/mha_master/app1 //每个远程主机的工作目录在何处

ssh_user=root // 基于ssh的密钥认证 repl_user=slave //数据库用户名

repl_password=magedu //数据库密码

ping_interval=1 //ping间隔时长

[server1] //节点2

hostname=192.168.37.133 //节点2主机地址

ssh_port=22 //节点2的ssh端口

candidate_master=1 //将来可不可以成为master候选节点/主节点

[server2]

hostname=192.168.37.133

ssh_port=22

candidate_master=1

[server3]

hostname=192.168.37.144

ssh_port=22

candidate_master=1

 

检测各节点间 ssh 互信通信配置是否 ok
masterha_check_ssh -conf=/etc/mha_master/mha.cnf

如果最后一行显示为[info]All SSH connection tests passed successfully.则表示成功。

检查管理的MySQL复制集群的连接配置参数是否OK

[root@manager ~]# masterha_check_repl -conf=/etc/mha_master/mha.cnf