这里是在mysql主从复制实现的基础上利用mycat做读写分离
可以先看看 mysql主从复制
- Mycat安装和配置
#yum安装java环境(mycat要求java环境在1.7以上)
yum install java-1.8.0-openjdk.x86_64
切换到 /usr/local文件夹并下载mycat
cd /usr/local
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
解压mycat
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
配置环境变量 在后面加:并把mycat文件夹的路径写上
vim /etc/profile

使环境变量文件立即生效
source /etc/profile
切换到mycat的bin目录,
cd /usr/local/mycat/bin/
启动Mycat
./mycat start
./mycat stop #停止mycat
./mycat restart #重启mycat
- Mycat配置读写分离
mycat的配置文件主要在/usr/local/mycat/conf文件夹里
server.xml用来配置虚拟数据库的信息;
schema.xml用来配置真实读库写库的信息;
server.xml
#我的这两个标签都是注释的,要打开
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
<user name="root" defaultAccount="true"> <!-- 这里是给虚拟库设定一个账号叫root,并且作为默认账号 -->
<property name="password">123456</property> <!-- 账号root的密码 -->
<property name="schemas">TESTDB</property> <!-- 账号root对应的虚拟库,这个库保持默认比较好 -->
</user>
<user name="user"> <!-- 这里是给虚拟库设定一个账号叫user-->
<property name="password">user</property> <!-- 账号user的密码 -->
<property name="schemas">TESTDB</property> <!-- 账号user对应的虚拟库,这个库保持默认比较好 -->
<property name="readOnly">true</property> <!-- 说明这个账号是只读账号 -->
</user>
schema.xml (当只配置读写分离的时候把该文件中间的<table></table>标签都屏蔽掉)
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--TESTDB表示mycat的逻辑数据库名称当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库)-->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<!--指定master的真实数据库aaa-->
<dataNode name="dn1" dataHost="localhost1" database="aaa" />
<!--指定mastet的ip -->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!--表示mysql的心跳状态-->
<heartbeat>select user()</heartbeat>
<!-- master负责写(下面写主服务器IP端口,数据库用户名密码) -->
<writeHost host="hostM1" url="49.233.122.124:3306" user="root"
password="root">
<!--slave负责读(下面写从服务器IP端口,数据库用户名密码) -->
<readHost host="hostS2" url="106.75.24.119:3306" user="root" password="root" />
</writeHost>
</dataHost>
</mycat:schema>
修改文件后重启mycat
- 查看端口
# netstat -tnlp
TCP *:9066 (LISTEN) #虚拟schema管理端口
TCP *:8066 (LISTEN) #虚拟schema登陆端口

4.连接Mycat
mysql -h127.0.0.1 -uroot -p123456 -P8066
mysql -h127.0.0.1 -uroot -p123456 -P9066
连接这部分具体可看这篇文章的 MyCAT读写分离测试
5.用Navicat 连接Mycat的时候记得防火墙开启8066端口并重启防火墙
firewall-cmd --zone=public --add-port=8066/tcp --permanent #开启端口
firewall-cmd --reload 重启防火墙
systemctl status firewalld 查看防火墙状态
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
用Navicat 连接Mycat有问题,打开数据库报1146 table xxx doesn,t exist 还未解决。
本文详细介绍了如何使用Mycat实现MySQL的读写分离,包括安装Java环境、Mycat的下载与配置、环境变量设置、启动与重启命令、配置文件详解以及防火墙设置等关键步骤。
653

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



