mycat 读写分离,balance的理解

本文详细介绍了mycat中balance参数对读写分离的影响,包括当balance为0、1、2、3时,读操作分别如何分布到writeHost、readHost以及备用writeHost上,通过实例展示了不同设置下的mycat日志输出。

一、环境配置

1.1 数据库配置

项目   Mycat Mycat-master Mycat-master-standby Mycat-slave
ip 10.2.14.196 47.92.159.234 59.40.181.247 118.31.21.138
port 8066/9066 3306 3306 3306

 

 

 

2.2 创建表

CREATE table travelrecord (
 id int(11) not null AUTO_INCREMENT,
 org_code varchar(20) not NULL,
 test_name varchar(20) DEFAULT null,
 PRIMARY  KEY(id)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8;

2.3 schema 配置

  1.当balance=0 时,不开启读写分离,所有读操作都发生在当前的writeHost上

  

<schema 
### 配置 MyCat 实现数据库读写分离的教程 要配置 MyCat 实现数据库读写分离,需要从以下几个方面入手: #### 1. **准备环境** 确保你已经安装了以下组件: - MySQL 主库和从库(主从同步已配置) - MyCat 中间件 - Java 环境支持(MyCat 是基于 Java 开发的) MySQL 主库用于处理写操作,而多个从库则用于处理读操作。主从同步机制必须保证数据一致性[^1]。 #### 2. **配置 MyCat 的 `server.xml` 文件** 该文件定义了 MyCat 的全局参数,包括用户信息、权限等。 编辑 `/usr/local/mycat/conf/server.xml` 文件,配置对外连接的用户信息: ```xml <user name="test"> <property name="password">test</property> <property name="schemas">your_schema</property> </user> ``` 其中,`your_schema` 是你在 MySQL 中创建的数据库名称。此配置允许用户 `test` 使用密码 `test` 连接到指定的数据库[^3]。 #### 3. **配置 `schema.xml` 文件** 这是 MyCat 最核心的配置文件,它定义了逻辑表、数据节点(dataNode)、以及后端的数据库实例(dataHost)。 编辑 `/usr/local/mycat/conf/schema.xml` 文件,示例如下: ```xml <schema name="your_schema" checkSQLschema="false" sqlMaxLimit="100"> <table name="your_table" dataNode="dn1" rule="auto-sharding-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="your_db" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="localhost:3306" user="root" password="root"> <readHost host="hostS1" url="slave_host:3306" user="root" password="root" /> </writeHost> </dataHost> ``` - `writeHost` 表示写库,即主库。 - `readHost` 表示读库,即从库。 - `balance` 参数控制负载均衡策略,`balance="1"` 表示所有可读的从库都参与负载均衡。 - `switchType` 控制主从切换方式,`switchType="1"` 表示自动切换。 #### 4. **启动 MyCat 服务** 使用以下命令启动 MyCat: ```bash /usr/local/mycat/bin/mycat start ``` 查看是否成功监听到 8066 端口(默认端口): ```bash netstat -lntup | grep 8066 ``` 如果发现异常,请检查日志文件: ```bash vim /usr/local/mycat/logs/wrapper.log ``` #### 5. **测试读写分离功能** 使用客户端工具(如 Navicat、DBeaver 或直接使用 MySQL 客户端)连接 MyCat 的 8066 端口,并执行 SQL 查询与更新操作。 验证读请求是否被分发到从库,写请求是否定向到主库。可以通过在 MySQL 的慢查询日志或通用日志中观察实际执行语句来确认[^2]。 #### 6. **注意事项** - 数据实时性要求高的业务场景需谨慎使用读写分离,因为主从同步存在延迟可能导致数据不一致。 - 可以利用不同存储引擎的优势,例如主库使用 InnoDB 支持事务,从库使用 MyISAM 提升查询速度。 - 读写分离能有效缓解数据库压力,提升响应速度,但需合理设计架构并做好监控和容错处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值