当前位置: 首页 > news >正文

linux中,mysql数据库分片(分库分表)

1.mysql分库分表:解决单个mysql存储上限问题1.实现方法:存储层面:利用分布式存储解决方案分库分表:拆分库和表到其它服务器2.常用设计思路:垂直分库(库里面的表分开)+水平分表(表里面的数据分开)分库:数据库分为多个,每个数据库里面都有表,数据均匀存储分库分表:在分的每库里面,进行分表,数据均匀存储到各表3.分片规则MOD_HASHUNI_HASHRIGHT_SHIFTYYYYMMWEEK...4.架构客户端分片服务器主                主从                从5.分库分表操作分类:(1)分片表,(2)ER表:针对具有关联关系的表,对于没有声明分库分表的逻辑,也会参考复杂表的分库分表逻辑(3)全局表:所有库都有表的全部数据(副本)语法:dbpartition by 规则(字段)tbpartitino by 规则(字段)mode_hash() 取余哈系分片规则tbpartitions 表分片数量dbpartitions 库分片数量broadcast:全局表6.分库分表搭建步骤1.配置主从同步2.装mycat包,以及依赖包3.配置mycat,users的用户4.配置本机datasource数据源用户,创建用户授权5.mycat中,配置datasource数据源连接其它主机,mysql的主服务器创建plj用户//添加MySQL59主机MySQL>/*+ mycat:createdatasource{"name":"dw0","url":"jdbc:mysql://192.168.88.59:3306","user":"plj","password":"123456"}*/;//添加MySQL60主机//添加MySQL61主机//添加MySQL62主机6.mycat上搭建2个主从结构的集群c0,c1(分库分表的集群名称必须定义为c0,c1...)mysql>/*! mycat:createcluster{"name":"c0","masters":["dw0"], #主服务器名"replicas":["dr0"] #从服务器名}*/;...7.分片操作(1)mycat上建立数据库,不需要配置逻辑库.mysql -h192.168.88.63 -P8066 -umycat –p654321create database tarena;(2)mycat,建表,分片create table tarena.employees(employee_id  int  primary key,name char(10),dept_id int , mail varchar(30)) dbpartition BY mod_hash(字段) tbpartition BY mod_hash(employee_id) dbpartitions 2tbpartitions 1;(3)mycat,插入数据测试mysql -h192.168.88.63 -P8066 -umycat –p654321insert into tarena.employees values (9,"jim","1","jim@163.com");insert into tarena.employees values (8,"tom","3","tom@QQ.com");insert into tarena.employees values (7,"lucy","2","lucy@QQ.com");insert into tarena.employees values (6,"john","2","john@QQ.com");

3.mysql分库分表:解决单个mysql存储上限问题

    1.实现方法:
        存储层面:利用分布式存储解决方案
        分库分表:拆分库和表到其它服务器

    2.常用设计思路:
        垂直分库(库里面的表分开)+水平分表(表里面的数据分开)

        分库:数据库分为多个,每个数据库里面都有表,数据均匀存储
        分库分表:在分的每库里面,进行分表,数据均匀存储到各表

    3.分片规则
        MOD_HASH
        UNI_HASH
        RIGHT_SHIFT
        YYYYMM
        WEEK
        ...
        
    4.架构
             客户端
            分片服务器
        主                主
        从                从

    5.分库分表操作
        分类:(1)分片表,
            (2)ER表:针对具有关联关系的表,对于没有声明分库分表的逻辑,也会参考复杂表的分库分表逻辑
            (3)全局表:所有库都有表的全部数据(副本)
        语法:
            dbpartition by 规则(字段)
            tbpartitino by 规则(字段)
    
            mode_hash() 取余哈系分片规则
                
            tbpartitions 表分片数量
            dbpartitions 库分片数量

            broadcast:全局表

    6.分库分表搭建步骤
        1.配置主从同步
        2.装mycat包,以及依赖包
        3.配置mycat,users的用户
        4.配置本机datasource数据源用户,创建用户授权
        5.mycat中,配置datasource数据源连接其它主机,mysql的主服务器创建plj用户
            //添加MySQL59主机
            MySQL>/*+ mycat:createdatasource{
            "name":"dw0",
            "url":"jdbc:mysql://192.168.88.59:3306",
            "user":"plj",
            "password":"123456"
            }*/;
            //添加MySQL60主机
            //添加MySQL61主机
            //添加MySQL62主机
        6.mycat上搭建2个主从结构的集群c0,c1(分库分表的集群名称必须定义为c0,c1...)
            mysql>/*! mycat:createcluster{
                "name":"c0",
                "masters":["dw0"], #主服务器名
                "replicas":["dr0"] #从服务器名
            }*/;
            ...
        7.分片操作
            (1)mycat上建立数据库,不需要配置逻辑库.
                mysql -h192.168.88.63 -P8066 -umycat –p654321
                create database tarena;
    
            (2)mycat,建表,分片
                create table tarena.employees(
                    employee_id  int  primary key,
                    name char(10),
                    dept_id int , 
                    mail varchar(30)
                ) 
                dbpartition BY mod_hash(字段) 
                tbpartition BY mod_hash(employee_id) 
                dbpartitions 2
                tbpartitions 1;
    
            (3)mycat,插入数据测试
                mysql -h192.168.88.63 -P8066 -umycat –p654321
                insert into tarena.employees values (9,"jim","1","jim@163.com");
                insert into tarena.employees values (8,"tom","3","tom@QQ.com");
                insert into tarena.employees values (7,"lucy","2","lucy@QQ.com");
                insert into tarena.employees values (6,"john","2","john@QQ.com");

http://www.lryc.cn/news/511182.html

相关文章:

  • springboot503基于Sringboot+Vue个人驾校预约管理系统(论文+源码)_kaic
  • Docker应用-项目部署及DockerCompose
  • 从0入门自主空中机器人-2-1【无人机硬件框架】
  • Kafka高性能设计
  • Redis字符串底层结构对数值型的支持常用数据结构和使用场景
  • uniapp 微信小程序 数据空白展示组件
  • 在vscode的ESP-IDF中使用自定义组件
  • 目标检测,语义分割标注工具--labelimg labelme
  • 发明专利与实用新型专利申请过程及自助与代办方式对比
  • Datawhale AI冬令营(第二期)动手学AI Agent task2--学Prompt工程,优化Agent效果
  • 基于python对网页进行爬虫简单教程
  • 【JavaEE进阶】@RequestMapping注解
  • 【WebAR-图像跟踪】在Unity中基于Imagine WebAR实现AR图像识别
  • 向bash shell脚本传参
  • Oracle中listagg与wm_concat函数的区别
  • 热更新与资源管理
  • Momentum Provably Improves Error Feedback!
  • Elasticsearch-脚本查询
  • 《Opencv》基础操作详解(3)
  • meshy的文本到3d的使用
  • C语言技巧之有条件的累加
  • 解释为什么fetch(JavaScript)无法将读取的数据存入外部变量
  • Windows Subsystem for Linux (WSL)
  • Go的Slice如何扩容
  • 使用云计算开发App 有哪些坑需要避免
  • ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器
  • 最新SQL Server 2022保姆级安装教程【附安装包】
  • 学习C++:运算符
  • pdf有密码,如何实现pdf转换word?
  • AI发展新态势:从技术突破到安全隐忧