赞
踩
MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了
JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。
jdk安装
先查看系统是否已有自带的jdk
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
如果没有输出信息,则说明系统没有安装。如果有输出信息,则执行下面的命令卸载
rpm -qa | grep java | xargs rpm -e --nodeps
安装
yum install java-1.8.0-openjdk* -y
验证是否安装成功
java -version
输出
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
mycat1.6.7.4下载地址
下载的文件直接解压即可。
解压后的主要文件
mycat ├── bin │ ├── mycat #启动脚本 ├── conf │ ├── autopartition-long.txt │ ├── auto-sharding-long.txt │ ├── auto-sharding-rang-mod.txt │ ├── log4j2.xml │ ├── partition-hash-int.txt │ ├── partition-range-mod.txt │ ├── rule.xml #分片规则配置 │ ├── schema.xml #物理数据库信息配置和分片配置 │ ├── server.xml #mycat配置 ├── logs │ ├── mycat.log #mycat日志 └──── wrapper.log #启动日志
# 启动
./mycat start
# 停止
./mycat stop
# 前台运行
./mycat console
# 重启服务
./mycat restart
# 暂停
./mycat pause
# 查看启动状态
./mycat status
mycat
的连接信息在/mycat/conf/server.xml
中
使用navicat
连接,mysql
怎么连接,mycat
就怎么连接
推荐先采用命令行测试
mysql -uroot -pFRN22@zz6 -P8066 -h127.0.0.1
说明:
zhxh
字段(租户序号)进行分库,按照mod-long
分库规则分成五个库。ly_ycasp_qxpt0
,ly_ycasp_qxpt1
,ly_ycasp_qxpt2
,ly_ycasp_qxpt3
,ly_ycasp_qxpt4
mycat逻辑库
中新建(视图除外)<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- name为mycat逻辑库的库名,sqlMaxLimit默认查询100条 --> <schema name="ly_ycasp_qxpt" checkSQLschema="true" sqlMaxLimit="100"> <!-- table标签说明: name为表名, rule是分片规则,详情请看rule.xml --> <table name="ly_qxpt_yh" dataNode="dn$0-4" rule="mod-long" /> <!-- 视图:这里的v_qxpt_js_qx为视图名 --> <table name="v_qxpt_js_qx" dataNode="dn$0-4" type="global"/> <!-- 不进行分库的表配置,只存在于dn1这个库中 --> <table name="t_test" dataNode="dn1" /> <!-- 全局表,type设置为global则为全局表 --> <table name="worker_node" dataNode="dn$0-4" type="global"/> </schema> <!-- 这里$0-4表示分成五个数据库分片,真实的数据库名为 ly_ycasp_qxpt0, ly_ycasp_qxpt1, ly_ycasp_qxpt2, ly_ycasp_qxpt3, ly_ycasp_qxpt4, --> <dataNode name="dn$0-4" dataHost="localhost1" database="ly_ycasp_qxpt$0-4" /> <!-- 真实数据库信息: daType为数据库的类型 balance 0, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。 2,所有读操作都随机的在writeHost、readhost上分发。 3,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力 writeType 表示写模式 0,所有的操作发送到配置的第一个writehost 1,随机发送到配置的所有writehost 2,不执行写操作 switchType 指的是切换的模式,目前的取值也有4种: -1,表示不自动切换 1,默认值,表示自动切换 2,基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status 3,基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为show status like ‘wsrep%‘ --> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!--这里填写真实数据库连接信息--> <writeHost host="hostM1" url="localhost:3306" user="root" password="admin"> </writeHost> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost> </mycat:schema>
修改user
标签里的mycat数据库连接信息即可,其他的标签使用默认
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<!-- mycat连接信息 -->
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">ly_ycasp_qxpt</property>
</user>
</mycat:server>
这个配置文件有很多默认的分片规则,这里使用的是mod-long
规则对zhxh
来取模,分五个分片
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://io.mycat/"> <!-- 根据权限平台的zhxh(租户序号)取模进行分片 --> <tableRule name="mod-long"> <rule> <columns>zhxh</columns> <algorithm>mod-long</algorithm> </rule> </tableRule> <function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- 分片数量 --> <property name="count">5</property> </function> </mycat:rule>
以下是zhxh
从-1
到14
插入逻辑库,数据落在真实数据库的情况
zhxh
对分片数量进行取模运算,结果相同的被分配在同一个库
mycat的可视化界面
zookeeper下载地址,注意,下载后缀带有bin.tar.gz的包,其他的tar.gz最新的版本启动报错
解 压 zookeeper-3.6.2.bin.tar.gz
zookeeper-3.6.2/conf 目录下把 zoo_sample.cfg 修改为 zoo.cfg
启动 zookeeper
启动命令:bin/zkServer.sh start
下载Linux版本:Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz
解压后生成mycat-web目录
先启动zookeeper
在进入bin目录启动mycat eye:./start.sh
访问地址:http://localhost:8082/mycat/
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server
vim /etc/my.cnf
# 忽略大小写
lower_case_table_names=1
提示:新安装的mysql
修改密码后无法启动,删除rm -rf /var/lib/mysql
即可
# 启动
systemctl start mysqld
# 查看登陆密码
grep 'temporary password' /var/log/mysqld.log
# 改密码规则 set global validate_password.policy=0; set global validate_password.length=1; # 改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin'; # 设置Mysql远程登陆 use mysql; update user set host='%' where user ='root'; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; # 修改密码为用不过期 ALTER USER 'root'@'%' IDENTIFIED BY 'admin' PASSWORD EXPIRE NEVER; # 修改密码并指定加密规则为mysql_native_password ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin'; # 刷新权限 flush privileges;
yum remove mysql
找出mysql相关包,强制卸载
rpm -qa | grep -i mysql
rpm -e --nodeps 上一步找出的包名
find / -name mysql #找出相关文件删除
rm -rf /usr/share/mysql
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。