一、Mycat的安装准备:

  1、jdk:要求jdk必须是1.7及以上版本

  2、Mysql:推荐mysql是5.5以上版本

  3、Mycat:

  Mycat的官方网站:

  http://www.mycat.org.cn/

  下载地址:

  https://github.com/MyCATApache/Mycat-download

  Mycat的安装

  Mycat有windows、linux多种版本。本教程为linux安装步骤,windows基本相同。

  第一步:下载Mycat-server-xxxx-linux.tar.gz

  第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。

  第三步:进入mycat目录,启动mycat

      ./mycat start

      停止:

      ./mycat stop

      mycat 支持的命令{ console | start | stop | restart | status | dump }

      Mycat的默认端口号为:8066

二、Mycat的分片

  两台mysql数据库服务器

  Host1:192.168.37.101

  Host2:192.168.37.102

  host1环境:

  操作系统版本:centos6.4

  数据库版本:mysql-5.6

  mycat版本::1.4release(发行版)

  数据库名:db1、db3

  mysql节点2环境:  

  操作系统版本 : centos6.4

  数据库版本 : mysql-5.6

  mycat版本 :1.4 release

  数据库名 : db2

  配置重要文件Schema.xml

   <schema name="mycatName" checkSQLschema="false" sqlMaxLimit="100">

<!-- auto sharding by id (long) -->  id自动分片的规则

<table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

</schema>

   给mycat创建个虚拟的数据库名mycatName,给mycatName创建指定表名,和db1、db2、db3表名相同才能进行分片  

MyCat安装到节点1上(需要安装jdk)

  <dataNode name="dn1" dataHost="localhost1" database="db1" />

<dataNode name="dn2" dataHost="localhost2" database="db2" />

<dataNode name="dn3" dataHost="localhost1" database="db3" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<!-- can have multi write hosts -->

<writeHost host="hostM1" url="192.168.37.101:3306" user="root"

password="root">

<!-- can have multi read hosts -->

</writeHost>

</dataHost>

<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"

writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<!-- can have multi write hosts -->

<writeHost host="hostM1" url="192.168.37.102:3306" user="root"

password="root">

<!-- can have multi read hosts -->

</writeHost>

</dataHost>

</mycat:schema>

schema.xml中删除<!--type="global"-->,不删除的话分节的话三张表都会有相3同数据

   配置重要文件Server.xml

<user name="gaoxiansheng">

<property name="password">123456</property>

<property name="schemas">mycatName</property>

<property name="readOnly">false</property>

</user>

   配置重要文件rule.xml

三、mycat读写分离:

    主从配置需要注意的地方

    1、主DB server和从DB server数据库的版本一致

    2、主DB server和从DB server数据库数据名称一致

    3、主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一

  1.拷贝my.cnf cp /usr/share/mysql/my-default.cnf /etc/
   改名 mv my-default.cnf my.cnf
   编辑 vim my.cnf 加入 lower_case_table_names=1 不区分大小写
   重启mysql service mysql restart
  2.主从复制:读写,删除增加一致性
   主服务器配置:(在192.168.37.101上配置)
  第一步:更改/etc/my.cnf 文件
     

binlog-do-db=db1

binlog-ignore-db=mysql

#启用二进制日志

log-bin=mysql-bin

#服务器唯一ID,一般取IP最后一段

server-id=134

 
  第二步:重启mysql服务
      service mysql restart
  第三步:建立一个用户
      mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
      mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';
  刷新权限
      mysql> FLUSH PRIVILEGES;
  查看mysql现在有哪些用户
      mysql>select user,host from mysql.user;

  第四步:查询master的状态
      mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 | 517| db1 | mysql | |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set
  从服务器配置:(在192.168.37.102上配置)
  第一步:
    在从服务器Hadoop02上复制文件
    cp /usr/share/mysql/my-default.cnf /etc/
    改名
    mv my-default.cnf my.cnf
    更改配置vim /etc/my.cnf
    server-id=106
  第二步:重启mysql服务
    service mysql restart
  第三步:配置从服务器
    change master to master_host='192.168.37.101',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=517
    注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的 mysql-bin.000001就是file对应的值)。

  第四步:启动从服务器复制功能
    Mysql>start slave;

  第五步:检查从服务器复制功能状态:
    mysql> show slave status

    ……………………(省略部分)
    Slave_IO_Running: Yes //此状态必须YES
    Slave_SQL_Running: Yes //此状态必须YES
    ……………………(省略部分)

    注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

    错误处理:
    如果出现此错误:
    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
    因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。
  配置mycat实现读写分离:

<dataNode name="dn1" dataHost="localhost1" database="db1" />

<dataNode name="dn2" dataHost="localhost1" database="db2" />

<dataNode name="dn3" dataHost="localhost1" database="db3" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"

writeType="0" dbType="mysql" dbDriver="native" switchType="2"  slaveThreshold="100">

<heartbeat>show slave status</heartbeat>

<writeHost host="hostM" url="192.168.25.101:3306" user="root"password="root">

<readHost host="hostS" url="192.168.25.102:3306" user="root"password="root" />

</writeHost>

</dataHost>

MyCat实现数据库与数据库之间的读写分离的更多相关文章

  1. 阿里P8架构师谈:数据库分库分表、读写分离的原理实现,使用场景

    本文转载自:阿里P8架构师谈:数据库分库分表.读写分离的原理实现,使用场景 为什么要分库分表和读写分离? 类似淘宝网这样的网站,海量数据的存储和访问成为了系统设计的瓶颈问题,日益增长的业务数据,无疑对 ...

  2. JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法

    1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL ...

  3. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 本文主 ...

  4. MHA + Maxscale 数据库的高可用和读写分离

    MySQL 常见发行版本 MySQL 标准化.自动化部署 深入浅出MySQL备份与恢复 深入理解MySQL主从复制 MySQL构架设计与容量规划 MHA Maxscale MySQL 常见发行版本 M ...

  5. MHA+atlas(数据库的高可用与读写分离)

    学习完了mycat的高可用还是复习一下MHA+atlas吧,个人感觉还是比mycat好用,毕竟MHA有数据补全和切换主从的机制 1 MHA是什么? MHA(Master High Availabili ...

  6. Mysql主从数据库(master/slave),实现读写分离

    在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+uwsgi+负载均衡配置,但是不要以为这样做了就是一劳永逸的,到了数据业务 ...

  7. 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_85 在之前的一篇文章中,阐述了如何在高并发高负载的场景下使用nginx做后台服务的负载均衡:在阿里云Centos上配置nginx+ ...

  8. 应用集成mycat,实现mycat的高可用与mysql的读写分离

    前言 开心一刻 一个女人自朋友圈写道:我家老公昨天和别人家的老婆出去旅游,迄今未归,我则被别人家的老公折腾了一天,好累哦! 圈子下面,评论无数,老公在下面评论到:能不能好好说话,我只不过陪女儿去毕业旅 ...

  9. 利用mycat实现基于mysql5.5主从复制的读写分离

    整体步骤: 1.准备好两台服务器,一台作为主数据库服务器,一台作为从服务器,并安装好mysql数据库,此处略 2.配置好主从同步 3.下载JDK配置mycat依赖的JAVA环境,mycat采用java ...

随机推荐

  1. List转为DataTable并可以导出为Excel

    using com.jd120.Core.Utility; using System; using System.Collections.Generic; using System.Data; usi ...

  2. Spring课程 Spring入门篇 3-1 Spring bean装配(上)之bean的配置项及作用域

    课程链接: 本节主要讲了四大块 1 bean的作用域 2 bean作用域代码演练 3 单例 多例应用场景 4 bean的配置项(不重要) 1 bean的作用域 1.1 singleton :单例 1. ...

  3. intellijidea课程 intellijidea神器使用技巧 6-2 数据库关联

    待温习完Spring之后再来看 database关联和表名字段等智能提示

  4. WinRAR(WinZip)压缩与解压实现(C#版Window平台)

    本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用(注:WinRAR压缩解压WinZip同样适用). 先来看WinRAR(WinZip)自身的支持调用命令: 压缩命 ...

  5. Vue之组件间传值

    标签: Vue Vue之父子组件传值 父向子传递通过props 子向父传递通过$emit 演示地址 代码示例如下: <!DOCTYPE html> <html lang=" ...

  6. ArrayList、Vector、HashMap、HashSet

    1. list  和 set 的有序无序是否可重复 List是有序可重复的: Set是无序不可重复的: 2.ArrayList.Vector.HashMap.HashSet的默认初始容量.加载因子.扩 ...

  7. div的浮动(float)

    什么是浮动 浮动,故名思议,就是移动位置. 之所以不叫移动,而叫浮动,那是因为给元素设置浮动后,元素会浮到文档上面来,术语叫脱离文档流. 例子 下面我们看例子 <html> <hea ...

  8. h5:WebSocket

    实时 Web 应用的窘境 Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特 ...

  9. jQ中css()和addClass的区别之优先级

    笔者在实现点击表格中某行添加高亮的效果时,发现一个css()和addClassd()的冲突,具体代码如下: <style> .se { background:#FF6500; color: ...

  10. sublime介绍常用插件和快捷键

    简介 Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来的,它最初被设计为一个具有丰富扩展功能的Vim. 是一个跨平台的编辑器,同时支持Windows.Linux.M ...