zoukankan      html  css  js  c++  java
  • mysql集群搭建--韩国庆

    按照我给大家提供的步骤,一步一步来,你就能配好mysql集群环境

     

    什么是mycat

    简单的说,MyCAT就是:
    •一个彻底开源的,面向企业应用开发的“大数据库集群”
    •支持事务、ACID、可以替代Mysql的加强版数据库
    •一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群
    •一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
    •结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
    •一个新颖的数据库中间件产品
    
    MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题
    自动故障切换,高可用性
    
    •支持读写分离,支持Mysql双主多从,以及一主多从的模式
    •支持全局表,数据自动分片到多个节点,用于高效表关联查询
    •支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
    •多平台支持,部署和实施简单
    
     

    mycat解决的问题

        性能问题
        数据库连接过多
        E-R分片难处理
        可用性问题
        成本和伸缩性问题
    

    image_1cpe05a4k1u1t1a2p1s481vpduvg19.png-63.9kB

     

    mycat对数据库的支持

    image_1cpe06eg41hbm1aaj1aftpqb4nu1m.png-113.9kB

     

    mycat分片策略

    MyCAT支持水平分片与垂直分片:
    •水平分片:一个表格的数据分割到多个节点上,按照行分隔。
    •垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。
    

    image_1cpe08cf01vf71b2qdnk1122df723.png-106.3kB 
    MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。

    1、Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。 
    2、Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。 
    3、DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上 
    4、DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

     

    Mycat下载及安装

    官方网站http://www.mycat.org.cn/ 
    github网站https://github.com/MyCATApache

     

    mycat安装环境

    mycat是java编写的,所以必须先安装java的环境变量。在这里韩老师采用的是在生产环境linux下进行讲解mycat,那么我也会给大家提供windows下的mycat包.

     

    先安装mysql

    这如何安装linux下的mysql数据库我已经给大家提供文档了,照着韩老师文档一步步配置即可。 
    学习mycat这里我们需要安装两个数据库,所以大家要把两个mysql数据提前安装好

     

    安装mycat

    linux下mycat的tar包上传至centos7上 
    image_1cpe1jve7v6c1g891k511o2813m32g.png-56.6kB

     

    把mycat解压到/usr/local下

    tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz -C /usr/local
    

    如果这些linux命令还记不住,请放下代码,回家种地去... 
    image_1cpe1lf7aqp5na9a6n1djq1jt72t.png-82.5kB

    解压过后的文件/usr/local 
    image_1cpe1mcg5165d1vfe185i1vin11g43a.png-51.2kB

    mycat目录 
    image_1cpe1o7e1fog104j10k22d9104547.png-19.4kB

    bin目录下,这里有mycat的脚本 
    image_1cpe1p8t712uanss1ort20310ev4k.png-23.5kB

    conf目录下配置文件 
    image_1cpe1rgq4s51qm11r2ivhv1egm51.png-48.8kB
    rule.xml:这里主要配置分库分表的规则 
    schema.xml:这里主要配置逻辑的表,以及如何连接dataNode配置 
    server.xml:这里主要就是一些全局的配置了

     

    启动mycat

    在mycat/bin目录下

    ./mycat start
    
     

    分区

    分区条件:这里我们需要两个mysql数据库服务

    mysql-1数据库中  创建db1和db3两个数据库
    mysql-2数据库中  创建db
    

    image_1cpe84hcs1lte1b142me9v0p9o19.png-7.5kB

     

    分片配置

    我们要把表分配到三个节点上(数据库),这时我们配置mycat的schema.xml

    Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
    
    schema 标签用于定义MyCat实例中的逻辑库
    Table 标签定义了MyCat中的逻辑表
    dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
    dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
    

    注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。在MySQL的配置文件中my.ini [mysqld] 中增加一行(linux下叫my.cnf) 
      lower_case_table_names = 1

     

    编辑Schema.xml配置文件

    vi schema.xml
    

    image_1cpe9t10l1b5627u105387hc7i2m.png-92.4kB

     

    讲解Schema.xml信息(配置后的文件)

    如下,我们配置数据库有一个商品表(tb_item),如果有更多的表,以此在这里配置表分区操作。 

    这里需要注意:我们mysql默认是区分大小写表名的,如果不区分,我们需要在安装mysql的时候,在/etc/my.cnf这里添加不区分大小配置

    lower_case_table_names = 1  不区分大小写
    


    image_1cph29a2c13l3p6vu8f10509ge9.png-76.3kB

     

    修改server.xml

    分配mycat用户名和密码 
    image_1cph2j3fc1uq133undi1sfb159e56.png-40.8kB

     

    修改wrapper.conf

    修改mycat连接超时时间 
    image_1cph2neb61fdr1n8h1lrv1legg8n5j.png-18.2kB

    wrapper.startup.timeout=7200
    
     

    启动mycat

    ./mycat start
    

    先试用命令的方式登录mycat服务

    mysql -h127.0.0.1 -uroot -P8066 -p123456
    

    然后使用mysql客户端登录 
    image_1cph326vgggtsf7suvacmil7g.png-31.8kB

    image_1cph333ou1vvr4usfb3u001pqg7t.png-14.7kB

     

    测试,在mycat逻辑库中创建表

    create table tb_item(id int not null primary key ,username varchar(20),passwords varchar(20)); 
    image_1cph3ihk4n4f1o8b54ujee1i1f8a.png-29.3kB 
    这时,我们操作mycat数据库时,其他两个mysql数据库中就会创建出来tb_item表,这就代表已经配置mycat成功。

     

    操作mycat

    我们可以创建一个表测试
    

    老师给大家提供了创建表的sql语句和插入的sql语句。

     

    我们把数据插入到mycat逻辑库中。

    那么我们发现这些数据分到其他的物理库中 
    大家注意:mycat把数据分配至物理库是采用id字段记录数,每个物理库所分配的记录数到id等于500万,是根据id值。不是总500万条记录。当超过了总物理库所储存的id值时,则不能插入数据成功,需要我们再次横向扩容。

  • 相关阅读:
    $NOIp2018$劝退记
    Markdown 使用技巧
    【题解】 bzoj2462: [BeiJing2011]矩阵模板
    【总结】字符串hash
    【题解】 bzoj3555: [Ctsc2014]企鹅QQ (字符串Hash)
    【题解】 bzoj3916: [Baltic2014]friends (字符串Hash)
    【题解】 bzoj2982: combination (Lucas定理)
    【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)
    【题解】 bzoj3693: 圆桌会议 (线段树+霍尔定理)
    【题解】 AtCoder ARC 076 F
  • 原文地址:https://www.cnblogs.com/hanguoqing/p/10244690.html
Copyright © 2011-2022 走看看