国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

springboot+mycat 分表分庫

lakeside / 1657人閱讀

摘要:而在分布式系統中,分表分庫也是常用的一種解決此類瓶頸的手段。支持數據的多片自動路由與聚合,支持等常用的聚合函數支持跨庫分頁。支持通過全局表,關系的分片策略,實現了高效的多表查詢。支持多租戶方案。

前言

對于業務量越來越大的時候,單表數據超過幾千萬,甚至上億時,一張表里面查詢真的會很費時。而在分布式系統中,分表分庫也是常用的一種解決此類瓶頸的手段。今天就選用springboot+mycat簡單聊下。mycat官網:http://www.mycat.io/

什么是mycat?

  1. 一個徹底開源的,面向企業應用開發的大數據庫集群
  2. 支持事務、ACID、可以替代MySQL的加強版數據庫
  3. 一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
  4. 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
  5. 結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
  6. 一個新穎的數據庫中間件產品

為什么要用mycat?

   支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
   遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理
   基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集群。
   支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
   基于Nio實現,有效管理線程,解決高并發問題。
   支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁。
   支持單庫內部任意join,支持跨庫2表join,甚至基于caltlet的多表join。
   支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢。
   支持多租戶方案。
   支持分布式事務(弱xa)。
   支持XA分布式事務(1.6.5)。
   支持全局序列號,解決分布式下的主鍵生成問題。
   分片規則豐富,插件化開發,易于擴展。
   強大的web,命令行監控。
   ...
   

centos7安裝下載mycat

centos7安裝mycat
安裝mycat比較簡單,我這邊也詳細說明一下:

 #下載: 
 wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
 #解壓
 tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
 #授權
 chmod -R 777 mycat
 #環境變量添加:
 vi /etc/profile
 #在里面添加:
 export MYCAT_HOME=/crawler/mycat/mycat   ##自己的安裝路徑
 export PATH=$PATH:$MYCAT_HOME/bin  
 #使環境變量生效
 source /etc/profile
 #注意:
 #Linux 下部署安裝 MySQL,默認不忽略表名大小寫,需要手動到/etc/my.cnf 下配置:
 lower_case_table_names=1
 

前期準備
ps:mycat需要配置java_home ,就算安裝了java如果沒有配置java_home.還是會拋沒有找到java_home的錯,在此,我們檢查一下有沒有配置,若沒有配置,請按以下步驟操作:

   A 確定java安裝路徑
      
  1. 終端輸入:
     which java
   輸出為:
     /usr/bin/java
  2. 終端輸入:
     ls -lr /usr/bin/java
   輸出為: 
      /usr/bin/java -> 
   3. 終端輸入
       ls -lrt /etc/alternatives/java
    輸出:    
       /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/jre/bin/java

至此,我們確定java的安裝目錄為: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64

 B 配置JAVA_HOME

1. 打開配置環境變量的文件
vi /etc/profile
2. 添加以下配置:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

:wq保存退出。
3. 讓配置生效
source  /etc/profile
4. 測試配置結果
echo $JAVA_HOME 

3.配置關鍵配置

a:配置schema.xml

  



 
   
             
      
   
     
     
           select user()  
             
                       
                 
    


b:配置rule.xml





    
       
           id
           mod-long
       
   
   
       
       2
   

c:配置server.xml





    
    0  
    0  

        2
       
         
    
    
        
        0
        
        
        
        
        
        
        
        
        0
        
            
        1

        
        1m

        
        1k

        0

        
        384m


        
        true


    
    
    
    
    
     
        123456 
        mycatDatabase  
        false
    


此時,我們運行mycat : mycat/bin/startup_nowrap.sh
如果是阿里云或者其他云服務器,需要把mycat的端口打開,默認端口是8066
此時,我們可以看一下日志:
mycat/logs/..

若沒什么問題,那么就可以在springboot上做集成了
ps:我們必須在上面所涉及到的地方建兩個庫哦: 如上面我建的是db01 db02

springboot集成mycat
 spring:
  datasource:
    url: jdbc:mysql://www.iamcrawler.cn:8066/mycatDatabase?serverTimezone=Asia/Shanghai
    username: crawler
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

service

/**
 * create by liuliang
 * on 2019-07-30  17:16
 */
@Service
public class MycatUserService extends ServiceImpl {
    
    public List getUsers(){
        List list = this.list(new QueryWrapper<>());
        return list;
    }

}

controller

/**
 * create by liuliang
 * on 2019-07-30  17:17
 */
@RestController
@RequestMapping("/mycat/user")
public class MyCatUserController {

    @Autowired
    private MycatUserService userService;


    @PostMapping
    public ResponseEntity insertUser(@RequestBody MycatUser mycatUser){
        return ResponseEntity.ok(userService.save(mycatUser));
    }

    @GetMapping
    public ResponseEntity getUsers(){
        return ResponseEntity.ok(userService.getUsers());
    }

}

調試:這個時候我們啟動程序,先后插入兩條數據:

localhost:9090/mycat/user  post
 {
    "id":"10",
    "name":"zhangsan"
}
 localhost:9090/mycat/user  post
 {
    "id":"11",
    "name":"lisi"
}




數據庫看的時候,發現已經進入了兩個不同的庫。
而我們查詢的時候:

   localhost:9090/mycat/user  get
    [
    {
        "id": 11,
        "name": "lisi"
    },
    {
        "id": 10,
        "name": "zhangsan"
    }
]

可以看到是,數據都查詢出來了,mycat分庫生效

ps:如果各位有項目使用的是liquibase,那么與mycat集成的時候會拋錯,原因是因為liquibase需要簡歷changelog表,而使用的庫是mycatDatabase ,這個是mycat的連接,而不是真實數據庫的連接...
github : https://github.com/iamcrawler...

最后,碼字不易,轉載復制請指明原創https://segmentfault.com/a/11...,違者必究...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75671.html

相關文章

  • 基于代理的數據庫分庫分表框架 Mycat實踐

    摘要:文章共字,閱讀大約需要分鐘概述在如今海量數據充斥的互聯網環境下,分庫分表的意義我想在此處就不用贅述了。 showImg(https://segmentfault.com/img/remote/1460000017453449); 文章共 1796字,閱讀大約需要 4分鐘 ! 概 述 在如今海量數據充斥的互聯網環境下,分庫分表的意義我想在此處就不用贅述了。而分庫分表目前流行的方案最起碼...

    el09xccxy 評論0 收藏0
  • 題庫分庫分表架構方案

    摘要:個人博客地址方案項目背景在現在題庫架構下,針對新購買的多道數據進行整合,不影響現有功能。數據切分盡量通過數據冗余或表分組來降低跨庫的可能。 個人博客地址 https://www.texixi.com/2019/0... 方案 項目背景 在現在題庫架構下,針對新購買的1300W多道數據進行整合,不影響現有功能。由于數據量偏多,需要進行數據的切分 目標場景 兼容舊的功能 對1300多W...

    kohoh_ 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
    <strike id="uoocs"></strike>
            <button id="uoocs"><tbody id="uoocs"></tbody></button>
            <cite id="uoocs"><center id="uoocs"></center></cite>
                • <abbr id="uoocs"><dl id="uoocs"></dl></abbr><option id="uoocs"><th id="uoocs"></th></option>
                  <