mycat实现读写分离

mycat是一个开源的分布式数据库系统,用于替代Oracle并支持多种主流数据库。本文介绍了mycat的架构、安装与配置步骤,以及如何进行连接测试,帮助实现数据库的读写分离。

mycat是什么?为什么用mycat?

可以理解成一个开源的分布式数据库系统,代替昂贵的Oracle,为mysql实现企业级的数据库。支持mysql、SQLserver、Oracle等主流数据库,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。

mycat架构

安装和使用

下载(目前最新发行版是1.6.5):http://dl.mycat.io/

安装:解压即可

配置:Mycat是基于Java开发的,确保安装好了Java环境,可命令行输入:java -version 进行测试。Linux下还需配置Mycat的解压目录:vim /etc/profile,配置完成后使用:source /etc/profile:

export JAVA_HOME=xxx
export MYCAT_HOME=xxx

运行(Linux):

  • ./mycat start 启动
  • ./mycat stop 停止
  • ./mycat console 前台运行
  • ./mycat install 添加到系统自动启动(暂未实现)
  • ./mycat remove 取消随系统自动启动(暂未实现)
  • ./mycat restart 重启服务
  • ./mycat pause 暂停
  • ./mycat status 查看启动状态

运行(Windows):双击bin/tartup_nowrap.bat,如果出现闪退,可在cmd命令行运行,并查看出错原因

内存配置:启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,可根据本机配置情况修改为512M或其它值

# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G

连接测试:

  • 测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接
  • 命令行:mysql -uroot -proot -P8066 -h127.0.0.1(其中,user和password可在conf/server.xml配置查找,8066是默认的服务端口,也可以在conf/server.xml中配置修改)
  • 客户端:1.3和1.4版本目前部分工具无法连接,会提示database not selected,建议使用高版本的Mycat,1.5版本已经修复了部分客户端工具的连接

 

参考:

https://www.jianshu.com/p/b0f85164831e
 

要使用 MyCat 实现 MySQL 5.7 的读写分离,需要完成以下几个关键步骤: ### 配置 MySQL 主从复制 首先确保已经配置好 MySQL 的主从复制环境。在主库上执行以下命令以创建用于复制的用户并授权: ```sql CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES; ``` 然后在从库上设置主库的信息: ```sql CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position; START SLAVE; ``` ### 安装与配置 MyCat 下载并安装 MyCat,并根据实际需求修改其配置文件 `schema.xml` 和 `server.xml`。其中,`schema.xml` 文件中定义了数据源和逻辑表等信息,而 `server.xml` 则包含了系统参数和服务端口等设置。 #### 示例 schema.xml 片段 ```xml <schema name="testDB" checkSQLschema="true" sqlMaxLimit="100"> <table name="t_user" dataNode="dn1,dn2" rule="auto-sharding-long" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="testDB" /> <dataNode name="dn2" dataHost="localhost2" database="testDB" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" 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> ``` 在这个示例中,`balance="3"` 表示所有读请求都会随机发送到当前写入节点对应的读节点或非当前写入节点的其他读节点;`writeType="0"` 表示采用轮询方式进行写操作;`switchType="1"` 意味着当主节点故障时会自动切换到从节点。 ### 登录 MyCat 管理控制台 使用如下命令登录到 MyCat 的管理界面: ```bash mysql -uroot -proot -P9066 ``` 一旦登录成功,可以使用一些管理命令来查看状态或者重新加载配置: - 查看帮助命令:`SHOW @@HELP;` - 加载 MyCat 配置文件:`RELOAD @@CONFIG;` - 查看数据节点详情:`SHOW @@DATANODE;` - 查看物理数据库详情:`SHOW @@DATASOURCE;` - 查看后端数据库连接情况:`SHOW @@BACKEND;` 以上步骤完成后,MyCat 应该能够正确地将读取请求分发给从数据库,并且将写入请求发送给主数据库[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值