当前位置:   article > 正文

MyCat多租户方案_mycat 多租户

mycat 多租户

Mycat使用tar包部署

MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了

JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

环境准备

  1. jdk安装

    • 先查看系统是否已有自带的jdk

      rpm -qa |grep java
      
      rpm -qa |grep jdk
      
      rpm -qa |grep gcj
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 如果没有输出信息,则说明系统没有安装。如果有输出信息,则执行下面的命令卸载

      rpm -qa | grep java | xargs rpm -e --nodeps
      
      • 1
    • 安装

      yum install java-1.8.0-openjdk* -y
      
      • 1
    • 验证是否安装成功

      java -version
      
      • 1
    • 输出

      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)
      
      • 1
      • 2
      • 3
  2. mycat1.6.7.4下载地址

    Mycat-server-1.6.7.4-release版本发布

安装

tar包安装

下载的文件直接解压即可。

解压后的主要文件

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 #启动日志
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
运行
# 启动
./mycat start
# 停止
./mycat stop
# 前台运行
./mycat console 
# 重启服务
./mycat restart 
# 暂停
./mycat pause 
# 查看启动状态
./mycat status 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

连接测试

mycat的连接信息在/mycat/conf/server.xml

  1. 使用navicat连接,mysql怎么连接,mycat就怎么连接

  2. 推荐先采用命令行测试

    mysql -uroot -pFRN22@zz6 -P8066 -h127.0.0.1
    
    • 1

Mycat配置

说明:

  1. 根据zhxh字段(租户序号)进行分库,按照mod-long分库规则分成五个库。
  2. 所有的分库需要先在真实数据库新建,这里先新建了ly_ycasp_qxpt0ly_ycasp_qxpt1ly_ycasp_qxpt2ly_ycasp_qxpt3ly_ycasp_qxpt4
  3. 但是所有的表可以手动在mycat逻辑库中新建(视图除外)
  4. mycat的逻辑库不需要新建,mycat会根据配置文件里配置,新建逻辑库

schema.xml

<?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>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

server.xml

修改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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

rule.xml

这个配置文件有很多默认的分片规则,这里使用的是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>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

以下是zhxh-114插入逻辑库,数据落在真实数据库的情况

zhxh对分片数量进行取模运算,结果相同的被分配在同一个库
在这里插入图片描述

Mycat-Web

mycat的可视化界面

需要 Zookeeper 作为配置中心

zookeeper下载地址,注意,下载后缀带有bin.tar.gz的包,其他的tar.gz最新的版本启动报错

zookeeper配置
  1. 解 压 zookeeper-3.6.2.bin.tar.gz

  2. zookeeper-3.6.2/conf 目录下把 zoo_sample.cfg 修改为 zoo.cfg

  3. 启动 zookeeper

  4. 启动命令:bin/zkServer.sh start

Mycat eye 环境部署

下载Linux版本:Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz

  1. 解压后生成mycat-web目录

  2. 先启动zookeeper

  3. 在进入bin目录启动mycat eye:./start.sh

  4. 访问地址:http://localhost:8082/mycat/

yum安装mysql8.0

安装

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
  • 1
  • 2
  • 3
vim /etc/my.cnf
# 忽略大小写
lower_case_table_names=1
  • 1
  • 2
  • 3

提示:新安装mysql修改密码后无法启动,删除rm -rf /var/lib/mysql即可

# 启动
systemctl start mysqld

# 查看登陆密码
grep 'temporary password' /var/log/mysqld.log
  • 1
  • 2
  • 3
  • 4
  • 5
# 改密码规则
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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

卸载

  1. yum remove mysql
    
    • 1
  2. 找出mysql相关包,强制卸载

    rpm -qa | grep -i mysql
    rpm -e --nodeps 上一步找出的包名
    
    • 1
    • 2
  3. find / -name mysql #找出相关文件删除
    
    • 1
  4. rm -rf /usr/share/mysql
    
    • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/407373
推荐阅读
相关标签
  

闽ICP备14008679号