mysql+mycat分片环境部署
说明:
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分片环境部署的更多相关文章
- Docker + node(koa) + nginx + mysql 线上环境部署
在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...
- mysql及redis环境部署时遇到的问题解决
redis开启远程访问redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf打开redis.conf文件在NETWORK部分有说明 解决办法:注释掉bind 127.0. ...
- MySQL高可用方案-PXC环境部署记录
之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一.基于主从复制的高可用方案:双节点主从 + keepalived 一般来说, ...
- LVS+MYCAT+读写分离+MYSQL主备同步部署手册
LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1 配置MYSQL主备同步…. 2 1.1 测试环境… 2 1.2 配置主数据库… 2 1.2.1 ...
- 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)
LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1 配置MYSQL主备同步…. 2 1.1 测试环境… 2 1.2 配置主数据库… 2 1.2.1 ...
- MySQL+MGR 单主模式和多主模式的集群环境 - 部署手册 (Centos7.5)
MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR是MySQL官方在5.7.17版本引进的一个数据库高可用与 ...
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...
随机推荐
- hibernate的枚举注解@Enumerated
@Enumerated(value=EnumType.ORDINAL)采用枚举类型的序号值与数据库进行交互, 此时数据库的数据类型需要是数值类型,例如在实际操作中 CatTest ct = new C ...
- 第一个Django项目:HelloWorld
OS:Windows家庭中文版, Python:3.6.3,Django:2.0.3 在前一篇文章中,Django已经顺利安装到了Python中,下面,开发第一个Python项目吧! 1.django ...
- Autofac Named命名和Key Service服务
参考:http://www.cnblogs.com/wolegequ/archive/2012/06/03/2532605.html
- caffe+win7+vs2013 仅CPU环境安装
笔者对深度学习一直充满着好奇与兴趣,之前学校都是研究图像处理的特征点方式,机器学习使用也不多,别提深度学习了. 在看了李宏毅大佬的PPT后,有了初步的认识,虽然是渣渣电脑,也想自己跑几个深度模型. 说 ...
- 从exp入手分析漏洞
分析poc和分析exp有一些不一样,因为exp是人为构造后的东西,它会执行一段自定的shellcode.结果是根本不会触发异常或者异常在离触发点十万八千里的地方.这样分析poc的技巧就用不上了(因为无 ...
- 更改Chrome浏览器安装位置的方法
因为Google Chrome独特的优势,我们很多人都在使用它,但同时我们也会发现它是默认安装在我们的系统盘的,那么是否就不能修改其安装路径了呢?其实不然,这里介绍一种方法,亲测可行. 一.正常安装 ...
- Hadoop案例(十一)MapReduce的API使用
一学生成绩---增强版 数据信息 computer,huangxiaoming,,,,,,, computer,xuzheng,,,,, computer,huangbo,,,, english,zh ...
- day6面向对象
面向对象介绍(http://www.cnblogs.com/alex3714/articles/5188179.htm) 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就 ...
- Django实战(13):在session中保存购物车
现在,我们有了一个产品目录界面,用户如果看到满意的产品,就可以将其放入购物车.下面就让我们来实现购物车的功能. 首先要做一下简单的分析和设计.购物车应该显示一系列产品的清单,其中列出了买方选中的产品. ...
- mysql 函数group_concat()
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...