1 安装MyCat
安装目标:使用Mycat完成两台mysql分片即两台数据库做集群,通过访问mycat路由实现数据自动分片(根据id分配不同的mysql服务器)
1.1.环境:
操作系统:Centos7
数据库:mysql5.7
Jdk1.8
机器规划:
编号 Ip 作用
机器1(bigdata1) 192.168.18.140 Mycat路由
机器1(bigdata1) 192.168.18.140 mysql
机器2(bigdata2) 192.168.18.141 Mysql
下载MyCat
http://dl.mycat.io/1.6.5/
1.2.解压和修改配置
将Mycat上传到:/home/bigdata/software
[root@bigdata1 software]# pwd
/home/bigdata/software
[root@bigdata1 software]# ls Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
[root@bigdata1 software]# tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /home/bigdata/installed/
解压后的mycat目录:
conf中的内容如下:
其中server.xml是Mycat服务器参数调整和用户授权的配置文件,schema.xml是逻辑库定义和表以及分片定义的配置文件,rule.xml是分片规则的配置文件,分片规则的具体参数信息单独存放为文件。
注意:Linux 下部署安装 MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使 Linux 环境下 MySQL 忽略表名大小写,否则使用 MyCAT 的时候会提示找不到 表的错误!
1.4.配置mycat环境变量
export MYCAT_HOME=/home/bigdata/installed/mycat/
export PATH=$PATH:$MYCAT_HOME/bin
配置完成之后:执行source /etc/profile
1.4.配置说明
机器1、机器2安装并启动MySQL,安装后需要增加机器1(mycat)访问数据库的权限,方法:
在机器1、机器2中的连接本机mysql数据库,执行如下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIEDBY '123456';
FLUSH PRIVILEGES;
1.5.创建数据库
需要在机器1,机器2中分别创建db1数据库,执行如下命令:
CREATE DATABASE db1;
CREATE DATABASE TESTDB;
1.6.修改/home/bigdata/installed/mycat/conf/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">
<!-- auto sharding by id (long) -->
<table name="travelrecord" dataNode="dn1,dn2" rule="auto-sharding-long" />
</schema>
<dataNode name="dn1" dataHost="m1" database="db1" />
<dataNode name="dn2" dataHost="m2" database="db1" />
<dataHost name="m1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="m1" url="bigdata1:3306" user="root" password="123456">
<!-- can have multi read hosts -->
<!--<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />-->
</writeHost>
<!--<writeHost host="hostS1" url="localhost:3316" user="root" password="123456" />-->
</dataHost>
<dataHost name="m2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="m2" url="bigdata2:3306" user="root" password="123456"></writeHost>
</dataHost>
</mycat:schema>
1.7.修改mycat/conf/autopartition-long.txt
如果有3台,4台等,需要在最下面再添加配置
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1.8.启动mycat
[root@bigdata1 installed]# pwd
/home/bigdata/installed
[root@bigdata1 installed]# ls mycat/
bin catlet conf lib logs tmlogs version.txt
[root@bigdata1 installed]# ./mycat/bin/mycat
Usage: ./mycat/bin/mycat { console | start | stop | restart | status | dump }
[root@bigdata1 installed]# ./mycat/bin/mycat start
Starting Mycat-server…
使用mysql客户端工具(如sqlyog)连接mycat
注意:mycat默认端口8066,非3066,用户名密码在mycat/config/server.xml文件中查看:
1.9.参考博文
Mycat分表案例:
https://www.cnblogs.com/756623607-zhang/p/665601.html
https://blog.csdn.net/goslingfly/article/details/78573716
https://www.cnblogs.com/ruiati/p/7040416.html
1.10.数据导入
mysql -uroot -p123456 -h192.168.18.140 -P8066 –DTESTDB
source sql路径
Can’t get stat of ‘/home/bigdata/tb_pos_trade.sql’ (Errcode: 13 - Permission denied)
是因为导入的sql的时候,文件目录的权限的问题
解决办法是:
[root@bigdata1 home]# chmod -R 777 bigdata/
The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
解决办法:
[root@bigdata1 home]# vim /etc/my.cnf
在里面加入:
secure-file-priv=”
ERROR 1366 (HY000): Incorrect integer value: ’ shop_id
’ for column ‘shop_id’ at row 1
解决办法:
官方解释说:得知新版本mysql对空值插入有"bug",
要在安装mysql的时候去除默认勾选的enable strict SQL mode
那么如果我们安装好了mysql怎么办了,解决办法是更改mysql中的配置 my.ini
my.ini中查找sql-mode,
默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可
load data infile “/home/bigdata/tb_pos_trade.sql” into table tb_pos_trade fields terminated by ‘,’;
1.11.自定义rule
打开/home/bigdata/installed/mycat/conf/rule.xml
<!--针对项目做自定义配置-->
<tableRule name="mod50-long">
<rule>
<columns>id</columns>
<algorithm>mod50-long</algorithm>
</rule>
</tableRule>
<function name="mod50-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">50</property>
</function>
1.12.修改MyCat内存
修改的位置:/home/bigdata/installed/mycat/conf/vim wrapper.conf