说明:

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

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

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="blog" primaryKey="id" dataNode="dn1,dn2" rule="mod-long" />
</schema> <dataNode name="dn1" dataHost="server1" database="db1" />
<dataNode name="dn2" dataHost="server2" database="db2" /> <dataHost name="server1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="server_1" url="192.168.1.70:3306" user="root" password="123456" />
</dataHost>
<dataHost name="server2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="server_2" url="192.168.1.71:3306" user="root" password="123456" />
</dataHost>
</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

如下图:

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

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

STATUS | wrapper  | 2017/08/19 20:13:36 | TERM trapped.  Shutting down.
STATUS | wrapper | 2017/08/19 20:13:37 | <-- Wrapper Stopped
STATUS | wrapper | 2017/08/19 20:13:41 | --> Wrapper Started as Daemon
STATUS | wrapper | 2017/08/19 20:13:41 | Launching a JVM...
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
INFO | jvm 1 | 2017/08/19 20:13:41 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2017/08/19 20:13:41 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2017/08/19 20:13:41 |
INFO | jvm 1 | 2017/08/19 20:13:42 |
INFO | jvm 1 | 2017/08/19 20:13:42 | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2017/08/19 20:13:42 | java.lang.ExceptionInInitializerError
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatStartup.main(MycatStartup.java:53)
INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
INFO | jvm 1 | 2017/08/19 20:13:42 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
INFO | jvm 1 | 2017/08/19 20:13:42 | at java.lang.reflect.Method.invoke(Method.java:498)
INFO | jvm 1 | 2017/08/19 20:13:42 | at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
INFO | jvm 1 | 2017/08/19 20:13:42 | at java.lang.Thread.run(Thread.java:745)
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
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.checkRuleSuitTable(XMLSchemaLoader.java:563)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadTables(XMLSchemaLoader.java:396)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.loadSchemas(XMLSchemaLoader.java:173)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.load(XMLSchemaLoader.java:122)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:83)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.loader.xml.XMLSchemaLoader.<init>(XMLSchemaLoader.java:87)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:74)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.config.MycatConfig.<init>(MycatConfig.java:72)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatServer.<init>(MycatServer.java:144)
INFO | jvm 1 | 2017/08/19 20:13:42 | at io.mycat.MycatServer.<clinit>(MycatServer.java:96)
INFO | jvm 1 | 2017/08/19 20:13:42 | ... 7 more
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、 建表

选择逻辑数据库

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

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

192.168.1.70 db1下有了blog表

192.168.1.71 db2下也有了blog表

2、插入数据

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

3、查询

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. 05 Diagnostics 诊断

    Diagnostics 诊断 Introduction 介绍 Profiling 分析 Tracing 跟踪 Debugging 调试 Runtime statistics and events 运行 ...

  2. css-css背景

    CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果 一:背景色background-color 属性 p {background-color: gray;} 二:背景图像 backgr ...

  3. rsync + inotify 实时同步

    1. 前言 2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地. 有三种方案: (1)NFS (2)Rsync + inotify (3)共享存储服务器 第一种:当 nfs ...

  4. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  5. Elasticsearch: 权威指南---基础入门

    1.查看方式:GETURL:http://10.10.6.225:9200/?pretty pretty 在任意的查询字符串中增加pretty参数.会让Elasticsearch美化输出JSON结果以 ...

  6. 《精通Python设计模式》学习结构型之享元模式

    这个我日常当中也没有用到过, 真的是游戏行业用得多些? 学习一下, 有个印象. import random from enum import Enum TreeType = Enum('TreeTye ...

  7. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  8. Python类和人类

    Python中的类 俗话说,物以类聚,人以群分,类是什么,类就是一组相同属性的集合.下面来结合人,探讨Python中类和人类的关系. 首先,我们定义一个人的类,如下: class People(obj ...

  9. Ubuntu16.04下HBase的安装与配置

    一.环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : mysql : hive : hbase: -hadoop2 安装HBase前,系统 ...

  10. vue 中 使用 tradingview

    加载页面时初始化方法: mounted 可以在 mounted 方法中调用 methods 的中的方法 使用 data 中的数据时,在每个方法的开始推荐先定义 var that = this 现在还不 ...