说明:

1、操作系统:64位CentOS Linux release 7.2.1511 (Core)

2、jdk版本:1.8.0_121

3、mysql版本: 5.7.17

4、两台mysql服务器:192.168.1.70(mycat将安装在这台机器上)和192.168.1.71

本文假设以上或者类似环境已经配置成功。

准备压缩文件

1、下载网址:http://www.mycat.io/

选择1.6版本,然后点击进入下载页面,如下图:

选择第一个,适合linux系统的

2、创建/soft目录:

进入192.168.1.70机器

[root@localhost soft]# mkdir /soft

利用WinSCP将下载好的tar包放入/soft目录

解压缩

解压

[root@localhost ~]# cd /soft

[root@localhost soft]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

移动到/soft目录

[root@localhost soft]# mv mycat /usr/local/

配置环境变量

1、打开配置文件

[root@localhost bin]# vi /etc/profile

2、在文件末尾添加:

export MYCAT_HOME=/usr/local/mycat

export PATH=$PATH:$MYCAT_HOME/bin

保存并退出

3、使修改生效

[root@localhost bin]# source /etc/profile

4、测试是否生效

[root@localhost bin]# echo $MYCAT_HOME

配置主机名

[root@localhost bin]# vi /etc/hosts

拷贝以下代码到文件末尾:

192.168.1.70 server_1

192.168.1.71 server_2

保存并退出

忽略大小写

linux下部署安装mysql,表名大小写区分。

需要我们手动配置/etc/my.cnf,添加lower_case_table_names=1,使 linux 环境下 mysql 忽略表名大小写,否则使用 mycat 的时候会提示找不到。

因为之前配置了两台mysql服务器

192.168.1.70

192.168.1.71

所以两台都需要修改

[root@localhost soft]# vi /etc/my.cnf

将“lower_case_table_names=1”加入文件末尾,保存并退出

重启mysql服务

[root@localhost soft]# /etc/init.d/mysqld restart

配置schema.xml

[root@localhost conf]# vi schema.xml

将以下内容替换整个文件内容

  1. <?xml version="1.0"?>
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3. <mycat:schema xmlns:mycat="http://io.mycat/">
  4. <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
  5. <table name="blog" primaryKey="id" dataNode="dn1,dn2" rule="mod-long" />
  6. </schema>
  7.  
  8. <dataNode name="dn1" dataHost="server1" database="db1" />
  9. <dataNode name="dn2" dataHost="server2" database="db2" />
  10.  
  11. <dataHost name="server1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  12. <heartbeat>select user()</heartbeat>
  13. <writeHost host="server_1" url="192.168.1.70:3306" user="root" password="123456" />
  14. </dataHost>
  15. <dataHost name="server2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  16. <heartbeat>select user()</heartbeat>
  17. <writeHost host="server_2" url="192.168.1.71:3306" user="root" password="123456" />
  18. </dataHost>
  19. </mycat:schema>

保存并退出

配置rule.xml

因为我们就两个mysql节点,且分片规则使用的是:rule="mod-long",所以需要修改此文件内容,将mod-long默认的3个节点修改成2个,不然mycat无法启动。

既然启动失败,那么在后面的连接mycat的步骤会报以下错误:

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.70' (111)

我曾在这里卡了一段时间,最终通过查看mycat的wrapper.log日志文件才找到原因的。

[root@localhost conf]# vi rule.xml

如下图:

----------------------------------------------------------------------------------

下面这段是日志文件里的错误信息,可以不看,写出来的原因是方便自己以后理解

  1. STATUS | wrapper | 2017/08/19 20:13:36 | TERM trapped. Shutting down.
  2. STATUS | wrapper | 2017/08/19 20:13:37 | <-- Wrapper Stopped
  3. STATUS | wrapper | 2017/08/19 20:13:41 | --> Wrapper Started as Daemon
  4. STATUS | wrapper | 2017/08/19 20:13:41 | Launching a JVM...
  5. INFO | jvm 1 | 2017/08/19 20:13:41 | Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0
  6. INFO | jvm 1 | 2017/08/19 20:13:41 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  7. INFO | jvm 1 | 2017/08/19 20:13:41 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
  8. INFO | jvm 1 | 2017/08/19 20:13:41 |
  9. INFO | jvm 1 | 2017/08/19 20:13:42 |
  10. INFO | jvm 1 | 2017/08/19 20:13:42 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
  11. INFO | jvm 1 | 2017/08/19 20:13:42 | java.lang.ExceptionInInitializerError
  12. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatStartup.main(MycatStartup.java:53)
  13. INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  14. INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  15. INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  16. INFO | jvm 1 | 2017/08/19 20:13:42 | at java.lang.reflect.Method.invoke(Method.java:498)
  17. INFO | jvm 1 | 2017/08/19 20:13:42 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
  18. INFO | jvm 1 | 2017/08/19 20:13:42 | at java.lang.Thread.run(Thread.java:745)
  19. INFO | jvm 1 | 2017/08/19 20:13:42 | Caused by: io.mycat.config.util.ConfigException: Illegal table conf : table [ BLOG ] rule function [ mod-long ] partition size : 3 > table datanode size : 2, please make sure table datanode size = function partition size
  20. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.checkRuleSuitTable(XMLSchemaLoader.java:563)
  21. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadTables(XMLSchemaLoader.java:396)
  22. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadSchemas(XMLSchemaLoader.java:173)
  23. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:122)
  24. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:83)
  25. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:87)
  26. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:74)
  27. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.MycatConfig.<init>(MycatConfig.java:72)
  28. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatServer.<init>(MycatServer.java:144)
  29. INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatServer.<clinit>(MycatServer.java:96)
  30. INFO | jvm 1 | 2017/08/19 20:13:42 | ... 7 more
  31. STATUS | wrapper | 2017/08/19 20:13:44 | <-- Wrapper Stopped

创建数据库

192.168.1.70对应的mysql服务器创建数据库:db1

[root@localhost soft]# /usr/local/mysql/bin/mysql -uroot -p123456

mysql> create database db1;

----------------------------------------------------------------------------------

192.168.1.71对应的mysql服务器创建数据库:db2

[root@localhost soft]# /usr/local/mysql/bin/mysql -uroot -p123456

mysql> create database db2;

启动mycat

[root@localhost ~]# mycat start

连接mycat

[root@localhost mycat]# /usr/local/mysql/bin/mysql -u root -p -P 8066 -h 192.168.1.70

如上图,表示逻辑数据库连接成功

说明:这里连接的就是逻辑数据库了

测试

1、 建表

选择逻辑数据库

  1. mysql> use TESTDB;
  1. CREATE TABLE blog (
  2.   id int(11) NOT NULL,
  3.   title varchar(20) NOT NULL,
  4.   author varchar(30),
  5.   PRIMARY KEY (id)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

执行完上面的sql语句,会看到

192.168.1.70 db1下有了blog表

192.168.1.71 db2下也有了blog表

2、插入数据

  1. insert into blog(id,title) values(1,'test');
  2. insert into blog(id,title) values(2,'test');
  3. insert into blog(id,title) values(3,'test');
  4. insert into blog(id,title) values(4,'test');
  5. insert into blog(id,title) values(5,'test');
  6. insert into blog(id,title) values(6,'test');
  7. insert into blog(id,title) values(7,'test');
  8. insert into blog(id,title) values(8,'test');
  9. insert into blog(id,title) values(9,'test');
  10. insert into blog(id,title) values(10,'test');
  11. insert into blog(id,title) values(11,'test');
  12. insert into blog(id,title) values(12,'test');
  13. insert into blog(id,title) values(13,'test');
  14. insert into blog(id,title) values(14,'test');

3、查询

  1. Select * from blog;

分别在server_1和server_2上执行查询语句

server_1返回的结果是:

server_2返回的结果是:

如果查询TESTDB逻辑数据库的话,出现的结果是:

好,到此大功告成,作为入门篇非常简单。

远程连接mycat

开启端口8066

[root@localhost ~]# firewall-cmd --zone=public --add-port=8066/tcp --permanent

重启防火墙

[root@localhost ~]# firewall-cmd –reload

Navicat for MySQL连接

参考文献:

http://blog.csdn.net/testcs_dn/article/details/51438216  这篇主要参考环境配置

http://maosheng.iteye.com/blog/2306937 这篇文章主要参考它的简单配置schema.xml

http://www.jb51.net/article/114290.htm 这篇文章主要参考它的简单配置schema.xml

mysql+mycat分片环境部署的更多相关文章

  1. Docker + node(koa) + nginx + mysql 线上环境部署

    在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...

  2. mysql及redis环境部署时遇到的问题解决

    redis开启远程访问redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf打开redis.conf文件在NETWORK部分有说明 解决办法:注释掉bind 127.0. ...

  3. MySQL高可用方案-PXC环境部署记录

    之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一.基于主从复制的高可用方案:双节点主从 + keepalived 一般来说, ...

  4. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  5. 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  6. MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)

    MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与 ...

  7. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...

  8. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  9. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

随机推荐

  1. ASP.NET 实现Base64文件流下载PDF

    因为业务需要调用接口获取的是 Base64文件流 需要提供给客户下载PDF文档 源码部分借鉴网上,具体地址忘记了. //Base64文件流 byte[] buffer = Convert.FromBa ...

  2. JavaScript新手学习笔记(一)

    1.JavaScript 对大小写敏感. JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getE ...

  3. jQuery基本筛选器-表单筛选器-关系筛选器

    一.基本筛选器 :first // 第一个 :last // 最后一个 :eq(index)// 索引等于index的那个元素 :even // 匹配所有索引值为偶数的元素,从 0 开始计数 :odd ...

  4. python hash()和hashlib

    一.哈希算法 哈希算法:哈希算法并不是特定的算法而是一类算法的统称,只要是完成这种功能的算法都是哈希算法,哈希算法也叫做散列算法.同时这个过程是不可逆的,无法由key推导出data.判断一个哈希算法是 ...

  5. 记录一下mariadb设置主从同步的过程[虚拟机测试]

    背景:因为工作的关系,需要找寻实时同步数据到另外系统的服务器的数据库上,查询下来,用mariadb进行跨服务器的同步数据动作,用主从同步比较多,也比较保险 也有使用shell脚本的,定时定候的执行my ...

  6. Nginx - upstream 模块及参数测试

    目录 - 1. 前言- 2. 配置示例及指令说明    - 2.1 配置示例    - 2.2 指令    - 2.3 upstream相关变量- 3. 参数配置及测试    - 3.1 max_fa ...

  7. mvn本地库导入jar包

    导入脚本  #!/bin/sh  mvn deploy:deploy-file -DgroupId=com.xxx.xxx -DartifactId=包名 -Dversion=4.0 -Dpackag ...

  8. 大数据统计分析平台之三、Kibana安装和使用

    kibana安装 1.到官网下载kibana: cd /usr/local/software wget https://artifacts.elastic.co/downloads/kibana/ki ...

  9. PyQt5调入数据库数据在表格中显示

    数据库为Postgresql import sys from form import Ui_Form from PyQt5.Qt import QWidget, QApplication,QTable ...

  10. js回到顶部 动画速度 (自己记录)

    x=x-20; 设置回到每10s的速度, function gotoTop(){ var x=document.body.scrollTop||document.documentElement.scr ...