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

  • 相关阅读:
    猴子分香蕉
    打鱼晒网
    质数/素数
    三角形-->九九乘法表
    eclipse 导入gradle引入多模块项目,引入eclipse后变成了好几个工程
    linux 命令基础大全
    SQL Server 增加链接服务器
    Postgresql数据库部署之:Postgresql 存在session 会话不能删除数据库
    Postgresql数据库部署之:Postgresql本机启动和Postgresql注册成windows 服务
    Git常用命令使用大全
  • 原文地址:https://www.cnblogs.com/hhhshct/p/11355138.html
Copyright © 2011-2022 走看看