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