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