一、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. td标签里内容不换行

    在一些页面开发中,除自己操作外,引起换行的情况一般有: Ex一.td标签里内容长度过长引起换行: Ex二.div标签(或其他标记)里内容有文本和图片引起换行: 解决方法: 针对例子一用<nobr ...

  2. 位运算(2)——Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  3. python面试题——网络编程和并发

    1.简述 OSI 七层协议. 物理层(电信号.比特流) 基于电器特性发送高低电压(电信号) RJ45.IEEE802.3 数据链路层(数据帧) 定义了电信号的分组方式,分组方式后来形成了统一的标准,即 ...

  4. 移动web基础

    接触retina屏 基础知识(移动Web的基础知识)排版布局(高效的移动Web布局)开发效率终端交互优化 pixel像素基础viewport视图viewport_meta标签viewport_codi ...

  5. HTML5 笔记之 HTML5 的常见用法介绍

    阅读目录 介绍 网页标题.文章标题.文章段落 介绍 字体大小.字体颜色.字体类型.字体位置.背景颜色 介绍 插入图片 介绍 网页内的超链接.网页间的超链接 介绍 有序列表.无序列表 介绍 表格制作 介 ...

  6. nginx启动时报错

    nginx启动时报错 原因:nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed /var/cache/ngin ...

  7. OMD开源监控软件

    参考 Best Monitoring Solution - OMD (Nagios + Check_MK) 官网 mathias-kettner.com OMD labs.consol.de Conf ...

  8. Ionic+AngularJS 开发的页面在微信公众号下显示不出来原因查究

    ionic 页面 微信浏览器遇到的坑 公司的微信公众号一部分页面是用AngularJS+Ioinc开发,发现在本地浏览器测试的时候都没问题,传到服务器在微信公众号下跑就出问题来,经查是: index- ...

  9. DFS+BFS(POJ3083)

    题目链接:http://poj.org/problem?id=3083 解题报告:这个题目,搜最短路,没有什么问题.优先走左边,走右边,有很多说法,思路大概都相同,都是记录当前朝向,根据数学公式(i+ ...

  10. Python 连接、操作数据库

    使用python3+pymysql 一.安装python3 a)         从网上下载安装吧 二.安装pymysql https://pypi.python.org/pypi/PyMySQL h ...