vlambda博客
学习文章列表

初学数据库集群(MHA、MyCat)


=================

交个作业:hello-world级的数据库集群

=================


最近因为公司新需求,要做MySQL数据库集群。访问量不高,至少双备,可以自动切换。于是我和同事俩开始研究。虽然过程一波三折,但结果还算满意。

还咨询了DBA前辈老师老师(这里没写多,哈哈),表示感谢。


一、MHA

开始的想法,是使用MySQL Replication + MHA。


优点是:

  • 故障切换时,自动判断哪个从库与主库离的最近,并切换到上面

  • 支持binlog server,提高 binlog 的传送效率

  • 结合半同步功能,确保故障切换时数据不丢失


缺点是:

  • 主库down机切换到从库后,要想让修复好的主库再次加入到集群里,需要手动重新修改配置文件,重启MHA。(因为在切换的时候,MHA将主库信息从配置文件中删除了……)


转网上的安装配置如下:

前提:两个linux服务器,各自安装一个Mysql数据库

MySQL Replication(Master与Slave基本原理及配置)

https://blog.csdn.net/weiwei101117/article/details/52038330

mha的搭建步骤(一主一从架构)

https://www.cnblogs.com/xiaoboluo768/p/5135584.html



二、MyCat

后来,又对比了一下数据库中间件,觉得MyCat挺符合要求。


它的优点:

  • 满足主从自由切换

  • 支持多种数据库

  • 支持分库分表

  • 安装、配置都很简单

当然,双主互备则需要MySQL Replication来完成了。


详细参考:

官方帮助文档:

https://github.com/MyCATApache/Mycat-Server/wiki

MyCat

https://www.jianshu.com/p/f02a48226222

mysql分布式数据库中间件对比

https://www.cnblogs.com/zzsdream/articles/6650690.html


安装步骤简单说明如下:

1. 安装JDK,配置环境变量(因为MyCat是用Java开发的)

官网下载,需要注册登录……


2. 下载并解压MaCat

官网http://mycat.org.cn/可以下载最新release版


3. 主要修改下面三个配置文件:

1)mycat/conf/server.xml

定义mycat对外暴露的用户名密码等信息。比如:


2)mycat/conf/schema.xml

定义逻辑库,表、分片节点等内容。


这里可以配置集群了(两个writeHost),如下:

初学数据库集群(MHA、MyCat)

这里的schema name就是server.xml里使用的schema。


如果需要分表,则这样写:

初学数据库集群(MHA、MyCat)

如上面例子:将user_info数据分别放在host1、host2两个数据库的user_info里。分配规则用rule="mod-long"来定义(rule的定义在rule.xml),表示对主键id进行取模,分配到各自的表里。


当然,分库和集群可以一起使用。


3)/usr/local/mycat/conf/rule.xml

如果需要分表,则用到这个文件了,否则不用管。如下图的function就是上图用到的rule,里面的count值要跟分表的个数对应。


常用命令:

/mycat/bin/mycat start

支持以下参数:

start | restart |stop | status


其他说明:

1. warpper.conf是用来设置运行参数的,比如jdk的运行内存:

我的虚拟机配置是1核1G,所以我尝试把wrapper上面这两句设置成1G/256M,MyCat就启动失败,说是wrapper内存不够,我只好改回去了,暂时看不影响。生产环境还是要根据实际情况稍微研究一下的。


2. 启动和运行日志默认在mycat/logs/目录下,貌似在wrapper.conf里可以改。