首先确保主从复制是正常的,具体步骤在MySQL----配置主从复制。MySQL----配置主从复制
环境
- master(CtenOS7):192.168.200.131 ----ifconfig查看->ens33->inet
- slave(win10):192.168.207.52 ----ipconfig查看->无线局域网适配器 WLAN:-> IPv4 地址
- 保证两个环境中MySQL版本一致,这里使用8.0
- 使用Mycat读写分离配置,所以要JDK环境,建议使用JDK1.7版本以上(
java -version
检查jdk环境)
- MySQL的root账户有远程访问权限
设置
-
登录到mysql
-
选择mysql数据库,使用查看权限
select Host,User from user;
注意:确保master 和 slave 都允许远程连接
-
% 表示可以任何地址来进行连接。如果不是百分号,使用
grant all privileges on *.* to 'root'@'%' identified by 'xxxxx' with grant option;
来修改。xxxxxxx为root的密码。---MySQL 5.x版本grant all on *.* to 'root'@'%';
---MySQL 8x版本 -
刷新权限
flush privileges;
-
重启mysql服务
service mysqld restart
安装与配置
安装Mycat
- 下载Mycat安装包,大家可以自己寻找,如果需要的话可以留言,我发给大家。
- 在linux下载lrzsz可以方便的上传安装包。进入root用户,
yum search lrzsz
,找到安装包。
- 安装
yum install lrzsz.x86_64
。 - 命令行输入
rz
,找到安装包所在位置,选择安装包,进行上传安装包。sz
下载到windows
- 解压
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
;
- 建立软链接
ln -s /mycat/mycat/bin/mycat /usr/bin/mycat
要找对自己的安装的位置,进行建立。
- 验证是否成功 输入
mycat
,会有提示,这时说明成功了。
配置
- 在mycat下的conf文件夹中找到 server.xml
vim server.xml
- 修改,保存退出 要改为自己的密码
- 使用MySQL 8.x的mysql命令连接Mycat时,在server.xml文件的system标签下必须配置如下选项。
powershell
<property name="useHandshakeV10">1</property>
<property name="defaultSqlParser">druidparser</property>
- 备份一份schema.xml,
cp schema.xml schema.xml.bk
- 进入
vim schema.xml
,配置读写分离,分库分表等内容
:%d
删除所有,进行配置
powershell
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 逻辑数据库 -->
<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100"
dataNode="dn1"></schema>
<!-- 存储节点 -->
<dataNode name="dn1" dataHost="node1" database="mytest" />
<!-- 数据库主机 -->
<dataHost name="node1" maxCon="1000" minCon="10" balance="3"
writeType="0" dbType="mysql" dbDriver="native"
switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="192.168.200.131" url="192.168.200.131:3306"
user="root"
password="955955">
<!-- can have multi read hosts -->
<readHost host="192.168.207.52" url="192.168.207.52:3306"
user="root" password="123456" />
</writeHost>
<!-- 写数据库宕机后的备份数据库 -->
<writeHost host="192.168.207.52" url="192.168.207.52:3306"
user="root"
password="955955" />
</dataHost>
</mycat:schema>
配置逻辑库USERDB,数据节点 dn1,物理数据库mytest。
注意:上述黄框里面的内容,要改成自己的ip以及密码,mytest是当前主库,从库主从复制已有的数据库。
相关参数
balance:
"0":不开启读写分离
"1":全部的readHost和stand by writeHost参与select语句的负载
"2":所有读操作随机在readHost和writeHost上分发
"3":所有读请求随机分发到writeHost对应的readHost上执行
writeType="0":所有写操作发送到配置的第一个writeHost,第一个挂掉切换到还生存的第二个
writeHost
switchType:
"-1":不自动切换
"1":自动切换,根据心跳select user()
"2":基于MySQL的主从同步状态决定是否进行切换 show slave status
vim /etc/my.cnf
添加如下内容
powershell
sql_mode=""
default_authentication_plugin = mysql_native_password
- 启动mycat,
mycat start
,查看端口信息netstat -tanp | grep 66
- 说明端口正常工作了。
- 如果有问题,可以查看日志 ,wrapper.log是启动相关的,mycat.log是运行相关的。
vim * wrapper.log
查看日志
- 连接成功,如果显示一些连接失败,也可以在日志里面找到原因。
端口
- 8066:数据端口
- 9066:管理端口