一、什么是读写分离
Mysql实现主从复制后,同时也需要实现读写分离,读写分离的处理就是主库处理事务性增、删、改操作,而从库仅用于数据查询读取。实现读写分离需要借助其他中间件,下面就介绍Mycat中间件实现读写分离
二、Mycat的安装
1、安装java环境包
yum install java-1.8.0-openjdk.x86_64
2、下载mycat
wget http://dl.mycat.org.cn/1.6.7.6/20211221142218/Mycat-server-1.6.7.6-release-20211221142218-linux.tar.gz
3、解压mycat包
tar -zxvf Mycat-server-1.6.7.6-release-20211221142218-linux.tar.gz
4、mycat安装授权处理
//剪切到/usr/local下 mv mycat /usr/local/ //创建专门运行mycat账号 adduser mycat // 切换到mycat文件夹路径下 cd /usr/local //将文件权限赋给mycat账号 chown mycat:mycat -R mycat
5、进入profile配置环境变量并添加
//进入文件 vim /etc/profile //配置环境变量 export JAVA_HOME=/usr export MYCAT_HOME=/usr/local/mycat //刷新环境变量文件 source /etc/profile //切换mycat用户 su mycat //切换目录 cd /usr/local/mycat/bin/
6、启动mycat
//启动mycat ./mycat start //查看状态 ./mycat status //查看启动输出 /usr/local/mycat/bin/mycat console(查看mycar输出日志)
7、切换到mycat根目录,查看目录文件
//切换到mycat根目录 cd /usr/local/mycat //查看目录文件 ll
三、Mycat读写分离配置
1、进到conf文件夹里面查看配置文件
cd conf
2、vim进入schema.xml进行编辑配置
vim /usr/local/mycat/conf/schema.xml
分片配置:Schema里面包含table配置,指定需要的数据库表名,配置dataNode后,randomDataNode="dn1"可要可不要
非分片配置:Schema不指定table,schema必须指定配置dataNode ,否则会提示找不到节点,配置dataNode后,randomDataNode="dn1"可要可不要
schema文件配置说明:
balance指的负载均衡类型,目前的取值有4种: 1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 2. balance=”1”,全部的readHost与stand bywriteHost参与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,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties. 2.writeType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。 ———————————————— switchType指的是切换的模式,目前的取值也有4种: 1. switchType=’-1’ 表示不自动切换 2. switchType=’1’ 默认值,表示自动切换 3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status 4. switchType=’3’基于MySQLgalary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。 ————————————————
3、配置server.xml
vim /usr/local/mycat/conf/server.xml
4、配置完成,重启mycat服务
//切换路径 cd /usr/local/mycat/bin //重启 ./mycat restart
5、进入mycat数据库
mysql -uroot -h ip -P3310 -p --default_auth=mysql_native_password
6、切换数据库
//进入逻辑库 use SLAVEDEMO; //查看逻辑库table show tables; //切换至mycat日志目录 cd /usr/local/mycat/logs/ //实时查看mycat日志 tail -f mycat.log
7、使用navicat链接mycat逻辑库
8、mycat数据库测试
到此为止,mycat配置mysql读写分离完成。
配置完成后,我们项目里面的链接是直接使用mycat链接,不论是建表还是操作都可以使用mycat链接,执行顺序为mycat逻辑数据库->同步到主库->同步到从库。也可以直接在主库建表,都会同步到mycat逻辑库里面。
参考文献:https://blog.csdn.net/qq_35992900/article/details/80673889