什么是Mycat

1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等.因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的.2.Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储.所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。

术语
分片规则(rule)

逻辑库(schema)
分片节点(dataNode)

节点主机(dataHost)

Mycat使用
首先要安装,mysql5.7和mycat,并且两台主机要先做好mysql的主从复制,且两台主机的mysql都要存在db1数据库,用来存放mycat的数据.

关于mysql的主从复制,这里就不贴出了,可以移步以下链接:

基于GTID的主从复制数据库  http://www.linuxidc.com/Linux/2017-04/142451.htm

mysql的经典主从复制  http://www.linuxidc.com/Linux/2017-04/142452.htm

配置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

定义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="db1" />
38         <dataNode name="dn3" dataHost="server33.lalala.com" database="db1" />

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 -->

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

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

vim schema.xml
47                 <writeHost host="hostM1" url="server33.lalala.com:3306" user="mycat"
48                                    password="Mycat+007">
49                         <!-- can have multi read hosts -->
50                 </writeHost>
51                 <writeHosthost="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 mycat@'%';

配置成功,启动~ 
 mycat start  ,查看日志    wrapper.log

检验
mycat的登陆:

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

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

建表:
create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

插入数据:
insert into employee(id,name,sharding_id) values(1,'leader us',10000);
insert into employee(id,name,sharding_id) values(2, 'me',10010);
insert into employee(id,name,sharding_id) values(3, 'mycat',10000);
insert into employee(id,name,sharding_id) values(4, 'mydog',10010);

在两台mycat上,都能看到相同的数据,即为成功

并且在server33和server44上的db1数据库中,也能看见刚刚创建的数据

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 1
7 }
8 [ $# -ne 1 ] && usage   #如果没有输入参数,就显示本脚本用法
9
10
11 case $1 in
12  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

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-04/142450.htm

MySQL主从复制之Mycat简单配置和高可用的更多相关文章

  1. mysql主从复制(超简单)

      mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  ...

  2. Spring Cloud第十一篇 | 分布式配置中心高可用

    ​ 本文是Spring Cloud专栏的第十一篇文章,了解前十篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...

  3. Dubbo入门到精通学习笔记(十四):ActiveMQ集群的安装、配置、高可用测试,ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试

    文章目录 ActiveMQ 高可用集群安装.配置.高可用测试( ZooKeeper + LevelDB) ActiveMQ高可用+负载均衡集群的安装.配置.高可用测试 准备 正式开始 ActiveMQ ...

  4. 跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh

    SpringCloud系列教程 | 第七篇:Spring Cloud Config 配置中心高可用和refresh Springboot: 2.1.6.RELEASE SpringCloud: Gre ...

  5. Dubbo入门到精通学习笔记(十三):ZooKeeper集群的安装、配置、高可用测试、升级、迁移

    文章目录 ZooKeeper集群的安装.配置.高可用测试 ZooKeeper 与 Dubbo 服务集群架构图 1. 修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射: 2. 下载或上 ...

  6. Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置

    1. Mycat简介 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...

  7. MySQL主从复制的原理及配置

    [http://www.jb51.net/article/50053.htm]   MySQL 数据库的高可用性架构:         集群,读写分离,主备.而后面两种都是通过复制来实现的.下面将简单 ...

  8. MySql主从复制原理和环境配置搭建

    主从复制原理 实质就是通过二进制的sql文件实现主从复制 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlo ...

  9. MySQL - 高可用性:少宕机即高可用?

    我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机时间". 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可 ...

随机推荐

  1. [COI2007] Patrik 音乐会的等待 单调栈

    Code: #include<cstdio> #include<algorithm> #include<iostream> #include<cstring& ...

  2. monyer教你玩电脑——CSS、HTML、JS、XML的关系

    首先Monyer还是有必要提一句:这是一篇低中等难度的文章.如果你是高手或被认为是高手,那么请pass掉这篇文章:如果你是新手,甚至不知道什么是css(譬如百度模版)等,那么请pass掉这篇文章.谢谢 ...

  3. ES6第一节:开发环境的搭建

    前言:由于目前浏览器对ES6的支持度不高,需要借助babel将编写好的ES6代码转换成ES5,浏览器才能解析. 需要在NodeJS环境下运行 一. 建立结构:两个文件夹和一个html文件,分别是src ...

  4. php,javascript设置和读取cookie

    1.php设置cookie setcookie($name,$value,expire,path,domain,secrue); //$name:指的是cookie的名字:$value指的是cooki ...

  5. 利用"SQL"语句自动生成序号的两种方式

    1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[name] f ...

  6. UVA - 10032 Tug of War (二进制标记+01背包)

    Description Problem F: Tug of War A tug of war is to be arranged at the local office picnic. For the ...

  7. Tomcat会话超时时怎样记录操作日志,满足安全审计要求

    众所周知.在实际的Web应用程序中,会话管理一般都採用Web容器会话管理功能. 使用Tomcat做Webserver也是如此,并且从安全的角度考虑,尽量避免去更改和干预Web容器的会话管理功能. To ...

  8. ElasticSearch 架构图

    ElasticSearch 架构图 从下往上来分析ElasticSearch 架构图 Gateway代表ElasticSearch索引的持久化存储方式. 在Gateway中,ElasticSearch ...

  9. Linux下VsFTP和ProFTP用户管理高级技巧 之一

    Linux下VsFTP和ProFTP用户管理高级技巧       FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问 ...

  10. Whitening

    The goal of whitening is to make the input less redundant; more formally, our desiderata are that ou ...