mysql分库分表,springboot程序集成mycat实现分库分表

mysql分库分表,springboot程序集成mycat实现分库分表

具体代码访问链接下载

从项目到部署服务器的过程,毕竟些写项目是为了发布部署服务器。
本篇主要介绍**mysql分库分表,springboot程序集成mycat实现分库分表**
  

前言:

	1.Linux环境:jdk1.8   mysql5.6     mycat1.6
	【安装软件可以使用yum 命令】
		1.1,jdk8安装:
				yum install java-1.8.0-openjdk* -y
		1.2,mysql安装参考菜鸟教程:
			[https://www.runoob.com/mysql/mysql-install.html](https://www.runoob.com/mysql/mysql-install.html)
					wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
					rpm -ivh mysql-community-release-el7-5.noarch.rpm
					yum update
					yum install mysql-server
		1.3,mycat下载:
			[http://dl.mycat.io/1.6-RELEASE/](http://dl.mycat.io/1.6-RELEASE/) 
				Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

步骤:

原理:程序不直接连接数据库配置,修改为连接mycat-server配置,由mycat负责统一调度,访问哪一个数据库

发起请求----------》程序配置文件配置mycat-server------------>mycat-server配置文件配置数据库---------------------》数据进入数据库


1. 解压mycat,解压文件为mycat

在这里插入图片描述

1.1进入cd mycat
bin目录下为启动脚本
conf目录下配置mysql数据库和分库分表配置
在这里插入图片描述

2.配置conf下配置文件:rule.xml server.xml schema.xml
在这里插入图片描述
rule.xml
规则:分几个库

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
    <tableRule name="rule1">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">3</property>
    </function>
</mycat:rule>

server.xml

#配置mycat的用户密码
#<property name="readOnly">true</property>此用户只读
<user name="root">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>
	</user>

	<user name="user">
		<property name="password">user</property>
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
	</user>

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="user" primaryKey="id" dataNode="dn01,dn02" rule="rule1" />  
    </schema>
    
    <!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->  
    <dataNode name="dn01" dataHost="dh01" database="db01" />  
    <dataNode name="dn02" dataHost="dh01" database="db02" />  
    <dataNode name="dn03" dataHost="dh01" database="db03" /> 
    
    <!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->  
    <dataHost name="dh01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">  
            <heartbeat>select user()</heartbeat>  
            <writeHost host="server1" url="127.0.0.1:3306" user="root" password="WolfCode_2017"/>  
    </dataHost> 
</mycat:schema>

2.依次启动mysql并创建数据库,mycat

mysql启动: systemctl start mysqld

#创建3个库【在数据库中创建两个数据库db01,db02.db03】,3张表
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mycat启动:执行 ./mycat/bin/startup_nowrap.sh

2.新建一个springboot项目,配置文件,执行程序即可

#配置数据源
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
#这里配置的是Mycat中server.xml中配置账号密码,不是数据库的密码。
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
#mycat的逻辑库 端口也是mycat的
spring.datasource.druid.url=jdbc:mysql://192.168.142.129:8066/TESTDB

在这里插入图片描述
数据库结果
在这里插入图片描述

遇到问题:mysql无法连接
Host is not allowed to connect to this MySQL server解决方法
在装有MySQL的机器上登录MySQL mysql -u root -p密码
执行use mysql;
执行update user set host = ‘%’ where user = ‘root’;这一句执行完可能会报错,不用管它。
执行FLUSH PRIVILEGES;

本文参考:https://www.jianshu.com/p/f81422b1c915

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值