zoukankan      html  css  js  c++  java
  • 数据库中间件之mycat读写分离

      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就会帮我们实现读写分离

  • 相关阅读:
    平衡二叉树(AVL Tree)
    算法分析
    稳定匹配
    Python读取不同文件夹下的图片并且分类放到新创建的训练文件夹和标签文件夹
    java构造函数也可以用private开头
    基于slf4j的log4j实战
    javascript权威指南第6版学习笔记
    hadoop之wordCount程序理解
    java 基本类型和包装类的比较
    设计模式之工厂模式,单例模式,门面模式
  • 原文地址:https://www.cnblogs.com/hhhshct/p/11355138.html
Copyright © 2011-2022 走看看