MMM是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要是用来监控和管理MySQL复制。虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选上提供部分读服务。
主服务器IP1:192.168.170.128
主服务器IP2:192.168.170.129
从服务器IP1:192.168.170.130
从服务器IP2:192.168.170.131
监控服务器IP:192.168.170.132
实验如下
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/f9325193784ba9360c8b11f4655aa8cd.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/e108f121de735366c2fda550fc1d183e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/07a1f1bf88d1f086a345a6a489e52c72.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在所有的机器上配置ALI云源,然后安装epel-release源
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/826fa19019f6355e4c7b02f821acf69b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在四台服务器上安装mariadb服务
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/edd34f3068985471dc6b88cff710e65b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在四台服务etc下的my.cnf文件里修改内容,要注意的是server_id是不同的。
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/1dc97a137ad42aa529f588963217c3b8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
开启mariadb服务,开起3306端口,数据库就安装完成了
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/3ae44be47aded009e0692ef8b376864e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
进入数据库首先创建个用户给权限,在刷新使数据库立即生效,在显示主从同步状态指定主服务器地址和二进制日志和节点,在这里要注意的是主服务器的节点经常会改变,所有在进行操作前要确认主服务器的节点和二进制日志。
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/0b13b380477c45eceb347bd53b05003e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
开启主从同步,显示主从同步状态,这里需要看到两个yes。
这里两台主服务器都需要相互复制
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/36aab911563b3b24c9c33fb520b8da3c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在两台从服务器上指定其中一台主服务器就行开启主从同步。
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/54e958e4f2da4c54386a5736c3d8507c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在所有机器上安装MMM。注意,epel源配置好。
cd /etc/mysql-mmm/下面的mmm_common.conf这个文件修改如下内容
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/744839ba648f9e1c91f4ad6c0f8d6c23.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
因为我用的Centos7所有网卡为ens33,具体看你自己的情况而定。密码随意修改一个。
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/7832b72b2dfd5c4dc470fc2ebfa445a4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
设定两个主服务器的地址
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/bdd40793c69524f2194d853e72e7376d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
设置两个从服务器的地址
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/84abce83b14a3ce1ed203b2f3582ebf6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
设置两台主服务器具有写的权利并设置一个虚拟IP,设置两台从服务器具有读的权利,设置两个虚拟IP。
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/a1167ae318d85e3be292083c4bb15ae3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
为了方便,我们可以用scp命令吧这个文件复制到其他所有的服务器和监听系统下。
在监听服务器修改/etc/mysql-mmm/mmm_mon.conf这个文件
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/3dfe98b3a3cd6f161e43dbb3c5208ec8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
指定需要监听的地址和修改一个密码
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/ca12bb8b340b1ee70e5eee2aa022cd93.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在所有数据库为mmm_moniter授权
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/50c605474dc3f02ee248259e2ade80f0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
修改所有数据库的mmm_agent.conf。this db4 //根据规划进行逐一调整
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/1f4ab06e4cb612e9deb4772002c2e73c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在所有数据库服务器上开启服务
![MariaDB-MMM高可用群集](https://s1.51cto.com/images/blog/201809/09/0e1568e56867fcd907951682a294744f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
在监控服务器上开启监控服务并查看监控状态。
为额实验能否故障切换,所以把db1关闭mariadb服务。