myCat实现分库分表
生活随笔
收集整理的這篇文章主要介紹了
myCat实现分库分表
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
0. 準(zhǔn)備
本文基于docker啟動(dòng)mysql
JDK:要求jdk必須是1.8及以上版本
MySQL:推薦mysql是5.6以上版本
分庫分表的介紹_騎臺風(fēng)走的博客-CSDN博客分庫分表的介紹https://blog.csdn.net/qq_52385631/article/details/126413374?spm=1001.2014.3001.5502
1.先安裝java jdk
安裝包地址
Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/#JavaSE
下載(需要注冊或登錄一下賬號)
?安裝jdk步驟
# 1.移動(dòng)到/usr/local/java文件夾下 cp jdk-8u231-linux-x64.tar.gz /usr/local/java # 2.解壓 tar -zxvf dk-8u231-linux-x64.tar.gz # 3.配置環(huán)境變量 vim /etc/profileexport JAVA_HOME=/usr/local/java/jdk1.8.0_231 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin# 4.source使其生效 source /etc/profile # 5.檢查 java -version2. 啟動(dòng)mysql
docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1docker run -di --name=test2_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v13.MyCat安裝及啟動(dòng)
myCat安裝
官方文檔
MyCat2http://www.mycat.org.cn/
安裝步驟
# 下載安裝包 wget http://dl.mycat.org.cn/1.6.7.3/20190828135747/Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz # 解壓 tar -xzvf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz # 進(jìn)入mycat目錄的bin目錄,啟動(dòng)mycat cd /mycat/bin ./mycat start # 停止 ./mycat stop4.鏈接
我這邊用navicat鏈接
# 查看mycat賬號密碼 這個(gè)版本的賬號密碼: 賬號:root 密碼:123456# 其他版本查看 Mycat重要的配置文件sever.xml:綜合配置數(shù)據(jù)庫的相關(guān)信息,端口,內(nèi)存占用,創(chuàng)建賬號,密碼 schema.xml:對數(shù)據(jù)庫表結(jié)構(gòu)的定義 rule.xml:指定相關(guān)算法,來實(shí)現(xiàn)不同的分片數(shù)據(jù)庫# 方式一: cd conf vim server.xml# 方式二: pycharm遠(yuǎn)程鏈接查看文檔教程 https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2101.3001.53525. 分表
5.1按主鍵范圍分片rang-long
5.1.1 修改配置文件schema.xml
坑一:primaryKey="id" id要小寫,不然后期分表失敗,全部都有
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"><!-- TESTDB數(shù)據(jù)庫給user表進(jìn)行映射到dn1,dn2庫中 --><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"><!-- 表--><table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true"></table><!-- 如果想有多個(gè)表,繼續(xù)加table,安裝想要的規(guī)則即可--></schema><!-- 創(chuàng)建數(shù)據(jù)庫lqz--><dataNode name="dn1" dataHost="localhost1" database="lqz"/><dataNode name="dn2" dataHost="localhost2" database="lqz"/><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 數(shù)據(jù)庫地址 --><writeHost host="hostM1" url="106.14.42.253:3306" user="root"password="123456"></writeHost></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 數(shù)據(jù)庫地址 --><writeHost host="hostM1" url="106.14.42.253:3307" user="root"password="123456"></writeHost></dataHost></mycat:schema>5.1.2 修改rule.xml
# ctrl +f,找到自己配置的規(guī)則,我這邊是auto-sharding-long?5.1.3 修改text
?以上配置全部完成,重啟myCat,如果用的pycharm,需要把文件同步上傳,接著去navicat新建數(shù)據(jù)庫即可,新建的數(shù)據(jù)庫名稱,跟你schema.xml中database中名稱一樣
5.2?一致性哈希murmur
可避免熱點(diǎn)問題
熱點(diǎn)問題:一直查詢一個(gè)表
5.2.1 修改配置文件schema.xml
新增一段?<table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/>
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"><!-- TESTDB數(shù)據(jù)庫給user表進(jìn)行映射到dn1,dn2庫中 --><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"><!-- 表--><!-- <table name="user" primaryKey="id" type="global" rule="auto-sharding-long" dataNode="dn1,dn2"/>--><table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true"></table><!-- 如果想有多個(gè)表,繼續(xù)加table,安裝想要的規(guī)則即可--><table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/></schema><!-- 創(chuàng)建數(shù)據(jù)庫lqz--><dataNode name="dn1" dataHost="localhost1" database="lqz"/><dataNode name="dn2" dataHost="localhost2" database="lqz"/><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 數(shù)據(jù)庫地址 --><writeHost host="hostM1" url="106.14.42.253:3306" user="root"password="123456"></writeHost></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- url 數(shù)據(jù)庫地址 --><writeHost host="hostM1" url="106.14.42.253:3307" user="root"password="123456"></writeHost></dataHost></mycat:schema>配置完成重啟myCat,新建表即可
6. 新建數(shù)據(jù)庫和表
6.1?按主鍵范圍分片rang-long新建表
6.2 按照一致性哈希murmur新建表
?
總結(jié)
以上是生活随笔為你收集整理的myCat实现分库分表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子邮件客户端:Mail Pilot 3
- 下一篇: html下拉选择图片,图片+JavaSc