初学数据库集群(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),如下:
这里的schema name就是server.xml里使用的schema。
如果需要分表,则这样写:
如上面例子:将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里可以改。