项目场景:Mycat读写分离失败(一主一从)

问题描述

主从数据库关联完之后,对mycat的配置也完成了,可能由于我没有一次性成功修改 /usr/local/mycat/conf/schema.xml文件,最终使用一下命令发现读写分离失败

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME   | TYPE  | HOST           | PORT | W/R  | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| dn1      | hostM1 | mysql | 192.168.200.20 | 3306 | W    |      0 |   10 | 1000 |      28 |         3 |          1 |
| dn1      | hostS1 | mysql | 192.168.200.30 | 3316 | R    |      0 |    0 | 1000 |       0 |         0 |          0 |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+

正常来说表格中的READ_LOAD应该在hostS1有数据,WRITE_LOAD应该在hostM1有数据

解决思路:

1.重启服务
2.查看日志(/usr/local/mycat/logs/wrapper.log)


尝试解决:

1.重启

MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| USERDB   |
+----------+
1 row in set (0.001 sec)MySQL [(none)]> use USERDB
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MySQL [USERDB]> select * from company ;
+----+----------+------+
| id | name     | addr |
+----+----------+------+
|  1 | facebook | usa  |
|  2 | cbook    | usa  |
+----+----------+------+
2 rows in set (0.005 sec)MySQL [USERDB]> insert into company  values(3,"cbook","usa");
Query OK, 1 row affected (0.003 sec)MySQL [USERDB]> Bye
[root@mycat ~]#
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME   | TYPE  | HOST           | PORT | W/R  | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| dn1      | hostM1 | mysql | 192.168.200.20 | 3306 | W    |      0 |   10 | 1000 |      27 |         2 |          1 |
| dn1      | hostS1 | mysql | 192.168.200.30 | 3316 | R    |      0 |    0 | 1000 |       0 |         0 |          0 |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+

失败

2.查看日志

INFO   | jvm 1    | 2022/03/22 17:58:45 | 2022-03-22 17:58:45,809 [INFO ][$_NIOConnector] no ilde connection in pool,create new connection for hostS1 of schema test  (io.mycat.backend.datasource.PhysicalDatasource:PhysicalDatasource.java:413)
INFO   | jvm 1    | 2022/03/22 17:58:45 | 2022-03-22 17:58:45,809 [INFO ][$_NIOConnector] close connection,reason:java.net.ConnectException: Connection refused ,MySQLConnection [id=0, lastTime=1647986325802, user=root, schema=test, old shema=test, borrowed=false, fromSlaveDB=true, threadId=0, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.200.30, port=3316, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]  (io.mycat.net.AbstractConnection:AbstractConnection.java:508)
INFO   | jvm 1    | 2022/03/22 17:58:45 | 2022-03-22 17:58:45,809 [INFO ][$_NIOConnector] can't get connection for sql :select user()  (io.mycat.sqlengine.SQLJob:SQLJob.java:114)

挑出日志的重点:

connection for hostS1
close connection,reason: .... port=3316,

有两个重点词—— hostS1port=3361,那就简单了,就是 /usr/local/mycat/conf/schema.xml有个地方没修改

查看一下 /usr/local/mycat/conf/schema.xml

[root@mycat ~]# vi /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema><dataNode name="dn1" dataHost="localhost1" database="test" /><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="192.168.200.20:3306" user="root"password="123456"><readHost host="hostS1" url="192.168.200.30:3316" user="root"password="123456" /></writeHost></dataHost>
</mycat:schema>

果然看到第13行端口号没改过来,应该改成3306的,这里改完再试一下

[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat stop
Stopping Mycat-server...
^[[AStopped Mycat-server.
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p123456;
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| USERDB   |
+----------+
1 row in set (0.002 sec)MySQL [(none)]> use USERDB
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MySQL [USERDB]> select * from company ;
+----+----------+------+
| id | name     | addr |
+----+----------+------+
|  1 | facebook | usa  |
|  2 | cbook    | usa  |
|  3 | cbook    | usa  |
+----+----------+------+
3 rows in set (0.026 sec)MySQL [USERDB]> insert into company  values(4,"cbook","usa");
Query OK, 1 row affected (0.003 sec)MySQL [USERDB]> select * from company ;
+----+----------+------+
| id | name     | addr |
+----+----------+------+
|  1 | facebook | usa  |
|  2 | cbook    | usa  |
|  3 | cbook    | usa  |
|  4 | cbook    | usa  |
+----+----------+------+
4 rows in set (0.001 sec)MySQL [USERDB]> Bye
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME   | TYPE  | HOST           | PORT | W/R  | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+
| dn1      | hostM1 | mysql | 192.168.200.20 | 3306 | W    |      0 |   10 | 1000 |      14 |         0 |          1 |
| dn1      | hostS1 | mysql | 192.168.200.30 | 3306 | R    |      0 |    4 | 1000 |       9 |         3 |          0 |
+----------+--------+-------+----------------+------+------+--------+------+------+---------+-----------+------------+

成功解决!!!

总结

查日志是解决问题的好办法(确信)。

Mycat读写分离失败(一主一从)尝试解决相关推荐

  1. Mycat 读写分离、主从切换、分库分表的操作记录

    Mycat 读写分离.主从切换.分库分表的操作记录 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等 ...

  2. Mycat读写分离、主从切换、分库分表的操作记录 https://www.cnblogs.com/kevingrace/p/9365840.html

    [此篇文章写得不错] 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问 ...

  3. MyCat读写分离-笔记(四)

    概述 Mycat能够实现数据库读写分离,不能实现主从同步,数据库的备份还是基于数据库层面的.Mycat只是数据库的中间件: Mycat读写分离配置 在MySQL中间件出现之前,对于MySQL主从集群, ...

  4. 应用 | 同学,该学MyCat实际应用案例与MyCat读写分离了

    Hi!我是小小,一个双鱼座的佛系程序猿,今日的blog将会写关于MyCat最后一点学习内容,读写分离,与MyCat实际应用案例和一个小小的例子. MyCat 读写分离 MyCat的读写分离是建立在My ...

  5. Mycat读写分离笔记Windows

    Mycat读写分离笔记Windows 自己搭了一个运用Mycat中间件搭建了一个读写分离的demo,昨晚还在奋战当中,因为连接mycat的时候老是报错:No Mycat DataBases selec ...

  6. Mycat 读写分离实战

    Mycat读写分离实战 一.主从复制搭建 1.实验环境 搭建一主一从的部署架构,master(主库)运行在阿里云服务器 47.108.136.201,slave(从库)运行在 IP 地址为 12.16 ...

  7. Mycat读写分离的简单实现

    文章目录 1.Mycat读写分离的配置 1.1.Mycat是什么 1.2.Mycat能干什么 1.2.1.数据库的读写分离 1.2.1.1.数据库读写分离图解 1.2.2.数据库分库分表 1.2.2. ...

  8. MyCat 读写分离

    MyCat 读写分离 MyCat其他核心介绍参考: 主从复制的搭建参考: 1 介绍 MyCat的读写分离是建立在MySQL主从复制基础之上实现的,所以必须先搭建MySQL的主从复制. 数据库读写分离对 ...

  9. mycat读写分离配置

    为什么使用MyCat         如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个 ...

最新文章

  1. 给自己的程序添加BugReport
  2. 可视化Spring开发插件 Spring IDE
  3. python中的JSON到底怎么用?
  4. centos 程序 mysql数据库文件位置,CentOS 更改MySQL数据库目录位置
  5. MyBatis缓存通俗易懂
  6. IntelliJ IDEA配置与搭建web项目入门使用
  7. ASP.NET会话(Session)模式
  8. 19. Treat class design as type design
  9. mysql重复执行命令_mysql----------mysql的一些常用命令
  10. visio插入箭头_visio流程图中画箭头
  11. 计算机硬盘使用寿命,固态硬盘怎么测剩余寿命?SSD固态硬盘使用寿命检测方法...
  12. Java输入/输出(I/O)流
  13. 【锟斤拷】的故事:谈谈汉字编码和常用字符集
  14. 基于mina框架的GPS设备与服务器之间的交互
  15. 数字电路-逻辑式化简公式
  16. 火车采集器V2010免费版下载
  17. React 生成二维码
  18. 华为诺亚方舟实验室简述
  19. 新浪微博终于完成多数ui
  20. 数据管理和计算机网络,计算机网络数据管理

热门文章

  1. USACO 2.3.2 Cow Pedigrees 奶牛家谱
  2. FUTURES模型 | 5. Potential 潜力子模块
  3. 什么是云计算解决方案架构师
  4. 用canvas实现钟表功能
  5. mysql如何查看表结构图_MySQL 查看表结构简单命令
  6. 关于windows更新后显示未激活的问题
  7. 计算机网络有效子网怎么求,计算机网络·计算子网地址,子网掩码,广播地址,根据子网掩码求网络地址详解...
  8. [C++]BMI指数
  9. 遵义虚拟服务器,遵义市云服务器费用
  10. idea无法通过debug启动项目