一、资源准备
工具:
java 支持 :jdk1.7以上
一台服务器配置 mycat-1.6.6.1
两台服务器配置 mysql-7.9.24数据库,分别为 库1 和 库2
将两个mysql的数据库配置为主从服务器(库1 为主,库2为从)或 设置为主主服务器(互为主从)
参考《MySql 配置主从服务器、配置主主服务器》https://blog.csdn.net/rdisme/article/details/78910841,
《MySQL主从介绍,配置主服务器,配置从服务器,实现主从同步》https://blog.csdn.net/weixin_39663255/article/details/80851257
二、简单介绍
使用mycat中间件可以通过编写rule.xml实现数据库分表查询,分表存储等功能,通过schema.xml配置文件配置主1 和主2 数据库,当主数据宕机,可以实现自动切换到主2 数据库,不影响业务使用。主1 一般执行写操作,主2 执行读操作,主1 宕机,主2 切换为可读写操作(可以通过schema.xml进行配置)。
三、安装配置mycat(本文是在windows系统安装)
- 管理员权限运行cmd,进入mycat安装目录的bin目录下
-
C:\Windows\system32>d: D:\>cd D:\Tools\mysql\mycat\bin #使用mycat.bat install 进行初步安装 D:\Tools\mysql\mycat\bin>mycat.bat install #安装完成使用mycat.bat start启动mycat D:\Tools\mysql\mycat\bin>mycat.bat start wrapper | Starting the Mycat-server service... wrapper | Mycat-server started. 启动报错的话 查看安装目录下的logs/wrapper.log文件错误信息 #使用mycat.bat stop停止mycat D:\Tools\mysql\mycat\bin>mycat.bat stop wrapper | Stopping the Mycat-server service... wrapper | Mycat-server stopped. -
配置MYCAT_HOME\conf\server.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <property name="defaultSqlParser">druidparser</property> </system> <user name="test"> <property name="password">test</property> <property name="schemas">mycattest</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">mycattest</property> <property name="readOnly">true</property> </user> </mycat:server>test和user分别设置密码,用于连接mycat,test用于读写,user用于只读,mycattest是逻辑库
- 配置MYCAT_HOME\conf\schema.xml文件
-
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mycattest" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> <!-- <table name="test" dataNode="dn1" primaryKey="id"/> --> </schema> <!--将逻辑数据库和实际数据库进行关联--> <dataNode name="dn1" dataHost="master1" database="mycattest" /> <!-- <dataNode name="dn2" dataHost="master2" database="fenpian" /> --> <!--mysql-1--> <dataHost name="master1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>show slave status</heartbeat> <!--主,用于写--> <writeHost host="host1" url="192.168.228.128:3306" user="will" password="123456" /> <!--主2,用于读,host1 down了,自动切换为主,读写都可以--> <writeHost host="host3" url="192.168.228.130:3306" user="will" password="123456" /> </dataHost> <!--mysql-2--> <!-- <dataHost name="master2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>show slave status</heartbeat> 主1,用于写 <writeHost host="host2" url="192.168.137.102:3306" user="root" password="123" /> 主2,用于读,host2 down了,自动切换为主,读写都可以 <readHost host="host4" url="192.168.137.104:3306" user="root" password="123" /> </dataHost> --> </mycat:schema>
其中
schema name名称需要与server.xml设定的库名mycattest一致,设置数据节点dn1
dataHost即数据节点名称,database为真实数据库名称,即discuz的后台数据库ultrax
balance :
- 0表示不开启读写分离,都在master上执行读写操作
- 1表示都参与select
- 2表示所有读请求随机在readhost和writehost分担
- 3表示所有读请求对应到readhost里去
writeType :
- 0,所有写操作发送到配置的第一个writeHost
- 1,所有写操作都随机的发送到配置的writeHost
- 2,不执行写操作。
switchType :
- -1,不自动切换
- 1,默认值,自动切换
- 2,基于MySQL 主从同步的状态决定是否切换
- 3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’
writeHost和readHost分别配置对应后台的mysql主从真实用户密码
5 . 配置完成之后,重启mycat,错误日志在安装目录下的logs/wrapper.log;
运行日志在安装目录下的logs/mycat.log
6 . 测试mycat
使用mysql -utest -ptest -h127.0.0.1 -P8066进入mycat的数据库操作页面
- 插入数据,测试数据能否成功进入配置的数据库中
- 关闭主1 数据库,测试数据库操作是否能够正常进行,数据能否正常读写,查看主2 数据库的变化
7 . 可以进入mycat的管理平台进行mycat的状态查看管理(端口号默认为:9066)
使用mysql -utest -ptest -h127.0.0.1 -P9066进入mycat的管理页面
具体的管理操作测试参考《MyCAT管理监控命令》https://blog.csdn.net/meitingbee/article/details/46530171
linux版本安装配置mycat参考《mysql+mycat读写分离》https://blog.csdn.net/hellowidow_2020/article/details/78714241
本文详细介绍如何在Windows系统下使用Mycat中间件配置MySQL数据库的读写分离,包括资源准备、Mycat安装配置、schema.xml及server.xml配置,以及如何测试配置的有效性和查看状态。

2043

被折叠的 条评论
为什么被折叠?



