mysql+mycat分片环境部署

说明:

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

2、jdk版本:1.8.0_121

3、mysql版本: 5.7.17

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

准备压缩文件

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

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

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

2、创建/soft目录:

[[email protected] soft]# mkdir /soft

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

解压缩

解压

[[email protected] ~]# cd /soft

[[email protected] soft]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

移动到/soft目录

[[email protected] soft]# mv mycat /usr/local/

配置环境变量

1、打开配置文件

[[email protected] bin]# vi /etc/profile

2、在文件末尾添加:

export MYCAT_HOME=/usr/local/mycat

export PATH=$PATH:$MYCAT_HOME/bin

保存并退出

3、使修改生效

[[email protected] bin]# source /etc/profile

4、测试是否生效

[[email protected] bin]# echo $MYCAT_HOME

配置主机名

[[email protected] 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

所以两台都需要修改

[[email protected] soft]# vi /etc/my.cnf

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

重启mysql服务

[[email protected] soft]# /etc/init.d/mysqld restart

配置schema.xml

[[email protected] 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日志文件才找到原因的。

[[email protected] 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

[[email protected] soft]# /usr/local/mysql/bin/mysql -uroot -p123456

mysql> create database db1;

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

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

[[email protected] soft]# /usr/local/mysql/bin/mysql -uroot -p123456

mysql> create database db2;

启动mycat

[[email protected] ~]# mycat start

连接mycat

[[email protected] 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

[[email protected] ~]# firewall-cmd --zone=public --add-port=8066/tcp --permanent

重启防火墙

[[email protected] ~]# 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

时间: 2024-10-12 21:25:57

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

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

在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置也就很简单了 我所使用的环境,Linux Mint,命令有不同可以适当更改 目录结构 - compose 新建,线上环境配置 - data - conf - node_modules - static - docker-compose.yml - docker-compose-prod.yml 新建

从零开始的MYSQL --- MySQL安装及环境部署

官网下载地址:dev.mysql.com/downloads 目前实验环境中使用的MySQL版本:mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz linux下直接wget的命令:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz 国内镜像网站:http://mirrors.sohu.com/ 安装mysql:    1.解压: m

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

LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6       配置备用数据库… 3 1.6.1         编辑my

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

By leo | 2015/05/13 0 Comment LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1         编辑my.cnf文件… 2 1.2.2         重启数据库… 2 1.3       锁定主数据库DDL操作… 2 1.4       主备已有数据同步… 2 1.5       停止从服务… 3 1.6      

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

本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么是MYCAT: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个融合内存缓存技术.NoSQL技术.HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数

php+mysql+nginx在linux上的环境部署

一直在linux上鼓捣,还没有完整在linux下配置过nginx服务器环境部署呢,这几天没什么事就部署了一下,遇到的问题也很多,现在把我的环境部署文档发出了,有什么问题大家可以一起讨论一下,希望大家采用后遇到问题多多沟通. || 安装所需各种依赖包 sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2

docker容器里面各测试环境部署部署脚本(nginx,php,redis,mysql,nodejs)

公司用到的语言,当然还是php为主,不过后台现在都用到nodejs和golang,所以nodesjs和golang都要安装,发觉使用docker还是很好的,只要把环境部署好了,然后打构建成镜像,下次直接就可以生成环境了,不用重新部署.以下为相关服务的部署脚本: nginx: ###上传并解压安装文件:tar zxvf nginx-1.8.0.tar.gz ###进到安装目录:cd nginx-1.8.0 ###编译参数安装: ./configure --user=nginx --group=ng

MySQL高可用架构-MHA环境部署记录

一.MHA介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.是一套优秀的作为MySQL高可用性 环境下故障切

性能测试二十六:环境部署之Mysql+Redis+Tomcat环境整合

系统中使用了缓存+数据库,通用读取数据规则1.先从缓存读数据,如果有,直接返回数据:2.如果没有,去数据库中读,然后再插入到缓存中,再返回数据 Mysql+Redis+Tomcat环境整合 1.修改PerfTeach/WEB-INF/classes/redis-config.properties2.将redisServer修改为自己部署的redis ip:port3.将redisFlag修改为true4.重启tomcat5.http://192.168.1.209:8080/PerfTeach/