Mycat搭建读写分离

  • 启动Mycat
    • 进入 /mycat/conf/datasources目录下,修改prototypeDs.datasource.json文件

  • 去mycat/bin目录用启动mycat  ./mycat start  (关闭mycat   ./mycat stop)
  • 连接mycat  默认端口8066 用户名root 密码123456

注意:这里ip设为null表示任何ip都可以访问

            transcationType: xa表示跨库的事务 proxy表示本地事务(效率高)           

  • Mycat配置

  • mysql.schema.json
    • customTables 用自定义分片算法的表
    • globalTables   全局表,广播表
    • normalTables 正常主从复制/读写分离的表
    • shardingTables  分片的表

 

  • mycat搭建读写分离
    • 读写分离架构

  • 创建数据源(可以通过mycat语法设定/也可以通过该配置文件设定)这里我们采用mycat推荐的语法
    • 创建主节点数据源dw0

  /*+ mycat:createDataSource{

      "dbType":"mysql",

      "idleTimeout":60000,

      "initSqls":[],

      "initSqlsGetConnection":true,

      "instanceType":"READ_WRITE",

      "maxCon":1000,

      "maxConnectTimeout":3000,

      "maxRetryCount":5,

      "minCon":1,

      "name":"dw0",

      "password":"root",

      "type":"JDBC",

      "url":"jdbc:mysql://10.20.2.29:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",

      "user":"root",

      "weight":0

} */;

  • 创建从节点数据源dr0

  /*+ mycat:createDataSource{

       "dbType":"mysql",

       "idleTimeout":60000,

       "initSqls":[],

       "initSqlsGetConnection":true,

       "instanceType":"READ",

       "maxCon":1000,

       "maxConnectTimeout":3000,

       "maxRetryCount":5,

       "minCon":1,

       "name":"dr0",

       "password":"root",

       "type":"JDBC",

       "url":"jdbc:mysql://10.20.2.29:3308?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",

       "user":"root",

       "weight":0

 } */;

  • 去检查一下配置文件是否创建成功

  • 也可以通过mycat语法去查询 /*+ mycat:showDataSources*/;

  • 创建集群(去指定哪些数据源)

/*! mycat:createCluster{

    "clusterType":"MASTER_SLAVE",

    "heartbeat":{

        "heartbeatTimeout":1000,

        "maxRetry":3,

        "minSwitchTimeInterval":300,

        "slaveThreshold":0

    },

    "masters":[

        "dw0" //主节点

    ],

    "maxCon":2000,

    "name":"c0",

    "readBalanceType":"BALANCE_ALL",

    "replicas":[

        "dr0" //从节点

    ],

    "switchType":"SWITCH"

} */;

  • 这里一样可以去配置文件上查看有没有生成c0的配置

  • 也可以通过mycat语法查询

  • 创建逻辑表(指向集群)
    • 创建Schema

/*+ mycat:createSchema{

       "customTables":{},

       "globalTables":{},

       "normalTables":{},

       "schemaName":"masterToSlave",

       "shardingTables":{},

       "targetName":"c0",

 } */;

  • 创建逻辑库 create database masterToSlave;
  • 创建逻辑表 CREATE TABLE masterToSlave.`test` (

`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT ' ', `remark` varchar(255) DEFAULT NULL COMMENT ' ', PRIMARY KEY (`id`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COMMENT='test';

 

  • 测试主从
    • INSERT INTO masterToSlave.`test` VALUES (2,'3333');    插入数据查看主从节点是否都有数据
  • 测试读写分离
    • 由于集群中配置的"readBalanceType":"BALANCE_ALL",因此主从节点上它都会去读
    • 测试的时候,可以把从库的一笔数据update一下,使它和主库不一致,方便测试Mycat当前读取是从主库还是从库上读取的
    • 如果只想从主节点上读取数据,就把集群中的"readBalanceType":"BALANCE_NONE"
      • 当有事务强一致性要求时,需要从主节点读取数据,我们可以在程序中@Transactional动态的设定这个值,它是立马生效的,无需重启。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值