天天看點

mysql分庫分表,springboot程式內建mycat實作分庫分表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

mysql分庫分表,springboot程式內建mycat實作分庫分表mysql分庫分表,springboot程式內建mycat實作分庫分表

1.1進入cd mycat

bin目錄下為啟動腳本

conf目錄下配置mysql資料庫和分庫分表配置

mysql分庫分表,springboot程式內建mycat實作分庫分表mysql分庫分表,springboot程式內建mycat實作分庫分表

2.配置conf下配置檔案:rule.xml server.xml schema.xml

mysql分庫分表,springboot程式內建mycat實作分庫分表mysql分庫分表,springboot程式內建mycat實作分庫分表

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分庫分表,springboot程式內建mycat實作分庫分表mysql分庫分表,springboot程式內建mycat實作分庫分表

資料庫結果

mysql分庫分表,springboot程式內建mycat實作分庫分表mysql分庫分表,springboot程式內建mycat實作分庫分表

遇到問題: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

繼續閱讀