下载配置mycat
###最少需要三台机器 一台mycat 一台读端 一台写端
使用mycat mycat为数据库中间件
安装jdk 将jkd压缩包解压到/usr/local/目录下
设置环境变量 mv /usr/local/jdk1.8.0_221/ java
添加帕斯变量 vim /etc/profile
JAVA_HOME=/usr/local/java 指定目录
exprot PATH=$JAVA_HOME/bin:$PATH 声明帕斯变量
下载mycat 并解压到 /usr/local/ 下
mycat 的相关配置文件 /usr/local/mycat/conf/server.xml
定义用户以及系统相关的变量 如端口 或者 用户信息
mycat 的相关配置文件 /usr/local/mycat/conf/schema.xml
定义逻辑库 表 分片节点等内容
读和写端操作
读端写端 用户赋权
登入mysql 创建用户 create user 用户名@‘指定登录范围’ identified by‘密码’
给用户授权 grant 权限 on 库.表 to '用户名'@‘ip范围’
给用户修改可登录范围 登录 use mysql update user set host = ‘指定范围’ where user = ‘指定用户’
刷新权限列表 flush privileges
权限尽量给全部 读端写段必须指定同一个库 可登录范围必须能让mycat端登录
mycat端配置server.xml
vim /usr/local/mycat/conf/server.xml
文件末尾 只保留一个<user> 并更改其中内容
<user name="mycat用户名">
<property name="password">密码</property>
<property name="schemas">逻辑mycat库名</property>
</user>
mycat端配置schema.xml
vim /usr/local/mycat/conf/schema.xml
可以只保留以下内容
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="指定逻辑数据库" checkSQLschema="false" sqlMaxLimit="100" dataNode="指定节点 必须与下面的一致">
</schema>
<dataNode name="dn1" dataHost="localhost1" database="指定读写分离的数据库 一般需要数据库重名" />
<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="写端的ip地址:3306" user="写端的授权用户"
password="写端授权用户的密码">
<readHost host="hostS2" url="读端的IP地址:3306" user="读端的授权用户" password="读端授权用户的密码" />
</writeHost>
</dataHost></mycat:schema>
balance 属性
1 balance=“0” 不开启读写分离机制 所有操作都发送到当前可用的writehost上
2 balance=“1” 全部的 readHost 与 writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
3 balance=“2” 所有读操作都随机的在 writehost readhost上
4 balance="3", 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力, #注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
writeType 属性
负载均衡类型
1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切换到还生存的第二个writeHost,重新启动后已切换后的为准.
2. writeType="1",所有写操作都随机的发送到配置的 writeHost,#版本1.5 以后废弃不推荐。
心跳检测 健康检查配置文件 <heartbeat>语句</heartbeat>
启动mycat /usr/local/mycat/bin/mycat start 检查是否启动成功 netstat -lntp | grep java 端口为8066
在外面登录 mysql -h 指定mycat的ip -P 指定mycat的端口 -p指定密码 -u 指定用户