Mysql的读写分离(基于Mycat)

Mysql的读写分离

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缺点 并没有实现mycat的百分百可用
mycat的下载地址:http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
1.安装Mycat

 #查询有没有安装mycat
 find / -name mycat
 #因为mycat是基于java语言编写的,所以一定要配置jdk的环境
 #解压jdk
 tar -zxvf jdk-8u221-linux-x64.tar.gz
 #配置环境变量
 [root@localhost home]# ls
 ange  jdk1.8.0_221  jdk-8u221-linux-x64.tar.gz
 [root@localhost home]# mv jdk1.8.0_221/ jdk8
 [root@localhost home]# mv jdk8 /usr/
 [root@localhost home]# ls
 ange  jdk-8u221-linux-x64.tar.gz
 [root@localhost home]# cd /usr/
 [root@localhost usr]# ls
 bin  etc  games  include  jdk8  lib  lib64  libexec  local  sbin  share  src  tmp
 [root@localhost usr]# vi /etc/profile
 #加到最末尾
 JAVA_HOME=/usr/jdk8
 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
 PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
 export PATH CLASSPATH JAVA_HOME
 [root@localhost usr]# source /etc/profile
 [root@localhost usr]# java -version
 java version "1.8.0_221"
 Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
 Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
 [root@localhost usr]# 


 #安装mycat
 #报错
 [root@localhost usr]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz-bash: wget: 未找到命令
 #安装wget
 yum install wget
 #继续执行下载命令
 wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
 #加压下载好的压缩文件
 tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
 #mycat的目录结构
 -lib   jar包存放的目录
 -conf
  -schema.xml 主配置文件
  -server.xml 服务配置文件
  -rule.xml 分片配置文件
  -log4j2.xml 日志配置文件
 -logs
  -mycat.log
  -wrapper.log
 -bin
  -mycat.sh

1.配置Mycat

  • 先配置server.xml
  <!-- 有读写权限的用户(最高权限的用户) -->
  <user name="root">
      <property name="password">123456</property>
      <!-- 对应schema.xml的逻辑数据库名称 -->
      <property name="schemas">TESTDB</property>
  </user>
  
  <!-- 只有只读权限 -->
  <user name="user">
      <property name="password">123456</property>
      <property name="schemas">TESTDB</property>
      <property name="readOnly">true</property>
  </user>
  • schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
    	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    		<!-- 里面的tables是实现分库分表的 -->
    	</schema>
    	<dataNode name="dn1" dataHost="localhost1" database="youruike" />
    	<!--
    	1. balance="0",所有读操作都发送到当前可用的writeHost上。
    	2. balance="1",所有读操作都随机的发送到readHost。
    	3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
    	4. balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3没有
    
    	1. writeType="0", 所有写操作都发送到可用的writeHost上。
    	2. writeType="1",所有写操作都随机的发送到readHost。
    	3. writeType="2",所有写操作都随机的在writeHost、readhost分上发
    	-->
    	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
    			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    		<!-- 心跳检测,检测主机和从机是否正常 -->
    		<heartbeat>select user()</heartbeat>
    		<writeHost host="hostM1" url="127.0.0.1:3306" user="root"
    				   password="123456">
    			<readHost host="hostS2" url="192.168.126.148:3306" user="root" password="123456" />
    		</writeHost>
    	</dataHost>
    </mycat:schema>
    

    2.启动Mycat

    [root@localhost bin]# ./mycat start console
    Starting Mycat-server...
    [root@localhost bin]# ./mycat status console
    Mycat-server is running (11067).
    #查看端口情况
    [root@localhost bin]# netstat -ntlp
    -bash: netstat: 未找到命令
    #解决办法 安装查看工具
    [root@localhost bin]# yum -y install net-tools
    #再次查看
    [root@localhost bin]# netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      11069/java          
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1030/sshd           
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1188/master         
    tcp6       0      0 :::1984                 :::*                    LISTEN      11069/java          
    tcp6       0      0 :::8066                 :::*                    LISTEN      11069/java          
    tcp6       0      0 :::9066                 :::*                    LISTEN      11069/java          
    tcp6       0      0 :::3306                 :::*                    LISTEN      1742/mysqld         
    tcp6       0      0 :::39666                :::*                    LISTEN      11069/java          
    tcp6       0      0 :::22                   :::*                    LISTEN      1030/sshd           
    tcp6       0      0 :::41304                :::*                    LISTEN      11069/java          
    tcp6       0      0 ::1:25                  :::*                    LISTEN      1188/master
    #查看mycat的端口
    ps -ef | grep mycat
    

    2.登录mycat

 #登录mycat的管理端口 -h 端口 必须填写本机端口
 mysql -uroot -p123456 -h127.0.0.1 -P9066  
 #查看帮助手册
 show @@help;
 #查看读写分离情况
 show @@datasource;
 #查看心跳检测
 show @@heartbeat;
 	RS_CODE 状态:
         OK_STATUS = 1;正常状态
         ERROR_STATUS = -1; 连接出错
         TIMEOUT_STATUS = -2; 连接超时
         INIT_STATUS = 0; 初始化状态
如果是-1 使用window测试 2.查看防火墙 3.授权
 #连接数据端口(登录mycat的主机,mycat在192.168.126.161)
 mysql -uroot -p123456 -h127.0.0.1 -P8066
**3.测试读写分离情况**
 ```xml

#修改日志打印情况
cd …/conf/





#查看日志情况
tail -f wrapper.log
#可以复制一个会话
show databases;
use TESTDB;
show tables;

如果日志没打印 刷新服务
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020071221263254.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NDQxNTIw,size_16,color_FFFFFF,t_70)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值