码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • myCat实现分库分表


    0. 准备

    本文基于docker启动mysql

    JDK:要求jdk必须是1.8及以上版本

    MySQL:推荐mysql是5.6以上版本

    分库分表的介绍_骑台风走的博客-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. # 1.移动到/usr/local/java文件夹下
    2. cp jdk-8u231-linux-x64.tar.gz /usr/local/java
    3. # 2.解压
    4. tar -zxvf dk-8u231-linux-x64.tar.gz
    5. # 3.配置环境变量
    6. vim /etc/profile
    7. export JAVA_HOME=/usr/local/java/jdk1.8.0_231
    8. export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
    9. export PATH=$PATH:${JAVA_HOME}/bin
    10. # 4.source使其生效
    11. source /etc/profile
    12. # 5.检查
    13. java -version

    2. 启动mysql

    1. docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1
    2. docker run -di --name=test2_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 yuanmengqiang/mysql_utf-8:v1

    3.MyCat安装及启动

    myCat安装

    官方文档

    MyCat2http://www.mycat.org.cn/

    安装步骤

    1. # 下载安装包
    2. wget http://dl.mycat.org.cn/1.6.7.3/20190828135747/Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz
    3. # 解压
    4. tar -xzvf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz
    5. # 进入mycat目录的bin目录,启动mycat
    6. cd /mycat/bin
    7. ./mycat start
    8. # 停止
    9. ./mycat stop

    4.链接

    我这边用navicat链接

    1. # 查看mycat账号密码
    2. 这个版本的账号密码:
    3. 账号:root
    4. 密码:123456
    5. # 其他版本查看
    6. Mycat重要的配置文件
    7. sever.xml:综合配置数据库的相关信息,端口,内存占用,创建账号,密码
    8. schema.xml:对数据库表结构的定义
    9. rule.xml:指定相关算法,来实现不同的分片数据库
    10. # 方式一:
    11. cd conf
    12. vim server.xml
    13. # 方式二:
    14. pycharm远程链接查看文档教程
    15. https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2101.3001.5352

    5. 分表

    5.1按主键范围分片rang-long

    5.1.1 修改配置文件schema.xml

    坑一:primaryKey="id" id要小写,不然后期分表失败,全部都有

    1. "1.0"?>
    2. mycat:schema SYSTEM "schema.dtd">
    3. <mycat:schema xmlns:mycat="http://io.mycat/">
    4. <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
    5. <table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true">table>
    6. schema>
    7. <dataNode name="dn1" dataHost="localhost1" database="lqz"/>
    8. <dataNode name="dn2" dataHost="localhost2" database="lqz"/>
    9. <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
    10. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    11. <heartbeat>select user()heartbeat>
    12. <writeHost host="hostM1" url="106.14.42.253:3306" user="root"
    13. password="123456">
    14. writeHost>
    15. dataHost>
    16. <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
    17. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    18. <heartbeat>select user()heartbeat>
    19. <writeHost host="hostM1" url="106.14.42.253:3307" user="root"
    20. password="123456">
    21. writeHost>
    22. dataHost>
    23. mycat:schema>

    5.1.2 修改rule.xml

    1. # ctrl +f,找到自己配置的规则,我这边是auto-sharding-long

     5.1.3 修改text

     以上配置全部完成,重启myCat,如果用的pycharm,需要把文件同步上传,接着去navicat新建数据库即可,新建的数据库名称,跟你schema.xml中database中名称一样

    5.2 一致性哈希murmur

    可避免热点问题

    热点问题:一直查询一个表

    5.2.1 修改配置文件schema.xml

    新增一段 

    1. "1.0"?>
    2. mycat:schema SYSTEM "schema.dtd">
    3. <mycat:schema xmlns:mycat="http://io.mycat/">
    4. <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
    5. <table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true">table>
    6. <table name="article" dataNode="dn1,dn2" rule="sharding-by-murmur"/>
    7. schema>
    8. <dataNode name="dn1" dataHost="localhost1" database="lqz"/>
    9. <dataNode name="dn2" dataHost="localhost2" database="lqz"/>
    10. <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
    11. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    12. <heartbeat>select user()heartbeat>
    13. <writeHost host="hostM1" url="106.14.42.253:3306" user="root"
    14. password="123456">
    15. writeHost>
    16. dataHost>
    17. <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
    18. writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    19. <heartbeat>select user()heartbeat>
    20. <writeHost host="hostM1" url="106.14.42.253:3307" user="root"
    21. password="123456">
    22. writeHost>
    23. dataHost>
    24. mycat:schema>

    配置完成重启myCat,新建表即可

    6. 新建数据库和表

    6.1 按主键范围分片rang-long新建表

    6.2 按照一致性哈希murmur新建表

     

  • 相关阅读:
    计算机结构体系:系统CPI计算例题(1.5)
    并行与分布式计算 第三章 进程级的并行:MPI编程
    电商爬虫API快速入门指南
    cout格式化输入输出
    Windows 系统服务器部署jar包时,推荐使用winsw,将jar包注册成服务,并设置开机启动。
    Windows与网络基础-28-子网划分
    【定义】三角形行列式和对角行列式
    Rocky(centos)安装nginx并设置开机自启
    imx6ull-arm开发板和电脑网线直连通信
    es笔记七之聚合操作之桶聚合和矩阵聚合
  • 原文地址:https://blog.csdn.net/qq_52385631/article/details/126413654
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号