mycat 1.6 读写分离

环境说明:

三台都安装MySQL 5.7.34版本数据库,其中

192.168.3.63 CentOS7-63   安装mycat服务,管理CentOS7-64和CentOS7-65数据库读写分离

192.168.3.64 CentOS7-64    配置为Master 作为主从架构的主数据库

192.168.3.65 CentOS7-65    配置为Slave 作为主从架构的从数据库

mycat 下载地址:https://github.com/MyCATApache/Mycat-Server

安装包下载: https://github.com/MyCATApache/Mycat-Server/releases

JDK1.8 下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

0、主从已配置完成,才可进行下面操作,主从同步的数据库为HA

1、安装JDK1.8和mycat

mkdir -p /usr/java  

tar zxf jdk-8u291-linux-x64.tar.gz -C /usr/java/

tar -zxvf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz -C /usr/local/

ll /usr/java/

cd /usr/java/jdk1.8.0_291

cd /usr/local/mycat

vim /etc/porfile

#添加JDK环境变量

JAVA_HOME=/usr/java/jdk1.8.0_291  

PATH=$JAVA_HOME/bin:$PATH 

CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar  

export PATH JAVA_HOME CLASSPATH

#添加MyCat环境变量

MYCAT_HOME=/usr/local/mycat 

PATH=$MYCAT_HOME/bin:$PATH

保存退出

#刷新系统环境变量

source /etc/porfile

#验证jdk环境

java -version

2、编辑hosts文件,确认ip与主机名的映射关系

Linux系统中组建的MyCAT集群,需要在MyCAT Server所在的服务器上配置对其他ip和主机名的映射

vim /etc/hosts

192.168.3.63 CentOS7-63

192.168.3.64 CentOS7-64

192.168.3.65 CentOS7-65

3、修改配置

3.1、修改server.xml文件,配置mycat服务管理用的登录账号和密码以及逻辑库定义

cd /usr/local/mycat/conf

编辑vim server.xml,跳到文末:

<!-- 设置连接mycat时的用户名和密码, 逻辑库
逻辑库是指一个虚拟的数据库,通过这个虚拟的数据库去管理多个真实的数据库
我这里创建了一个用户名为mycat,密码为761479629@Lt的账号,该用户可以连接到mycatdb这个逻辑数据库
我这里创建了一个用户名为user,密码为761479629Lt的只读账号,该用户可以连接到mycatdb这个逻辑数据库,但是不能修改,只能查询
-->
<user name="mycat">
<property name="password">761479629@Lt</property>
<property name="schemas">mycatdb</property>
<user name="user">
<property name="password">761479629Lt</property>
<property name="schemas">mycatdb</property>
<property name="readOnly">true</property>
</user>
</mycat:server>
3.2、配置引用<property name="schemas">的配置文件schema.xml

配置说明:配置数据库为HA,主从数据库需要创建一个账号为mycat,密码为761479629Lt的用户操作数据库;(需要修改的以红色标出)

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

</schema>

<dataNode name="dn1" dataHost="localhost1" database="HA" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"

  writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">

<heartbeat>select user()</heartbeat>

<!-- can have multi write hosts -->

<writeHost host="CentOS7-64" url="192.168.3.64:3306" user="mycat"

   password="761479629@Lt">

<!-- can have multi read hosts -->

<readHost host="CentOS7-65" url="192.168.3.65:3306" user="mycat" password="761479629@Lt" />

</writeHost>

</dataHost>

</mycat:schema>

schema name="mycatdb"中的mycatdb与server.xml配置文件中提到的<propertyname="schemas">mycatdb</property>必须对应

database="HA"中的HA数据库为MySQL的真实业务中的数据库

以下为两个重要参数讲解:

balance="0" 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
balance="1" 全部的readHost与stand by writeHost参与select语句的负载均衡,简单来说就是不分你我
balance="2",所有读操作都随机分发在writeHost、readhost上。
balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
switchType指的是切换的模式,目前的取值也有4种:
switchType='-1' 表示不自动切换
switchType='1' 默认值,表示自动切换
switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'

4、主从数据库上都要创建帐号

mysql>grant all on *.* to mycat@'192.168.3.63' IDENTIFIED BY '761479629Lt';

mysql>flush privileges;

提示弱密码处理方法:

set global validate_password_policy=0; 

set global validate_password_length=4;

*可选*关闭安全策略

5.7以上版本 关闭密码安全策略插件:在my.cnf添加 validate-password=off 重启mysql

5、启动mycat

 mycat start

 查看是否启动:

 mycat status

 [root@CentOS7-63 conf]# mycat status

Mycat-server is running (128300).

6、设置开机自启

方法一:

软连接ln -s /安装目录/bin/mycat /etc/init.d/mycat

ln -s /usr/local/mycat/bin/mycat /etc/init.d/mycat

编辑日志配置文件:vim /usr/local/mycat/conf/wrapper.conf

wrapper.java.command=/usr/java/jdk1.8.0_291/bin/java

添加启动项:

chkconfig --add mycat 

设置开机自启:

chkconfig mycat  on 

方法二:

vim /etc/rc.d/rc.local

#java路径根据自己实际情况填写

export JAVA_HOME=/usr/java/jdk1.8.0_291 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

/usr/local/mycat/bin/mycat start

7、其他设置

 查看报错日志

 tail -f /usr/local/mycat/wrapper.log

 修改日志报错级别:使报错日志更详尽

 在conf里有一个log4j.xml,在文件最末尾

 修改<level value="info" />

 改为<level value="debug" />

 保存重启mycat:mycat restart

 查看端口是否监听:

 netstat -anput

  tcp6       0      0 :::8066                 :::*                    LISTEN      128302/java 

登录本机mycat(记得加端口号8066)

mysql -uroot -p761479629@Lt -h 192.168.3.63 -P8066

其他操作跟MySQL操作一样。

#注意:默认使用负载均衡情况下,当Master数据库宕机,数据库仍可以读取数据,但是不能写入数据!


附件:提供完整的server.xml和schema.xml配置文件如下:mycat 1.6.7z

版权声明:
作者:WaterBear
链接:https://l-t.top/1807.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>