mycat核心概念

  逻辑库 mycat中定义、管理的数据库

  逻辑表 逻辑库中包含的需分库分表存储的表

  datanode 数据节点(分片节点),逻辑表分片的存放节点

  datahost 数据主机(节点主机),数据节点所在的主机

  writehost 写主机 真实的数据库服务主机

  readhost 读主机

  mysql主从同步配置

  1、 在主数据库上创建同步账号

  grant replication slave on *.* to 'repl'@'192.168.5.125' identified by '123456';

  2、 配置主节点,开启binlog,vi /etc/my.cnf,添加如下配置

log-bin=mysql-bin # 日志文件名前缀
server-id=1 # 在集群中的唯一id,值可以为1~2^32-1的整数

  3、重启mysql,进入,mysql客户端,SHOW MASTER STATUS 查看主库状态

  4、从节点,添加配置,vi /etc/my.cnf,添加

server-id=2

  5、进入从节点mysql客户端,执行 CHANGE MASTER TO 语句设置同步的主库

CHANGE MASTER TO MASTER_HOST='192.168.5.144',MASTER_USER='repl',MASTER_PASSWORD='123456';

  6、开启从库 START SLAVE; 查看从库状态 SHOW SLAVE STATUS;

  7、在主库执行下列命令,查看从库是否产生对应的数据库、表和数据

CREATE DATABASE orders CHARACTER SET 'utf8';

use orders;

CREATE TABLE t_order (
order_id BIGINT PRIMARY KEY,
order_time DATETIME,
customer_id BIGINT,
order_amount DECIMAL(8,2)
);

  mycat主从配置

  详细配置可参考: http://www.mycat.io/document/mycat-definitive-guide.pdf

  1、schema.xml 中配置逻辑库、数据节点,数据主机

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 注意:里面的元素一定要按 schema 、dataNode 、 dataHost的顺序配置 -->
<schema name="mydb1" checkSQLschema="false" sqlMaxLimit="100"
dataNode="mydn1">
</schema>
<dataNode name="mydn1" dataHost="dhost1" database="orders" />
<dataNode name="mydn2" dataHost="dhost2" database="orders" />
<!-- 读写分离第一种配置方式 -->
<dataHost name="dhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="myhostM1" url="192.168.100.218:3306" user="mike"
password="Mike666!">
<readHost host="myhostS1" url="192.168.100.219:3306"
user="mike" password="Mike666!" weight="1" />
</writeHost>
</dataHost>
<!-- 读写分离第二种配置方式 -->
<dataHost name="dhost2" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="myhostM2" url="192.168.100.218:3306" user="mike"
password="Mike666!"></writeHost>
<writeHost host="myhostS2" url="192.168.100.219:3306" user="mike"
password="Mike666!"></writeHost>
</dataHost>
</mycat:schema>

  2、server.xml 中用户数据库权限配置

<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">mydb1</property>
</user>

  3、两种配置读写分离方式的区别

  第一种mysql写主机挂掉后读不可用,第二种第一台机器mysql挂掉后第二台mysql读写正常,其实就是stand by模式(备用模式)

  4、使用navicat或者java api像连接单台mysql一样去配置,mycat就会帮我们实现读写分离

数据库中间件之mycat读写分离的更多相关文章

  1. Mycat数据库中间件对Mysql读写分离和分库分表配置

    Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个 ...

  2. MyCat读写分离-笔记(四)

    概述 Mycat能够实现数据库读写分离,不能实现主从同步,数据库的备份还是基于数据库层面的.Mycat只是数据库的中间件: Mycat读写分离配置 在MySQL中间件出现之前,对于MySQL主从集群, ...

  3. mycat数据库集群系列之mycat读写分离安装配置

    最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...

  4. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  5. Mycat 读写分离

    简介 Mycat 是 MySQL中间件,Mycat的原理中最重要的一个动词就是'拦截',它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析.路由分析.读写分离分析.缓存分 ...

  6. MySQL/MariaDB数据库的PROXY实现读写分离

    MySQL/MariaDB数据库的PROXY实现读写分离 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ProxySQL概述 1>.各家互联网公司读写分离的解决方案 m ...

  7. Mysql之Mycat读写分离及分库分表

    ## 什么是mycat ```basic 1.一个彻底开源的,面向企业应用开发的大数据库集群 2.支持事务.ACID.可以替代MySQL的加强版数据库 3.一个可以视为MySQL集群的企业级数据库,用 ...

  8. Mycat读写分离的简单实现

    目录 1.Mycat读写分离的配置 1.1.Mycat是什么 1.2.Mycat能干什么 1.2.1.数据库的读写分离 1.2.1.1.数据库读写分离图解 1.2.2.数据库分库分表 1.2.2.1. ...

  9. web 项目 连接mycat 读写分离失效问题,

    问题描述:mycat 读写分离已配好,在sql工具上查询操作是可以的,但是在项目中,读数据就走write 数据库, 解决      :环境spring +mvc +ibaites,在java中自己写j ...

随机推荐

  1. To avoid slowing down lookups on a near-full table, we resize the table when it's USABLE_FRACTION (currently two-thirds) full.

    https://github.com/python/cpython/blob/3.8/Objects/dictobject.c

  2. Centos7 卸载 Nginx 并重新安装 Nginx

    1)  卸载nginx [root@locahost /]# yum remove nginx 2) 查看nginx是否还存在 [root@localhost /]# which nginx 3)重新 ...

  3. Dart中排除空的情况:

    但是dart的string类型还有另一个方法isNotEmpty,此时这样写: if (str?.isNotEmpty()) { // str is not empty, do something } ...

  4. 译文:A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation

    A Robust and Modular Multi-Sensor Fusion ApproachApplied to MAV Navigation 众所周知,将来自多个传感器的信息融合用于机器人导航 ...

  5. linux追加所有文件到新的文件(cat)

    例子如下,存在test1.txt, test2.txt, test3.txt,现在准备把这三个文件的内容都追加到testall.txt 中 test1.txt 1 2 3 4 5 6 test2.tx ...

  6. IDEA 多模块工程相互依赖

    最近为了结构项目,抽离通用模块,同时使用一个工程管理所有模块,使用了多模块工程.不过在依赖其他模块的编译上出现了问题,总是报找不到被依赖的jar包. 最后的解决办法也很简单,对于被依赖的模块,要在ma ...

  7. Python - Django - ORM QuerySet 方法补充

    models.py: from django.db import models class Employee2(models.Model): name = models.CharField(max_l ...

  8. 用VS Code写C#

    目录 前言 下载SDK 安装C#支持 快速创建C#控制台 格式化代码 launch:launch.json must be configured. change 'program' to the pa ...

  9. sentinel搭建redis集群的注意事项

    一.protected-mode 默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和s ...

  10. 【Leetcode_easy】917. Reverse Only Letters

    problem 917. Reverse Only Letters solution: class Solution { public: string reverseOnlyLetters(strin ...