zoukankan      html  css  js  c++  java
  • DAY 129 docker

    1 分库分表

    1 数据量到达一定程序,需要拆分
    -水平拆
       -垂直拆
    2 水平分库,垂直分库
    3 水平分表,垂直分表

    4 垂直分库:不同业务的表,放到不同库
     垂直分表:user表有10个字段1000万条数据,使用一对一做垂直分表
       
    5 水平分库:以及分成4个表,分到4个库中
     水平分表:4000w条数据,分到4个表中
       
       
    6 分库分表方案
    -hash取模和range范围方案
       -range范围分,会出现热点问题,简洁好操作,扩容不需要迁移数据
       -hash不存在热点问题,需要hash函数,操作复杂,但扩容迁移数据痛苦
       
    7 mysql:做分库分表
    -开源数据库中间件-MyCat,做分库分表
    8 Mycat:基于 Java 开发的,实现了 MySQL 公开的二进制传输协议,巧妙地将自己伪装成一个 MySQL Server,目前市面上绝大多数 MySQL 客户端工具和应用都能兼容


    9 centos上安装Mycat
    -jdk1.8以上
       
    10 centos上安装jdk 1.8
       -下载tar.gz,创建文件夹
       mkdir /usr/local/java
       -解压
       tar -zxvf jdk-8u291-linux-x64.tar.gz
       -配置环境变量
       #vim 打开profile
       vim /etc/profile
       #在最后一行输入
       export JAVA_HOME=/usr/local/java/jdk1.8.0_291
       export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
       export PATH=$PATH:${JAVA_HOME}/bin

       #使配置生效
       source /etc/profile

       #检查
       java -version
       
    11 安装Mycat
    解压即用
      ./mycat start
      ./mycat stop
      ./mycat console # 前台启动,错误会显示
       
       
    12 在两台机器上安装mysql
    docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    docker run -di --name=test2_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7


    13 Mycat的配置文件
       sever.xml:综合配置数据库的相关信息,端口,内存占用,创建账号,密码
       schema.xml:对数据库表结构的定义
       rule.xml:指定相关算法,来实现不同的分片数据库
       
       
    14 通过range范围来分表
    15 通过hash分表
    最终配置文件如下
    以后使用mysql客户端链接Mycat之间操作即可
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">

       <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
           <table name="user" primaryKey="id" dataNode="dn1,dn2" rule="auto-sharding-long" autoIncrement="true"
                  fetchStoreNodeByJdbc="true">

           </table>
           <table name="order" primaryKey="id" dataNode="dn1,dn2" rule="sharding-by-murmur" autoIncrement="true"
                  fetchStoreNodeByJdbc="true">

           </table>

       </schema>
       <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="jdbc" switchType="1" slaveThreshold="100">
           <heartbeat>select user()</heartbeat>
           <!-- can have multi write hosts -->
           <writeHost host="hostM1" url="jdbc:mysql://106.15.189.205:3306" user="root"
                      password="123456">
           </writeHost>
       </dataHost>
       <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
                 writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
           <heartbeat>select user()</heartbeat>
           <!-- can have multi write hosts -->
           <writeHost host="hostM1" url="jdbc:mysql://106.15.189.205:3307" user="root"
                      password="123456">
           </writeHost>
       </dataHost>
       
    </mycat:schema>

    autopartition-long.txt

    # range start-end ,data node index
    # K=1000,M=10000.
    0-500K=0
    500K-1000K=1

    2 远程链接Linux开发

    本质原理就是本地一份代码,远程一份代码
    本地右键执行时,使用的解释器是远程的,把结果执行完,又传递回来

     

     

  • 相关阅读:
    [Cocoa]iOS中的url编码问题
    [Cocoa]深入浅出Cocoa之消息
    [Cocoa]深入浅出iOS之生命周期
    [Cocoa]深入浅出Cocoa之Bonjour网络编程
    一分钟煮鸡蛋好吃又有营养 生活至上,美容至尚!
    教你几个清肠绝招,做个娇嫩无毒美人 生活至上,美容至尚!
    每天一杯简单排除肠道毒素 生活至上,美容至尚!
    防止电脑辐射必看 保护好你的肌肤 生活至上,美容至尚!
    美容去皱法的误区 生活至上,美容至尚!
    10分钟日本瘦腿操 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14957189.html
Copyright © 2011-2022 走看看