Mycat简单配置和高可用的实现

what-mycat


1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.

因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的.

2.Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储.

所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。

术语

分片规则(rule)

逻辑库(schema)

分片节点(dataNode)

节点主机(dataHost)

how-mycat


首先要安装,mysql5.7和mycat


配置mycat

vim wrapper.conf

5 wrapper.java.command=/usr/bin/java                      #java命令所在目录31 wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G   根据实际内存设置33 wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=2984

vim server.xml

80         <user name="mycat"> #登陆mycat的用户名和密码81                 <property name="password">Mycat+007</property>82                 <property name="schemas">JamesMycatSchema</property>82     #mycat中的数据库名

vim schema.xml


定义mycat中可以创建的表,以及哪些节点可以使用哪些表

 7<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> 11<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" /> 12<table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" /> 14<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" 15                            rule="mod-long" />

 19                 <table name="employee" primaryKey="ID" dataNode="dn1,dn2" 20                            rule="sharding-by-intfile" /> 21                 <table name="customer" primaryKey="ID" dataNode="dn1,dn2" 22                            rule="sharding-by-intfile"> 23                         <childTable name="orders" primaryKey="ID" joinKey="customer_id" 24                                                 parentKey="id"> 25                                 <childTable name="order_items" joinKey="order_id" 26                                                         parentKey="id" /> 27                         </childTable> 28                         <childTable name="customer_addr" primaryKey="ID" joinKey="customer_id" 29                                                 parentKey="id" /> 30                 </table>

36         <dataNode name="dn1" dataHost="server33.lalala.com" database="db1" />37         <dataNode name="dn2" dataHost="server33.lalala.com" database="db2" />38         <dataNode name="dn3" dataHost="server33.lalala.com" database="db3" />

43         <dataHost name="server33.lalala.com" maxCon="1000" minCon="10" balance="0"44                           writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">45                 <heartbeat>select user()</heartbeat>46                 <!-- can have multi write hosts -->

连接数据库的用户密码,稍后还要在数据库授权

vim schema.xml

因为我们做的是高可用,所以33和44都具有写的功能

47                 <writeHost host="hostM1" url="server33.lalala.com:3306" user="mycat"48                                    password="Mycat+007">49                         <!-- can have multi read hosts -->50                 </writeHost>51                 <writeHost host="hostS1" url="server44.lalala.com:3306" user="mycat"52                                    password="Mycat+007">53                 </writeHost>

server33,server44:

vim /etc/my.cnf


 22 lower_case_table_names = 1
mysql>CREATE USER mycat identified by ‘Mycat+007‘;mysql>grant all privileges on *.* to [email protected]‘%‘;

配置成功,启动~

mycat start   ,查看日志    wrapper.log

检验


mycat的登陆: 

mysql -umycat -pMycat+007 8066 -h127.0.0.1


查看server44,和server33的数据是否同步~

在44上也能看到成功~

heartbeat+drbd+mycat实现高可用分布式存储

存储:drbd

vim /etc/drbd.d/lalalala.res

resource lalalala {meta-disk internal;device /dev/drbd8;syncer {verify-alg sha1;}on server33.lalala.com {disk /dev/vdc;address 172.25.88.33:7789;}on server44.lalala.com {disk /dev/vdb;address 172.25.88.44:7789;}}

高可用

vim ha.cf

initdead 60   资源初始化时间,如果设置过大,接管时间可能很长,不用担心,只需要耐心等待~

vim haresources

server33.lalala.com IPaddr::172.25.88.100/24/eth0 drbddisk::lalalala Filesystem::/dev/drbd8::/home/mycat/app/mycat/lib::ext4 mycatd

其他配置照旧~

需要指出的是,因为mycat不属于LSB,所以要自己编写脚本启动文件,我写的太粗糙了,不要学我.....

vim /etc/init.d/mycatd 注意启动脚本的位置


3 path=/home/mycat/app/mycat/bin/mycat    #路径为执行mycat的环境,可以用which查看4 function usage(){5  echo "$0 {start|stop|restart}"6  exit 17 }8 [ $# -ne 1 ] && usage   #如果没有输入参数,就显示本脚本用法91011 case $1 in12  start)13 $path/mycat start # &>/dev/null &16  ;;17  stop)18 $path/mycat stop &>/dev/null &21  ;;22  restart)23 $path/mycat start &>/dev/null &24 $path/mycat stop &>/dev/null &27  ;;28  *)29  printf "Usage:$0 {start|stop|restart}\n"30 esac

启动server33的heartbeat!

可以看到IP,存储,服务全都启动拉!


查看挂载点和IP

高可用的接管,take over

时间: 2024-11-05 23:31:41

Mycat简单配置和高可用的实现的相关文章

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

基于MyCat部署HaProxy实现高可用 在实际项目中, Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服务故障,需要有备机提供服务,需要考虑 Mycat 集群. 一.高可用方案 可以使用 HAProxy+Keepalived配合两台MyCat搭起MyCat集群,实现高可用性. HAProxy实现了MyCat多节点的集群高可用和负载均衡,而 HAProxy自身的高可用则可以通过Keepalived来实现. 架构图: 于上一个博客的环境部署(MySQL

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置ipvs高可用集群

  基于crm+hb_gui接口配置ipvs高可用集群    基于crm+hb_gui+ldirectored接口配置ipvs高可用集群 

配置drbd高可用集群

前期准备: 同步时间 (两个节点) 节点一(172.16.21.6) [[email protected] heartbeat2]# ntpdate 172.16.0.1 31 Dec 20:59:25 ntpdate[6950]: adjust time server 172.16.0.1 offset 0.379319 sec [[email protected] heartbeat2]# ? 最好几分钟同步一下 [[email protected] heartbeat2]# crontab

利用lvs keepalived配置redis高可用及负载均衡

需求 我们用ES做日志服务,架构是 上游数据来源=>redis=>logstash=>ES redis目前还是单点, 没有做高可用, 现在数据量越来越多, 如果下游消费不出问题还好, redis里面数据来了就走,但是下游一旦出问题, 分给redis的内存半小时就撑满了. 看到redis3.0 beta版本已经提供了集群功能, 但是需要client以集群模式接入, 我们这么多上游用户, 不太可能统一要求他们改造. 公司也有硬件的LB, 同事在E公司的时候就是用的硬件LB. 但接入还要申请,

配置MySQL高可用集群MHA

配置MySQL高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址 192.168.4.100拓扑结构: client50 | mysql51主 | | | | | |mysql52 mysql53 mysql54 mysql55 mgm56从 从 从 从 管理集群备用主 备用主+++++++++++++++++++++++++++++++++++++++++++++++++++++++

分布式配置中心高可用

传统作法 在之前实现的config-server基础上来实现高可用非常简单,不需要我们为这些服务端做任何额外的配置,只需要遵守一个配置规则:将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护,而客户端在指定Config Server位置时,只要配置Config Server外的均衡负载即可,就像如下图所示的结构 注册为服务 把config-server也注册为服务,这样所有客户端就能以服务的方式进行访问.通过这种方法,只需要启动多个指向同一

Linux基于heartbeat配置httpd高可用服务

Heartbeat是一个基于Linux开源的,被广泛使用的高可用集群系统.我们可以基于Heartbeat构建web高可用服务环境.本文在CentOS 6.5下做了一个简单示例,并对其日志进行了初步分析,供大家参考. 有关Heartbeat的相关知识,可以参考: Heartbeat 集群组件概述 Heartbeat 安装及配置 一.配置host解析及网络 ###主机名配置,与/etc/hosts中的解析两者配置保持一致 [[email protected] ~]# more /etc/syscon

最简单的 kubernetes 高可用安装方式

sealos 项目地址:https://github.com/fanux/sealos 本文教你如何用一条命令构建 k8s 高可用集群且不依赖 haproxy 和 keepalived,也无需 ansible.通过内核 ipvs 对 apiserver 进行负载均衡,并且带 apiserver 健康检测.架构如下图所示: 本项目名叫 sealos,旨在做一个简单干净轻量级稳定的 kubernetes 安装工具,能很好的支持高可用安装. 其实把一个东西做的功能强大并不难,但是做到极简且灵活可扩展就

ZooKeeper集群的安装、配置、高可用测试

Dubbo注册中心集群Zookeeper-3.4.6 Dubbo建议使用Zookeeper作为服务的注册中心. Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3.5.7个节点)较为合适. ZooKeeper与Dubbo服务集群架构图 服务器1:192.168.1.81  端口:2181.2881.3881 服务器2:192.168.1.82  端口:2182.2882.3882 服务器3:192.